diff options
author | Tanaka Akira <akr@users.sourceforge.net> | 1999-08-19 11:18:05 +0000 |
---|---|---|
committer | Tanaka Akira <akr@users.sourceforge.net> | 1999-08-19 11:18:05 +0000 |
commit | 9867c4091e71e6ed69889a9bfaee07275d2fa04e (patch) | |
tree | 37318116ff90f7b90df7cb9e894790d96be0849b /Completion/Core/_normal | |
parent | 04979daf4f9b9645f22df1dfbb5974ab82294868 (diff) | |
download | zsh-9867c4091e71e6ed69889a9bfaee07275d2fa04e.tar.gz zsh-9867c4091e71e6ed69889a9bfaee07275d2fa04e.tar.xz zsh-9867c4091e71e6ed69889a9bfaee07275d2fa04e.zip |
manual/7448
Diffstat (limited to 'Completion/Core/_normal')
-rw-r--r-- | Completion/Core/_normal | 41 |
1 files changed, 32 insertions, 9 deletions
diff --git a/Completion/Core/_normal b/Completion/Core/_normal index d4e948e41..ffacc8f04 100644 --- a/Completion/Core/_normal +++ b/Completion/Core/_normal @@ -29,13 +29,15 @@ fi # See if there are any matching pattern completions. -if [[ "$_compskip" != *patterns* ]]; then +if [[ "$_compskip" != (all|*patterns*) ]]; then for i in "$_patcomps[@]"; do pat="${i% *}" val="${i#* }" if [[ "$cmd1" == $~pat || "$cmd2" == $~pat ]]; then "$val" && ret=0 - if [[ "$_compskip" = *patterns* || "$_compskip" = all ]]; then + if [[ "$_compskip" = *patterns* ]]; then + break + elif [[ "$_compskip" = all ]]; then unset _compskip return ret fi @@ -55,15 +57,36 @@ fi # And generate the matches, probably using default completion. -if [[ -z "$comp" ]]; then - if [[ "$_compskip" = *default* ]]; then - unset _compskip - return 1 +if [[ -n "$comp" ]]; then + _compskip=patterns + "$comp" && ret=0 + [[ "$_compskip" = (all|*patterns*) ]] && return ret +else + if [[ "$_compskip" != *default* ]]; then + name=-default- + comp="$_comps[-default-]" fi - name=-default- - comp="$_comps[-default-]" fi -[[ -z "$comp" ]] || "$comp" && ret=0 + +if [[ "$_compskip" != (all|*patterns*) ]]; then + for i in "$_postpatcomps[@]"; do + pat="${i% *}" + val="${i#* }" + if [[ "$cmd1" == $~pat || "$cmd2" == $~pat ]]; then + _compskip=default + "$val" && ret=0 + if [[ "$_compskip" = *patterns* ]]; then + break + elif [[ "$_compskip" = all ]]; then + unset _compskip + return ret + fi + fi + done +fi + +[[ "$name" = -default- && -n "$comp" && "$_compskip" != (all|*default*) ]] && + "$comp" && ret=0 unset _compskip |