about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog10
-rw-r--r--Completion/Base/Widget/_complete_help68
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}:"