diff options
Diffstat (limited to 'Completion')
-rw-r--r-- | Completion/Core/_description | 7 | ||||
-rw-r--r-- | Completion/Core/_setup | 13 |
2 files changed, 16 insertions, 4 deletions
diff --git a/Completion/Core/_description b/Completion/Core/_description index 700f39575..b1b98741c 100644 --- a/Completion/Core/_description +++ b/Completion/Core/_description @@ -11,7 +11,10 @@ fi _lastdescr=( "$_lastdescr[@]" "$3" ) -_setup "$1" +zstyle -s ":completion:${curcontext}:$1" group-name gname && + [[ -z "$gname" ]] && gname="$1" + +_setup "$1" "${gname:--default-}" name="$2" @@ -23,8 +26,6 @@ if zstyle -s ":completion:${curcontext}:$1" hidden hidden && [[ "$hidden" = all ]] && format='' opts=(-n) fi -zstyle -s ":completion:${curcontext}:$1" group-name gname && - [[ -z "$gname" ]] && gname="$1" zstyle -s ":completion:${curcontext}:$1" matcher match && opts=($opts -M "$match") [[ -n "$_matcher" ]] && opts=($opts -M "$_matcher") diff --git a/Completion/Core/_setup b/Completion/Core/_setup index 6bc36e3ef..50e3dbfd8 100644 --- a/Completion/Core/_setup +++ b/Completion/Core/_setup @@ -2,12 +2,21 @@ local val nm="$compstate[nmatches]" +[[ $# -eq 1 ]] && 2="$1" + if zstyle -a ":completion:${curcontext}:$1" list-colors val; then zmodload -i zsh/complist if [[ "$1" = default ]]; then ZLS_COLORS="${(j.:.)${(@)val:gs/:/\\\:}}" else - eval "ZLS_COLORS=\"(${1})\${(j.:(${1}).)\${(@)val:gs/:/\\\:}}:\${ZLS_COLORS}\"" + local simple grouped + + simple=( "(${2})${(@)^val:#\(*\)*}" ) + grouped=( "${(M@)val:#\(*\)*}" ) + simple="${(j.:.)simple}:" + grouped="${(j.:.)grouped}:" + [[ "$ZLS_COLORS" != *${simple}* ]] && ZLS_COLORS="${simple}$ZLS_COLORS" + [[ "$ZLS_COLORS" != *${grouped}* ]] && ZLS_COLORS="${grouped}$ZLS_COLORS" fi # Here is the problem mentioned in _main_complete. @@ -16,6 +25,8 @@ if zstyle -a ":completion:${curcontext}:$1" list-colors val; then # zmodload -i zsh/complist # ZLS_COLORS="$ZLS_COLORS$ZLS_COLOURS" +elif [[ "$1" = default ]]; then + ZLS_COLORS= fi if zstyle -t ":completion:${curcontext}:$1" list-packed; then |