From 5c7d92bd9c811404abe9784bdc18d129e5fbbdeb Mon Sep 17 00:00:00 2001 From: Daniel Shahaf Date: Wed, 20 Jul 2016 06:54:21 +0000 Subject: 38890: _add-zle-hook-widget: New completion. --- Completion/Zsh/Function/_add-zle-hook-widget | 36 ++++++++++++++++++++++++++++ Completion/Zsh/Function/_add-zsh-hook | 5 ++-- 2 files changed, 38 insertions(+), 3 deletions(-) create mode 100644 Completion/Zsh/Function/_add-zle-hook-widget (limited to 'Completion/Zsh/Function') 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]' \ -- cgit 1.4.1