mirror of
git://git.code.sf.net/p/zsh/code
synced 2024-11-19 21:44:11 +01:00
0911160d07
special contexts from _complete's to #compdef's description
50 lines
1.6 KiB
Plaintext
50 lines
1.6 KiB
Plaintext
#compdef -value- -array-value- -value-,-default-,-default-
|
|
|
|
# You can customize completion for different parameters by writing
|
|
# functions with the tag-line `#compdef -value-,<name>,<command>' where
|
|
# <name> is the name of the parameter (or name-key when completing an
|
|
# associative array value) and <command> is either `-default-' or the
|
|
# name of the command from the command-line.
|
|
|
|
if [[ "$service" != -value-,* ]]; then
|
|
local strs ctx=
|
|
|
|
strs=( -default- )
|
|
|
|
if [[ "$compstate[context]" != *value && -n "$_comp_command1" ]]; then
|
|
ctx="${_comp_command}"
|
|
strs=( "${_comp_command1}" "$strs[@]" )
|
|
[[ -n "$_comp_command2" ]] &&
|
|
strs=( "${_comp_command2}" "$strs[@]" )
|
|
fi
|
|
|
|
_dispatch -value-,${compstate[parameter]},$ctx \
|
|
-value-,{${compstate[parameter]},-default-},${^strs}
|
|
else
|
|
if [[ "$compstate[parameter]" != *-* &&
|
|
"$compstate[context]" = *value &&
|
|
"${(Pt)${compstate[parameter]}}" = assoc* ]]; then
|
|
if (( CURRENT & 1 )); then
|
|
_wanted association-keys expl 'association key' \
|
|
compadd -k "$compstate[parameter]"
|
|
else
|
|
compstate[parameter]="${compstate[parameter]}-${words[CURRENT-1]}"
|
|
|
|
_dispatch -value-,${compstate[parameter]}, \
|
|
-value-,{${compstate[parameter]},-default-},-default-
|
|
fi
|
|
else
|
|
local pats
|
|
|
|
if { zstyle -a ":completion:${curcontext}:" assign-list pats &&
|
|
[[ "$compstate[parameter]" = (${(j:|:)~pats}) ]] } ||
|
|
[[ "$PREFIX$SUFFIX" = *:* ]]; then
|
|
compset -P '*:'
|
|
compset -S ':*'
|
|
_default -r '\-\n\t /:' "$@"
|
|
else
|
|
_default "$@"
|
|
fi
|
|
fi
|
|
fi
|