* PATCH: error handling in _complete_help
@ 2013-04-07 19:28 Bart Schaefer
0 siblings, 0 replies; only message in thread
From: Bart Schaefer @ 2013-04-07 19:28 UTC (permalink / raw)
To: zsh-workers
Something I had sitting around that seemed like a good test for "git push".
This uses an "always" block instead of "trap" to clean up various function
overrides in _complete_help, because some errors would cause _complete_help
to exit without running the traps, leaving completion broken. Most of the
change is indentation.
diff --git a/Completion/Base/Widget/_complete_help b/Completion/Base/Widget/_complete_help
index 99f2f2d..949a496 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}:"
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2013-04-07 19:28 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-04-07 19:28 PATCH: error handling in _complete_help Bart Schaefer
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/zsh/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).