diff options
author | Sven Wischnowsky <wischnow@users.sourceforge.net> | 2002-03-13 09:28:04 +0000 |
---|---|---|
committer | Sven Wischnowsky <wischnow@users.sourceforge.net> | 2002-03-13 09:28:04 +0000 |
commit | 45f9a36216637075172d0bdf7ad8e18fad34c42e (patch) | |
tree | 8505f11011505b00e8cef1142b11c2b2e94e17e9 /Completion/Zsh/Command | |
parent | 799b34d817a77244e9e371f6d5f1b01aa171214c (diff) | |
download | zsh-45f9a36216637075172d0bdf7ad8e18fad34c42e.tar.gz zsh-45f9a36216637075172d0bdf7ad8e18fad34c42e.tar.xz zsh-45f9a36216637075172d0bdf7ad8e18fad34c42e.zip |
remove that -T option to compdef again and instead use comma-separated sub-contexts both for function and style lookup (16819)
Diffstat (limited to 'Completion/Zsh/Command')
-rw-r--r-- | Completion/Zsh/Command/_compdef | 54 |
1 files changed, 38 insertions, 16 deletions
diff --git a/Completion/Zsh/Command/_compdef b/Completion/Zsh/Command/_compdef index db4309642..48daa9e53 100644 --- a/Completion/Zsh/Command/_compdef +++ b/Completion/Zsh/Command/_compdef @@ -1,24 +1,37 @@ #compdef compdef -local state line expl list disp curcontext="$curcontext" +local state line expl list disp curcontext="$curcontext" pat normal ret=1 +local args1 args2 typeset -A opt_args -_arguments -C -s -A "-*" -S \ - '(-d)-a[make function autoloadable]' \ - '(-d -p -P)-n[leave existing definitions intact]' \ - "*-T[select type of completion function]:completion function type:($_comp_assocs)" \ +args2=() +if (( ! ${words[2,-1][(I)[^-]*]} || ${words[(I)-[kK]]} )); then + args1=( + -A '-*' + '(-d)-a[make function autoloadable]' + '(-d)-n[leave existing definitions intact]' + ) + args2=( + - d + '(-a -n)-d[delete]:*:completed command:->ccom' + - k + '-k[define widget and key binding]:completion function:->cfun:style:->style:*:key' + - K + '-K[define multiple widgets based on function]:*::: :->multi' + ) +else + args1=( + '-N[completion for named command]' + ) +fi + +_arguments -C -s -S \ + "$args1[@]" \ + '-p[completion for command matching pattern]' \ + '-P[completion for command matching pattern]' \ ':completion function:->cfun' \ - '*:commands: _command_names' \ - - d \ - '(-a -n)-d[delete]:*:completed command:->ccom' \ - - p \ - '(-n)-p[completion for command matching pattern]:completion function:->cfun:pattern' \ - - P \ - '(-n)-P[as -p for commands without own completion]:completion function:->cfun:pattern' \ - - k \ - '-k[define widget and key binding]:completion function:->cfun:style:->style:*:key' \ - - K \ - '-K[define multiple widgets based on function]:*::: :->multi' && return 0 + '*:commands:->com' \ + "$args2[@]" && return 0 if [[ $state = multi ]]; then case $(( CURRENT % 3 )) in @@ -30,6 +43,15 @@ if [[ $state = multi ]]; then fi case $state in + com) + pat="${words[(I)-[pP]]}" + normal="${words[(I)-N]}" + if (( pat && pat > normal )); then + _message -e patterns 'pattern' + else + _command_names + fi + ;; ccom) _wanted commands expl 'completed command' compadd -k _comps ;; |