diff options
Diffstat (limited to 'Completion/Base')
-rw-r--r-- | Completion/Base/_arguments | 22 | ||||
-rw-r--r-- | Completion/Base/_brace_parameter | 2 | ||||
-rw-r--r-- | Completion/Base/_condition | 4 | ||||
-rw-r--r-- | Completion/Base/_default | 2 | ||||
-rw-r--r-- | Completion/Base/_describe | 47 | ||||
-rw-r--r-- | Completion/Base/_first | 2 | ||||
-rw-r--r-- | Completion/Base/_jobs | 14 | ||||
-rw-r--r-- | Completion/Base/_math | 2 | ||||
-rw-r--r-- | Completion/Base/_parameter | 2 | ||||
-rw-r--r-- | Completion/Base/_subscript | 26 | ||||
-rw-r--r-- | Completion/Base/_tilde | 9 | ||||
-rw-r--r-- | Completion/Base/_values | 11 |
12 files changed, 77 insertions, 66 deletions
diff --git a/Completion/Base/_arguments b/Completion/Base/_arguments index 472f085d5..9a133617c 100644 --- a/Completion/Base/_arguments +++ b/Completion/Base/_arguments @@ -4,7 +4,7 @@ # descriptions given as arguments to this function. local long cmd="$words[1]" descr mesg subopts opt usecc autod -local oldcontext="$curcontext" +local oldcontext="$curcontext" hasopts long=$argv[(I)--] if (( long )); then @@ -230,35 +230,39 @@ if (( $# )) && comparguments -i "$autod" "$@"; then # Anything inside `(...)' is added directly. - compadd "$subopts[@]" "$expl[@]" - ${=action[2,-2]} + _loop arguments expl "$descr" \ + compadd "$subopts[@]" - ${=action[2,-2]} elif [[ "$action" = \{*\} ]]; then # A string in braces is evaluated. - eval "$action[2,-2]" + _loop arguments expl "$descr" eval "$action[2,-2]" elif [[ "$action" = \ * ]]; then # If the action starts with a space, we just call it. eval "action=( $action )" - "$action[@]" + _loop arguments expl "$descr" "$action[@]" else - # Otherwise we call it with the description-arguments built above. + # Otherwise we call it with the description-arguments. eval "action=( $action )" - "$action[1]" "$subopts[@]" "$expl[@]" "${(@)action[2,-1]}" + _loop arguments expl "$descr" \ + "$action[1]" "$subopts[@]" "${(@)action[2,-1]}" fi fi fi - if [[ -z "$matched" ]] && _requested options && + if [[ -z "$matched$hasopts" ]] && _requested options && { ! zstyle -T ":completion:${curcontext}:options" prefix-needed || - [[ "$origpre" = [-+]* || - ( -z "$aret$mesg" && nm -eq compstate[nmatches] ) ]] } ; then + [[ "$origpre" = [-+]* || + ( -z "$aret$mesg" && nm -eq compstate[nmatches] ) ]] } ; then local prevpre="$PREFIX" previpre="$IPREFIX" + hasopts=yes + PREFIX="$origpre" IPREFIX="$origipre" diff --git a/Completion/Base/_brace_parameter b/Completion/Base/_brace_parameter index a6892d944..819ee24be 100644 --- a/Completion/Base/_brace_parameter +++ b/Completion/Base/_brace_parameter @@ -1,3 +1,3 @@ #compdef -brace-parameter- -_tags parameters && _parameters -e +_wanted parameters && _parameters -e diff --git a/Completion/Base/_condition b/Completion/Base/_condition index b6a4eff7a..7ddfd9783 100644 --- a/Completion/Base/_condition +++ b/Completion/Base/_condition @@ -3,9 +3,9 @@ local prev="$words[CURRENT-1]" ret=1 if [[ "$prev" = -o ]]; then - _tags -C -o options && _options + _wanted -C -o options && _options elif [[ "$prev" = -([a-hkprsuwxLOGSN]|[no]t|ef) ]]; then - _tags -C "$prev" files && _files + _wanted -C "$prev" files && _files else if [[ "$PREFIX" = -* ]] || ! zstyle -T ":completion:${curcontext}:options" prefix-needed; then diff --git a/Completion/Base/_default b/Completion/Base/_default index b84cbff6a..a237ae47d 100644 --- a/Completion/Base/_default +++ b/Completion/Base/_default @@ -12,7 +12,7 @@ if { zstyle -s ':completion:${curcontext}:' use-compctl ctl || compcall "$opt[@]" || return 0 fi -_tags files || return 1 +_wanted files || return 1 _files && return 0 diff --git a/Completion/Base/_describe b/Completion/Base/_describe index 986d27c4e..95016fcd1 100644 --- a/Completion/Base/_describe +++ b/Completion/Base/_describe @@ -3,7 +3,7 @@ # This can be used to add options or values with descriptions as matches. local _opt _expl _tmps _tmpd _tmpmd _tmpms _ret=1 _showd _nm _hide _args -local _type=values +local _type=values _descr # Get the option. @@ -14,37 +14,40 @@ fi # Do the tests. `showd' is set if the descriptions should be shown. -_tags "$_type" || return 1 +_wanted "$_type" || return 1 zstyle -T ":completion:${curcontext}:$_type" verbose && _showd=yes -_description "$_type" _expl "$1" +_descr="$1" shift -if [[ -n "$_showd" ]]; then - compdescribe -I ' -- ' "$@" -else - compdescribe -i "$@" -fi - [[ "$_type" = options ]] && zstyle -t ":completion:${curcontext}:options" prefix-hidden && _hide=yes -while compdescribe -g _args _tmpd _tmpmd _tmps _tmpms; do +while _try "$_type" _expl "$_descr"; do + + if [[ -n "$_showd" ]]; then + compdescribe -I ' -- ' "$@" + else + compdescribe -i "$@" + fi + + while compdescribe -g _args _tmpd _tmpmd _tmps _tmpms; do - # See if we should remove the option prefix characters. + # See if we should remove the option prefix characters. - if [[ -n "$_hide" ]]; then - if [[ "$PREFIX" = --* ]]; then - _tmpd=( "${(@)_tmpd#--}" ) - _tmps=( "${(@)_tmps#--}" ) - elif [[ "$PREFIX" = [-+]* ]]; then - _tmpd=( "${(@)_tmpd#[-+]}" ) - _tmps=( "${(@)_tmps#[-+]}" ) + if [[ -n "$_hide" ]]; then + if [[ "$PREFIX" = --* ]]; then + _tmpd=( "${(@)_tmpd#--}" ) + _tmps=( "${(@)_tmps#--}" ) + elif [[ "$PREFIX" = [-+]* ]]; then + _tmpd=( "${(@)_tmpd#[-+]}" ) + _tmps=( "${(@)_tmps#[-+]}" ) + fi fi - fi - compadd "$_args[@]" "$_expl[@]" -ld _tmpd - "$_tmpmd[@]" && _ret=0 - compadd "$_args[@]" "$_expl[@]" -d _tmps - "$_tmpms[@]" && _ret=0 -done + compadd "$_args[@]" "$_expl[@]" -ld _tmpd - "$_tmpmd[@]" && _ret=0 + compadd "$_args[@]" "$_expl[@]" -d _tmps - "$_tmpms[@]" && _ret=0 + done +done return _ret diff --git a/Completion/Base/_first b/Completion/Base/_first index 566cfc785..386f67fa0 100644 --- a/Completion/Base/_first +++ b/Completion/Base/_first @@ -34,7 +34,7 @@ # completion of words from the history by adding two commas at the end # and hitting TAB. # -# if [[ "$PREFIX" = *,, ]] && _tags history-words; then +# if [[ "$PREFIX" = *,, ]] && _wanted history-words; then # local max i=1 expl # # PREFIX="$PREFIX[1,-2]" diff --git a/Completion/Base/_jobs b/Completion/Base/_jobs index 6c4154d6f..52674497e 100644 --- a/Completion/Base/_jobs +++ b/Completion/Base/_jobs @@ -1,8 +1,8 @@ #autoload -local expl disp jobs job jids pfx='%' desc how +local expl disp jobs job jids pfx='%' desc how expls -_tags jobs || return 1 +_wanted jobs || return 1 if [[ "$1" = -t ]]; then zstyle -T ":completion:${curcontext}:jobs" prefix-needed && @@ -15,15 +15,15 @@ zstyle -T ":completion:${curcontext}:jobs" verbose && desc=yes if [[ "$1" = -r ]]; then jids=( "${(@k)jobstates[(R)running*]}" ) shift - _description jobs expl 'running job' + expls='running job' elif [[ "$1" = -s ]]; then jids=( "${(@k)jobstates[(R)running*]}" ) shift - _description jobs expl 'suspended job' + expls='suspended job' else [[ "$1" = - ]] && shift jids=( "${(@k)jobtexts}" ) - _description jobs expl job + expls=job fi if [[ -n "$desc" ]]; then @@ -79,7 +79,7 @@ else fi if [[ -n "$desc" ]]; then - compadd "$@" "$expl[@]" -ld disp - "%$^jobs[@]" + _loop jobs expl "$expls" compadd "$@" -ld disp - "%$^jobs[@]" else - compadd "$@" "$expl[@]" - "%$^jobs[@]" + _loop jobs expl "$expls" compadd "$@" - "%$^jobs[@]" fi diff --git a/Completion/Base/_math b/Completion/Base/_math index 821121c33..b9743d6b4 100644 --- a/Completion/Base/_math +++ b/Completion/Base/_math @@ -9,4 +9,4 @@ if [[ "$SUFFIX" = *[^a-zA-Z0-9_]* ]]; then SUFFIX="${SUFFIX%%[^a-zA-Z0-9_]*}" fi -_tags parameters && _parameters +_parameters diff --git a/Completion/Base/_parameter b/Completion/Base/_parameter index 7a761dea9..7e7788535 100644 --- a/Completion/Base/_parameter +++ b/Completion/Base/_parameter @@ -1,3 +1,3 @@ #compdef -parameter- -_tags parameters && _parameters -e +_parameters -e diff --git a/Completion/Base/_subscript b/Completion/Base/_subscript index c0c0b790d..aa31bd297 100644 --- a/Completion/Base/_subscript +++ b/Completion/Base/_subscript @@ -3,23 +3,23 @@ local expl if [[ "$PREFIX" = :* ]]; then - _wanted characters expl 'character class' && - compadd "$expl[@]" -p: -S ':]' alnum alpha blank cntrl digit graph \ - lower print punct space upper xdigit + _wanted characters expl 'character class' \ + compadd -p: -S ':]' alnum alpha blank cntrl digit graph \ + lower print punct space upper xdigit elif [[ ${(Pt)${compstate[parameter]}} = assoc* ]]; then - _wanted association-keys expl 'association key' && - if [[ "$RBUFFER" = \]* ]]; then - compadd "$expl[@]" -S '' - "${(@kP)${compstate[parameter]}}" - else - compadd "$expl[@]" -S ']' - "${(@kP)${compstate[parameter]}}" - fi + local suf + + [[ "$RBUFFER" != \]* ]] && suf=']' + + _wanted association-keys expl 'association key' \ + compadd -S "$suf" - "${(@kP)${compstate[parameter]}}" elif [[ ${(Pt)${compstate[parameter]}} = array* ]]; then local list i j ret=1 disp _tags indexes parameters while _tags; do - if _requested -V indexes expl 'array index'; then + if _requested indexes; then ind=( {1..${#${(P)${compstate[parameter]}}}} ) if zstyle -T ":completion:${curcontext}:indexes" verbose; then list=() @@ -38,9 +38,11 @@ elif [[ ${(Pt)${compstate[parameter]}} = array* ]]; then fi if [[ "$RBUFFER" = \]* ]]; then - compadd "$expl[@]" -S '' "$disp[@]" - "$ind[@]" && ret=0 + _loop -V indexes expl 'array index' \ + compadd -S '' "$disp[@]" - "$ind[@]" && ret=0 else - compadd "$expl[@]" -S ']' "$disp[@]" - "$ind[@]" && ret=0 + _loop -V indexes expl 'array index' \ + compadd -S ']' "$disp[@]" - "$ind[@]" && ret=0 fi fi _requested parameters && _parameters && ret=0 diff --git a/Completion/Base/_tilde b/Completion/Base/_tilde index 98e9d2c00..2edc2ca24 100644 --- a/Completion/Base/_tilde +++ b/Completion/Base/_tilde @@ -18,10 +18,10 @@ _tags users named-directories directory-stack while _tags; do _requested users && _users "$suf[@]" "$@" && ret=0 - _requested named-directories expl 'named directory' && - compadd "$suf[@]" "$expl[@]" "$@" - "${(@k)nameddirs}" + _requested named-directories expl 'named directory' \ + compadd "$suf[@]" "$@" - "${(@k)nameddirs}" - if _requested -V directory-stack expl 'directory stack' && + if _requested directory-stack && { ! zstyle -T ":completion:${curcontext}:directory-stack" prefix-needed || [[ "$PREFIX" = [-+]* || nm -eq compstate[nmatches] ]] }; then if zstyle -T ":completion:${curcontext}:directory-stack" verbose; then @@ -46,7 +46,8 @@ while _tags; do list=( ${PREFIX[1]}{0..${#dirstack}} ) disp=() fi - compadd "$expl[@]" "$suf[@]" "$disp[@]" -Q - "$list[@]" && ret=0 + _loop -V directory-stack expl 'directory stack' \ + compadd "$suf[@]" "$disp[@]" -Q - "$list[@]" && ret=0 fi (( ret )) || return 0 done diff --git a/Completion/Base/_values b/Completion/Base/_values index e8004ba6f..754147e05 100644 --- a/Completion/Base/_values +++ b/Completion/Base/_values @@ -18,7 +18,7 @@ if compvalues -i "$@"; then if ! compvalues -D descr action; then - _tags values || return 1 + _wanted values || return 1 curcontext="${oldcontext%:*}:values" @@ -119,25 +119,26 @@ if compvalues -i "$@"; then # Anything inside `(...)' is added directly. - compadd "$subopts[@]" "$expl[@]" - ${=action[2,-2]} + _loop arguments expl "$descr" compadd "$subopts[@]" - ${=action[2,-2]} elif [[ "$action" = \{*\} ]]; then # A string in braces is evaluated. - eval "$action[2,-2]" + _loop arguments expl "$descr" eval "$action[2,-2]" elif [[ "$action" = \ * ]]; then # If the action starts with a space, we just call it. eval "action=( $action )" - "$action[@]" + _loop arguments expl "$descr" "$action[@]" else # Otherwise we call it with the description-arguments built above. eval "action=( $action )" - "$action[1]" "$subopts[@]" "$expl[@]" "${(@)action[2,-1]}" + _loop arguments expl "$descr" \ + "$action[1]" "$subopts[@]" "${(@)action[2,-1]}" fi fi |