diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | Completion/Zsh/Function/_add-zle-hook-widget | 36 | ||||
-rw-r--r-- | Completion/Zsh/Function/_add-zsh-hook | 5 |
3 files changed, 44 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog index e37cb392f..f7ca7697c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2016-07-22 Daniel Shahaf <d.s@daniel.shahaf.name> + + * 38890: Completion/Zsh/Function/_add-zle-hook-widget, + Completion/Zsh/Function/_add-zsh-hook: _add-zle-hook-widget: + New completion. + 2016-07-21 Oliver Kiddle <opk@zsh.org> * 38904: Completion/Base/Core/_normal, diff --git a/Completion/Zsh/Function/_add-zle-hook-widget b/Completion/Zsh/Function/_add-zle-hook-widget new file mode 100644 index 000000000..da65dd6e9 --- /dev/null +++ b/Completion/Zsh/Function/_add-zle-hook-widget @@ -0,0 +1,36 @@ +#compdef add-zle-hook-widget + +_add-zle-hook-widget_types() { + local -a tmp + + autoload -U add-zle-hook-widget + add-zle-hook-widget -h > /dev/null # sets the zstyle + zstyle -g tmp zle-hook types + + compadd "$@" -M 'L:|=zle-' -M 'r:|-=* r:|=*' -- zle-${^tmp} +} + +_add-zle-hook-widget_widgets() { + if (( $+opt_args[-d] )); then + local -a tmp + zstyle -g tmp $line[1] widgets + _wanted widgets expl "installed hook" compadd -- ${tmp#<->:} && return 0 + else + local -a user_widgets=( ${(k)widgets[(R)user:*]} ) + _wanted widgets expl widget compadd -M 'r:|-=* r:|=*' -a user_widgets && return 0 + fi + return 1 +} + +_add-zle-hook-widget() { + local context state state_descr line + typeset -A opt_args + _arguments -s -w -S : \ + '(-D)-d[remove HOOK from the array]' \ + '(-d)-D[interpret HOOK as pattern to remove from the array]' \ + {-U,-z,-k}"[passed to 'autoload']" \ + ':hook type:_add-zle-hook-widget_types' \ + ':widget:_add-zle-hook-widget_widgets' +} + +_add-zle-hook-widget "$@" diff --git a/Completion/Zsh/Function/_add-zsh-hook b/Completion/Zsh/Function/_add-zsh-hook index c70a4976f..fb5403a60 100644 --- a/Completion/Zsh/Function/_add-zsh-hook +++ b/Completion/Zsh/Function/_add-zsh-hook @@ -1,8 +1,5 @@ #compdef add-zsh-hook -local context state state_descr line -typeset -A opt_args - _add-zsh-hook_hooks() { if (( $+opt_args[-d] )); then _wanted functions expl "installed hooks" compadd -a - "$line[1]_functions" && return 0 @@ -13,6 +10,8 @@ _add-zsh-hook_hooks() { } _add-zsh-hook() { + local context state state_descr line + typeset -A opt_args _arguments -s -w -S : \ '(-D)-d[remove HOOK from the array]' \ '(-d)-D[interpret HOOK as pattern to remove from the array]' \ |