diff options
Diffstat (limited to 'Completion')
-rw-r--r-- | Completion/Core/_multi_parts | 25 | ||||
-rw-r--r-- | Completion/User/_groups | 2 | ||||
-rw-r--r-- | Completion/User/_ports | 2 | ||||
-rw-r--r-- | Completion/User/_users | 5 |
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}" |