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 ++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 Completion/Zsh/Function/_add-zle-hook-widget (limited to 'Completion/Zsh/Function/_add-zle-hook-widget') 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 "$@" -- cgit 1.4.1