From 97f02ffe63909c84cb9771d20a73ebec55f49589 Mon Sep 17 00:00:00 2001 From: Tanaka Akira Date: Wed, 3 Nov 1999 13:47:39 +0000 Subject: zsh-workers/8520 --- Completion/Core/compinit | 76 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) (limited to 'Completion/Core/compinit') diff --git a/Completion/Core/compinit b/Completion/Core/compinit index 3569014c6..3d316fac8 100644 --- a/Completion/Core/compinit +++ b/Completion/Core/compinit @@ -108,6 +108,14 @@ fi compconfig[correct_prompt]='correct to:' (( ${+compconfig[completer]} )) || compconfig[completer]=_complete +# This holds the tag/priority definitions. + +typeset -gA comptags + +(( ${+comptags[any]} )) || comptags[any]='*=100' + +typeset -gA override_tags + # This can hold names of functions that are to be called after all # matches have been generated. @@ -370,6 +378,74 @@ compconf() { fi } +# Function to set tags and priorities. + +comptag() { + local i opt list tag val + + while getopts "lL" opt; do + if [[ "$opt" = l ]]; then + [[ -z "$list" ]] && list=yes + else + list=long + fi + done + shift OPTIND-1 + + if (( $# )); then + if [[ -n $list ]]; then + for i; do + if [[ $list = long ]]; then + (( ${+comptags[$i]} )) && print "comptag $i='$comptags[$i]'" + else + print $comptags[$i] + fi + done + else + for i; do + tag="${i%%([-+]|)\=*}" + val="${${i#*(|[-+])\=}#+}" + case "$i" in + *+\=*) + if [[ -n "$comptags[$tag]" ]]; then + comptags[$tag]="${val}:${comptags[$tag]}" + else + comptags[$tag]="$val" + fi + ;; + *\=+*) + if [[ -n "$comptags[$tag]" ]]; then + comptags[$tag]="${comptags[$tag]}:${val}" + else + comptags[$tag]="$val" + fi + ;; + *-\=*) + if [[ -n "$comptags[$tag]" ]]; then + comptags[$tag]="${${${comptags[$tag]//:${val}\=[^:]##}#${val}\=*:}%:${val}\=[^:]##}" + [[ "$comptags[$tag]" = ${val}\=* ]] && unset "comptags[$tag]" + fi + ;; + *\=*) + comptags[${i%%\=*}]="${i#*\=}" + ;; + *) + unset "compconfig[$i]" + ;; + esac + done + fi + else + for i in ${(ok)comptags}; do + if [[ $list = long ]]; then + print "comptag $i='$comptags[$i]'" + else + print ${(r:25:)i} "$comptags[$i]" + fi + done + fi +} + # Utility function to call a function if it exists. # # Usage: funcall [ ... ] -- cgit 1.4.1