diff options
author | Tanaka Akira <akr@users.sourceforge.net> | 1999-09-13 09:49:29 +0000 |
---|---|---|
committer | Tanaka Akira <akr@users.sourceforge.net> | 1999-09-13 09:49:29 +0000 |
commit | 829fcac25f0b8d42ca162be3bd21c81124a57a4d (patch) | |
tree | d2fc9d0c382157d5edd158211c2bd3c670d4a043 /Completion/Commands | |
parent | 297b0b9aad573d5f34a05e51ede833185d68f804 (diff) | |
download | zsh-829fcac25f0b8d42ca162be3bd21c81124a57a4d.tar.gz zsh-829fcac25f0b8d42ca162be3bd21c81124a57a4d.tar.xz zsh-829fcac25f0b8d42ca162be3bd21c81124a57a4d.zip |
Initial revision
Diffstat (limited to 'Completion/Commands')
-rw-r--r-- | Completion/Commands/_verbose_list | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/Completion/Commands/_verbose_list b/Completion/Commands/_verbose_list new file mode 100644 index 000000000..b3d762ecc --- /dev/null +++ b/Completion/Commands/_verbose_list @@ -0,0 +1,75 @@ +#compdef -k delete-char-or-list \C-xv + +# You probably want to bind this to Control-D. + +local odf="$compconfig[description_format]" +local omf="$compconfig[message_format]" +local ogm="$compconfig[group_matches]" +local oop="$compconfig[option_prefix]" +local odo="$compconfig[describe_options]" +local odv="$compconfig[describe_values]" +local what nm + +(( $# )) || set -- ${(s.:.)compconfig[verboselist_stages]} + +if [[ "$BUFFER" != "$_vl_buffer" || "$*" != "$_vl_config" ]]; then + _vl_buffer="$BUFFER" + _vl_config="$*" + _vl_array=( "$@" ) + _vl_index=1 + if (( ! $#_vl_array )); then + [[ -n "$compconfig[option_prefix]" ]] && _vl_array=(options) + [[ -z "$compconfig[describe_options]" || + -z "$compconfig[describe_options]" ]] && + _vl_array=( "$_vl_array[@]" options-describe ) + + _vl_array=( "$_vl_array[@]" normal ) + fi + if [[ -z "$compstate[old_list]" ]]; then + if (( $_vl_array[(I)normal] )); then + _vl_index="$_vl_array[(I)normal]" + else + _vl_array=( normal "$_vl_array[@]" ) + fi + fi +fi + +# If we had a possibility to say `ignore all matches added up to now', +# we could de-comment these thigs and wouldn't have the problem that +# if the options were already the stage `options' is a somewhat +# irritating no-op. +# Or maybe we make the completion functions report if they added +# options/description one day. + +# while true; do + what="$_vl_array[_vl_index++]" + [[ _vl_index -gt $#_vl_array ]] && _vl_index=1 + + if [[ "$what" != normal ]]; then + [[ -z "$odf" ]] && compconfig[description_format]='---- %d' + [[ -z "$omf" ]] && compconfig[message_format]='---- %d' + [[ -z "$ogm" ]] && compconfig[group_matches]=yes + [[ "$what" = *options* ]] && compconfig[option_prefix]='' + if [[ "$what" = *describe* ]]; then + compconfig[describe_options]=yes + compconfig[describe_values]=yes + fi + fi + + if [[ -n "$compstate[old_list]" ]]; then + nm="$_lastcomp[nmatches]" + else + nm=-1 + fi + + _main_complete + +# [[ "$what" != options || compstate[nmatches] -ne nm ]] && break +# done + +compconfig[description_format]="$odf" +compconfig[message_format]="$omf" +compconfig[group_matches]="$ogm" +compconfig[option_prefix]="$oop" +compconfig[describe_options]="$odo" +compconfig[describe_values]="$odv" |