diff options
-rw-r--r-- | ChangeLog | 10 | ||||
-rw-r--r-- | Completion/Base/Widget/_complete_help | 68 |
2 files changed, 39 insertions, 39 deletions
diff --git a/ChangeLog b/ChangeLog index 4bc3bc4ae..19f158314 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2013-04-07 Bart Schaefer <schaefer@zsh.org> + + * 31234: Completion/Base/Widget/_complete_help: use an "always" + block instead of "trap" to clean up various function overrides + 2013-04-05 Frank Terbeck <ft@bewatermyfriend.org> * 31174: Src/Zle/zle_main.c: 31174: zle: Make sure state changes @@ -664,8 +669,3 @@ 2012-07-21 Peter Stephenson <p.w.stephenson@ntlworld.com> * unposted: update for 5.0.0 release. - -***************************************************** -* This is used by the shell to define $ZSH_PATCHLEVEL -* $Revision: 1.5828 $ -***************************************************** diff --git a/Completion/Base/Widget/_complete_help b/Completion/Base/Widget/_complete_help index 99f2f2dba..949a49625 100644 --- a/Completion/Base/Widget/_complete_help +++ b/Completion/Base/Widget/_complete_help @@ -6,41 +6,41 @@ _complete_help() { local _sort_tags=_help_sort_tags text i j k tmp typeset -A help_funcs help_tags help_sfuncs help_styles - compadd() { return 1 } - zstyle() { - local _f="${${(@)${(@)funcstack[2,(i)_(main_complete|complete|approximate|normal)]}:#_(dispatch|wanted|requested|all_labels|next_label)}% *}" - - [[ -z "$_f" ]] && _f="${${(@)funcstack[2,(i)_(main_complete|complete|approximate|normal)]}:#_(dispatch|wanted|requested|all_labels|next_label)}" - - if [[ "$help_sfuncs[$2]" != *${_f}* || - "$help_styles[${2}${_f}]" != *${3}* ]]; then - - [[ "$help_sfuncs[$2]" != *${_f}* ]] && help_sfuncs[$2]+=$'\0'"${_f}" - local _t - - case "$1" in - -s) _t='[string] ';; - -a) _t='[array] ';; - -h) _t='[assoc] ';; - *) _t='[boolean]';; - esac - help_styles[${2}${_f}]+=",${_t} ${3}:${_f}" - fi - - # No need to call the completers more than once with different match specs. - - if [[ "$3" = matcher-list ]]; then - set -A "$4" '' - else - builtin zstyle "$@" - fi + { + compadd() { return 1 } + zstyle() { + local _f="${${(@)${(@)funcstack[2,(i)_(main_complete|complete|approximate|normal)]}:#_(dispatch|wanted|requested|all_labels|next_label)}% *}" + + [[ -z "$_f" ]] && _f="${${(@)funcstack[2,(i)_(main_complete|complete|approximate|normal)]}:#_(dispatch|wanted|requested|all_labels|next_label)}" + + if [[ "$help_sfuncs[$2]" != *${_f}* || + "$help_styles[${2}${_f}]" != *${3}* ]]; then + + [[ "$help_sfuncs[$2]" != *${_f}* ]] && help_sfuncs[$2]+=$'\0'"${_f}" + local _t + + case "$1" in + -s) _t='[string] ';; + -a) _t='[array] ';; + -h) _t='[assoc] ';; + *) _t='[boolean]';; + esac + help_styles[${2}${_f}]+=",${_t} ${3}:${_f}" + fi + + # No need to call the completers more than once with different match specs. + + if [[ "$3" = matcher-list ]]; then + set -A "$4" '' + else + builtin zstyle "$@" + fi + } + + ${1:-_main_complete} + } always { + unfunction compadd zstyle } - trap 'unfunction compadd zstyle' EXIT INT - - ${1:-_main_complete} - - unfunction compadd zstyle - trap - EXIT INT for i in "${(@ok)help_funcs}"; do text+=$'\n'"tags in context :completion:${i}:" |