about summary refs log tree commit diff
diff options
context:
space:
mode:
authorTanaka Akira <akr@users.sourceforge.net>2000-02-17 12:42:57 +0000
committerTanaka Akira <akr@users.sourceforge.net>2000-02-17 12:42:57 +0000
commit8ac5e93d9ec9f3363465d44f89a035d1f9948d08 (patch)
tree38cd28b4a0c258e531202f140489fc97327d0831
parent0e3f4cecde90d9c07bfae1a9d522b285bcc8d6a3 (diff)
downloadzsh-8ac5e93d9ec9f3363465d44f89a035d1f9948d08.tar.gz
zsh-8ac5e93d9ec9f3363465d44f89a035d1f9948d08.tar.xz
zsh-8ac5e93d9ec9f3363465d44f89a035d1f9948d08.zip
zsh-workers/9773
-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
-rw-r--r--Doc/Zsh/compsys.yo9
5 files changed, 14 insertions, 29 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}"
diff --git a/Doc/Zsh/compsys.yo b/Doc/Zsh/compsys.yo
index 1ba3d1dad..0d84044c4 100644
--- a/Doc/Zsh/compsys.yo
+++ b/Doc/Zsh/compsys.yo
@@ -773,10 +773,11 @@ completed. If this is not set by the user domain names mentioned in
 tt(/etc/resolv.conf) will be used.
 )
 item(tt(expand))(
-Like tt(cursor), this style is used with the tt(paths) tag. If its
-value contains the string tt(prefix), the partially typed path from
-the line will be expanded as far as possible even if trailing pathname
-components can not be completed. If it contains the string tt(suffix)
+This style is used when completing strings consisting of multiple
+parts, such as path names. If its
+value contains the string tt(prefix), the partially typed word from
+the line will be expanded as far as possible even if trailing parts
+can not be completed. If it contains the string tt(suffix)
 and normal (non-menu-) completion is used, matching names for
 components after the first ambiguous one will be added, too. This
 means that the resulting string is the longest unambiguous string