summaryrefslogtreecommitdiffstats
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
parentmanual/9815 (diff)
downloadzsh-09ef7f9740e72fd2b62459d88aad8960fe6e296f.tar
zsh-09ef7f9740e72fd2b62459d88aad8960fe6e296f.tar.gz
zsh-09ef7f9740e72fd2b62459d88aad8960fe6e296f.tar.bz2
zsh-09ef7f9740e72fd2b62459d88aad8960fe6e296f.tar.lz
zsh-09ef7f9740e72fd2b62459d88aad8960fe6e296f.tar.xz
zsh-09ef7f9740e72fd2b62459d88aad8960fe6e296f.tar.zst
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