about summary refs log tree commit diff
path: root/Completion/Base
diff options
context:
space:
mode:
authorPeter Stephenson <pws@users.sourceforge.net>2010-12-06 17:23:04 +0000
committerPeter Stephenson <pws@users.sourceforge.net>2010-12-06 17:23:04 +0000
commit8d00aca697066a70c38aa04eba19726cd8b2f3a7 (patch)
treee9e40bb6eb491f68f3e9d887c9d6dbfa968f3338 /Completion/Base
parent32ce1cdd7978155a49c9bd85faaf3895068edebe (diff)
downloadzsh-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/_dispatch5
-rw-r--r--Completion/Base/Utility/_pick_variant2
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#*=}" )