diff options
author | Peter Stephenson <pws@users.sourceforge.net> | 2010-12-06 17:23:04 +0000 |
---|---|---|
committer | Peter Stephenson <pws@users.sourceforge.net> | 2010-12-06 17:23:04 +0000 |
commit | 8d00aca697066a70c38aa04eba19726cd8b2f3a7 (patch) | |
tree | e9e40bb6eb491f68f3e9d887c9d6dbfa968f3338 /Completion/Base | |
parent | 32ce1cdd7978155a49c9bd85faaf3895068edebe (diff) | |
download | zsh-8d00aca697066a70c38aa04eba19726cd8b2f3a7.tar.gz zsh-8d00aca697066a70c38aa04eba19726cd8b2f3a7.tar.xz zsh-8d00aca697066a70c38aa04eba19726cd8b2f3a7.zip |
users/15621: compdef -p/-P <pat>=<service>
users/15622: use service with _pick_variant
Diffstat (limited to 'Completion/Base')
-rw-r--r-- | Completion/Base/Core/_dispatch | 5 | ||||
-rw-r--r-- | Completion/Base/Utility/_pick_variant | 2 |
2 files changed, 6 insertions, 1 deletions
diff --git a/Completion/Base/Core/_dispatch b/Completion/Base/Core/_dispatch index 87c81f899..3f6fe5b97 100644 --- a/Completion/Base/Core/_dispatch +++ b/Completion/Base/Core/_dispatch @@ -2,6 +2,7 @@ local comp pat val name i ret=1 _compskip="$_compskip" local curcontext="$curcontext" service str noskip +local -a match mbegin mend # If we get the option `-s', we don't reset `_compskip'. @@ -24,6 +25,10 @@ if [[ "$_compskip" != (all|*patterns*) ]]; then [[ -n "$str" ]] || continue service="${_services[$str]:-$str}" for i in "${(@)_patcomps[(K)$str]}"; do + if [[ $i = (#b)"="([^=]#)"="(*) ]]; then + service=$match[1] + i=$match[2] + fi eval "$i" && ret=0 if [[ "$_compskip" = *patterns* ]]; then break diff --git a/Completion/Base/Utility/_pick_variant b/Completion/Base/Utility/_pick_variant index 01fa2b98f..3bf848271 100644 --- a/Completion/Base/Utility/_pick_variant +++ b/Completion/Base/Utility/_pick_variant @@ -7,7 +7,7 @@ local -A opts (( $+_cmd_variant )) || typeset -gA _cmd_variant zparseopts -D -A opts c: r: -: ${opts[-c]:=$words[1]} +: ${opts[-c]:=${service:-$words[1]}} while [[ $1 = *=* ]]; do var+=( "${1%%\=*}" "${1#*=}" ) |