about summary refs log tree commit diff
path: root/Completion
diff options
context:
space:
mode:
Diffstat (limited to 'Completion')
-rw-r--r--Completion/Core/_multi_parts25
-rw-r--r--Completion/User/_groups2
-rw-r--r--Completion/User/_ports2
-rw-r--r--Completion/User/_users5
4 files changed, 9 insertions, 25 deletions
diff --git a/Completion/Core/_multi_parts b/Completion/Core/_multi_parts
index 4a9b4192c..aa7a0507b 100644
--- a/Completion/Core/_multi_parts
+++ b/Completion/Core/_multi_parts
@@ -109,7 +109,8 @@ while true; do
 	PREFIX="${cpre}${pre}"
 	SUFFIX="$suf"
 
-	if [[ $#imm -ne 0 && $#matches -eq 1 ]]; then
+	if [[ $#imm -ne 0 && $#matches -eq 1 ]] ||
+           zstyle -t ":completion:${curcontext}:" expand suffix; then
 	  compadd "$group[@]" "$expl[@]" "$opts[@]" \
                   -M "r:|${sep}=* r:|=* $match" - "$pref$matches[1]"
         else
@@ -142,7 +143,8 @@ while true; do
 	SUFFIX="$suf"
       fi
 
-      if [[ -n "$menu" || -z "$compstate[insert]" ]]; then
+      if ! zstyle -t ":completion:${curcontext}:" expand suffix ||
+         [[ -n "$menu" || -z "$compstate[insert]" ]]; then
 
         # With menucompletion we add only the ambiguous component with
         # the prefix collected and a spearator for the matches that
@@ -164,22 +166,6 @@ while true; do
                     -M "r:|${sep}=* r:|=* $match" - "$i"
           fi
         done
-
-# The old code and its comment:
-
-        # With menucompletion we just add matches for the matching
-        # components with the prefix we collected and the rest from the
-        # line as a suffix.
-
-#        tmp2="$pre$suf"
-#        if [[ "$tmp2" = *${sep}* ]]; then
-#          compadd "$group[@]" "$expl[@]" "$sopts[@]" \
-#                  -p "$pref" -s "${sep}${tmp2#*${sep}}" \
-#                  -M "r:|${sep}=* r:|=* $match" - "$tmp1[@]"
-#        else
-#          compadd "$group[@]" "$expl[@]" -p "$pref" "$sopts[@]" \
-#                  -M "r:|${sep}=* r:|=* $match" - "$tmp1[@]"
-#        fi
       else
         # With normal completion we add all matches one-by-one with
 	# the unmatched part as a suffix. This will insert the longest
@@ -202,7 +188,8 @@ while true; do
       # case we insert the expanded prefix we collected if it differs
       # from the original string from the line.
 
-      [[ "$orig" = "$pref$pre$suf" ]] && return 1
+      { ! zstyle -t ":completion:${curcontext}:" expand prefix ||
+        [[ "$orig" = "$pref$pre$suf" ]] } && return 1
 
       PREFIX="${cpre}${pre}"
       SUFFIX="$suf"
diff --git a/Completion/User/_groups b/Completion/User/_groups
index 051bb829a..74efe179b 100644
--- a/Completion/User/_groups
+++ b/Completion/User/_groups
@@ -4,7 +4,7 @@ local expl groups
 
 _wanted groups expl group || return 1
 
-if ! zstyle -a ":completion:${curcontext}:groups" groups groups; then
+if ! zstyle -a ":completion:${curcontext}:" groups groups; then
   (( $+_cache_groups )) ||
       if (( ${+commands[ypcat]} )); then
         : ${(A)_cache_groups:=${${(s: :)$(ypcat group.byname)}%%:*}} # If you use YP
diff --git a/Completion/User/_ports b/Completion/User/_ports
index 8cf90a913..6780067b3 100644
--- a/Completion/User/_ports
+++ b/Completion/User/_ports
@@ -2,7 +2,7 @@
 
 local expl ports
 
-if ! zstyle -a ":completion:${curcontext}:ports" ports ports; then
+if ! zstyle -a ":completion:${curcontext}:" ports ports; then
   (( $+_cache_ports )) ||
       : ${(A)_cache_ports:=${${(M)${${(f)"$(</etc/services)"}:#\#*}#*/tcp}%%[ 	]*}}
 
diff --git a/Completion/User/_users b/Completion/User/_users
index 1df724208..da5539556 100644
--- a/Completion/User/_users
+++ b/Completion/User/_users
@@ -1,13 +1,10 @@
 #compdef last passwd groups
 
-# If a parameter `users' exists and it is an array, we first try to
-# complete only to its elements.
-
 local expl users
 
 _wanted users expl user || return 1
 
-zstyle -a ":completion:${curcontext}:users" users users &&
+zstyle -a ":completion:${curcontext}:" users users &&
     compadd "$expl[@]" "$@" - "$users[@]" && return 0
 
 compadd "$@" "$expl[@]" - "${(@k)userdirs}"