diff options
-rw-r--r-- | Completion/Base/Core/_description | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/Completion/Base/Core/_description b/Completion/Base/Core/_description new file mode 100644 index 000000000..2c4232ade --- /dev/null +++ b/Completion/Base/Core/_description @@ -0,0 +1,70 @@ +#autoload + +local name gropt=-J format gname hidden hide match opts + +opts=() + +if [[ "$1" = -([12]|)[VJ] ]]; then + gropt="$1" + shift +fi + +_lastdescr=( "$_lastdescr[@]" "$3" ) + +zstyle -s ":completion:${curcontext}:$1" group-name gname && + [[ -z "$gname" ]] && gname="$1" + +_setup "$1" "${gname:--default-}" + +name="$2" + +zstyle -s ":completion:${curcontext}:$1" format format || + zstyle -s ":completion:${curcontext}:descriptions" format format + +if zstyle -s ":completion:${curcontext}:$1" hidden hidden && + [[ "$hidden" = (all|yes|true|1|on) ]]; then + [[ "$hidden" = all ]] && format='' + opts=(-n) +fi +zstyle -s ":completion:${curcontext}:$1" matcher match && + opts=($opts -M "$match") +[[ -n "$_matcher" ]] && opts=($opts -M "$_matcher") + +if [[ -z "$_comp_no_ignore" ]]; then + zstyle -a ":completion:${curcontext}:$1" ignored-patterns _comp_ignore || + _comp_ignore=() + + zstyle -s ":completion:${curcontext}:$1" ignore-line hidden && + case "$hidden" in + true|yes|on|1) _comp_ignore=( "$_comp_ignore[@]" "$words[@]" );; + current) _comp_ignore=( "$_comp_ignore[@]" "$words[CURRENT]" );; + current-shown) [[ "$compstate[old_list]" = *shown* ]] && + _comp_ignore=( "$_comp_ignore[@]" "$words[CURRENT]" );; + other) _comp_ignore=( "$_comp_ignore[@]" + "${(@)words[1,CURRENT-1]}" + "${(@)words[CURRENT+1,-1]}" );; + esac + + (( $#_comp_ignore )) && opts=( $opts -F _comp_ignore ) +else + _comp_ignore=() +fi + +shift 2 +[[ -n "$format" ]] && zformat -f format "$format" "d:$1" "${(@)argv[2,-1]}" + +if [[ -n "$gname" ]]; then + if [[ -n "$format" ]]; then + set -A "$name" "$opts[@]" "$gropt" "$gname" -X "$format" + else + set -A "$name" "$opts[@]" "$gropt" "$gname" + fi +else + if [[ -n "$format" ]]; then + set -A "$name" "$opts[@]" "$gropt" -default- -X "$format" + else + set -A "$name" "$opts[@]" "$gropt" -default- + fi +fi + +return 0 |