about summary refs log tree commit diff
path: root/Completion/Core
diff options
context:
space:
mode:
authorTanaka Akira <akr@users.sourceforge.net>2000-02-21 12:34:57 +0000
committerTanaka Akira <akr@users.sourceforge.net>2000-02-21 12:34:57 +0000
commit09ef7f9740e72fd2b62459d88aad8960fe6e296f (patch)
tree457b87fb98a747129ba7fc03bda1b0ff1ec2bebf /Completion/Core
parent3b517729cafde567f12b51dadaf5cb58910bc0de (diff)
downloadzsh-09ef7f9740e72fd2b62459d88aad8960fe6e296f.tar.gz
zsh-09ef7f9740e72fd2b62459d88aad8960fe6e296f.tar.xz
zsh-09ef7f9740e72fd2b62459d88aad8960fe6e296f.zip
zsh-workers/9816
Diffstat (limited to 'Completion/Core')
-rw-r--r--Completion/Core/_multi_parts17
1 files changed, 14 insertions, 3 deletions
diff --git a/Completion/Core/_multi_parts b/Completion/Core/_multi_parts
index 92da26f9a..1d3841f86 100644
--- a/Completion/Core/_multi_parts
+++ b/Completion/Core/_multi_parts
@@ -83,7 +83,7 @@ while true; do
   if [[ -n "$PREFIX$SUFFIX" || "$pre" = ${sep}* ]]; then
     tmp1=( "${(@M)matches:#${PREFIX}${SUFFIX}${sep}*}" )
   else
-    tmp1=
+    tmp1=()
   fi
 
   if (( $#tmp1 )); then
@@ -233,10 +233,21 @@ while true; do
     PREFIX="${opre}${osuf}"
     SUFFIX=""
 
-    [[ -n "$pref" && "$orig" != "$pref" ]] &&
+    if [[ -n "$pref" && "$orig" != "$pref" ]]; then
+      if [[ "$pref" = *${sep} ]]; then
+        compadd "$group[@]" "$expl[@]" "$opts[@]" \
+                -p "${pref%${sep}*${sep}}${sep}" -S "$sep" \
+                -M "r:|${sep}=* r:|=* $match" - "${${pref%${sep}}##*${sep}}"
+
+      elif [[ "$pref" = *${sep}* ]]; then
+        compadd "$group[@]" "$expl[@]" -S '' "$opts[@]" \
+                -p "${pref%${sep}*}${sep}" \
+                -M "r:|${sep}=* r:|=* $match" - "${pref##*${sep}}"
+      else
         compadd "$group[@]" "$expl[@]" -S '' "$opts[@]" \
                 -M "r:|${sep}=* r:|=* $match" - "$pref"
-
+      fi
+    fi
     return
   fi
 done