diff options
Diffstat (limited to 'Completion')
-rw-r--r-- | Completion/Base/Utility/_complete_help_generic | 17 | ||||
-rw-r--r-- | Completion/Base/Widget/_complete_debug | 2 | ||||
-rw-r--r-- | Completion/Base/Widget/_complete_help | 2 | ||||
-rw-r--r-- | Completion/Base/Widget/_generic | 7 |
4 files changed, 26 insertions, 2 deletions
diff --git a/Completion/Base/Utility/_complete_help_generic b/Completion/Base/Utility/_complete_help_generic new file mode 100644 index 000000000..7aaa1a8df --- /dev/null +++ b/Completion/Base/Utility/_complete_help_generic @@ -0,0 +1,17 @@ +#autoload + +# Note this is a normal ZLE widget, not a completion widget. +# A completion widget can't call another widget, while a normal +# widget can. + +[[ $WIDGET = *noread* ]] || local ZSH_TRACE_GENERIC_WIDGET + +if [[ $WIDGET = *debug* ]]; then + ZSH_TRACE_GENERIC_WIDGET=_complete_debug +else + ZSH_TRACE_GENERIC_WIDGET=_complete_help +fi + +if [[ $WIDGET != *noread* ]]; then + zle read-command && zle $REPLY -w +fi diff --git a/Completion/Base/Widget/_complete_debug b/Completion/Base/Widget/_complete_debug index 43cea5b11..39350b5c5 100644 --- a/Completion/Base/Widget/_complete_debug +++ b/Completion/Base/Widget/_complete_debug @@ -11,7 +11,7 @@ exec 3>&- # Too bad if somebody else is using it ... setopt xtrace : $ZSH_NAME $ZSH_VERSION -_main_complete +${1:-_main_complete} integer ret=$? unsetopt xtrace diff --git a/Completion/Base/Widget/_complete_help b/Completion/Base/Widget/_complete_help index 5cf4c5f0d..99f2f2dba 100644 --- a/Completion/Base/Widget/_complete_help +++ b/Completion/Base/Widget/_complete_help @@ -37,7 +37,7 @@ _complete_help() { } trap 'unfunction compadd zstyle' EXIT INT - _main_complete + ${1:-_main_complete} unfunction compadd zstyle trap - EXIT INT diff --git a/Completion/Base/Widget/_generic b/Completion/Base/Widget/_generic index 9a5e726df..0a18b5680 100644 --- a/Completion/Base/Widget/_generic +++ b/Completion/Base/Widget/_generic @@ -1,5 +1,12 @@ #autoload +if [[ -n $ZSH_TRACE_GENERIC_WIDGET ]]; then + local widget=$ZSH_TRACE_GENERIC_WIDGET + unset ZSH_TRACE_GENERIC_WIDGET + $widget _generic + return +fi + local curcontext="${curcontext:-}" if [[ -z "$curcontext" ]]; then |