summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSven Wischnowsky <wischnow@users.sourceforge.net>2001-04-02 11:14:40 +0000
committerSven Wischnowsky <wischnow@users.sourceforge.net>2001-04-02 11:14:40 +0000
commitf5ff83fe0b9eba9bfe5a7465c592b12f035691cc (patch)
tree42f0ae6133a34c9200c31b87d5e7bc7d29b0e132
parent167034c1ec7887462cf81863bf81d435667d34ce (diff)
downloadzsh-f5ff83fe0b9eba9bfe5a7465c592b12f035691cc.tar.gz
zsh-f5ff83fe0b9eba9bfe5a7465c592b12f035691cc.zip
moved from Completion/Commands/_complete_help
-rw-r--r--Completion/Base/Widget/_complete_help92
1 files changed, 92 insertions, 0 deletions
diff --git a/Completion/Base/Widget/_complete_help b/Completion/Base/Widget/_complete_help
new file mode 100644
index 000000000..bfbfa3222
--- /dev/null
+++ b/Completion/Base/Widget/_complete_help
@@ -0,0 +1,92 @@
+#compdef -k complete-word \C-xh
+
+_complete_help() {
+ setopt localoptions ${_comp_options[@]}
+
+ exec </dev/null # ZLE closes stdin, which can cause errors
+
+ 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)]}:#_(wanted|requested|all_labels|next_label)}% *}"
+
+ [[ -z "$_f" ]] && _f="${${(@)funcstack[2,(i)_(main_complete|complete|approximate|normal)]}:#_(wanted|requested|all_labels|next_label)}"
+
+ if [[ "$help_sfuncs[$2]" != *${_f}* ||
+ "$help_styles[${2}${_f}]" != *${3}* ]]; then
+ [[ "$help_sfuncs[$2]" != *${_f}* ]] &&
+ help_sfuncs[$2]="${help_sfuncs[$2]}:${_f}"
+ local _t
+
+ case "$1" in
+ -s) _t='[string] ';;
+ -a) _t='[array] ';;
+ -h) _t='[assoc] ';;
+ *) _t='[boolean]';;
+ esac
+ help_styles[${2}${_f}]="${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
+ }
+
+ _main_complete
+
+ unfunction compadd zstyle
+
+ for i in "${(@ok)help_funcs}"; do
+ text="${text}
+tags in context :completion:${i}:"
+ tmp=()
+ for j in "${(@s.:.)help_funcs[$i][2,-1]}"; do
+ tmp=( "$tmp[@]" "${(@s.,.)help_tags[${i}${j}][2,-1]}" )
+ done
+ zformat -a tmp ' (' "$tmp[@]"
+ tmp=( '
+ '${^tmp}')' )
+ text="${text}${tmp}"
+ done
+
+ if [[ ${NUMERIC:-1} -ne 1 ]]; then
+ text="$text
+"
+ for i in "${(@ok)help_sfuncs}"; do
+ text="${text}
+styles in context ${i}"
+ tmp=()
+ for j in "${(@s.:.)help_sfuncs[$i][2,-1]}"; do
+ tmp=( "$tmp[@]" "${(@s.,.)help_styles[${i}${j}][2,-1]}" )
+ done
+ zformat -a tmp ' (' "$tmp[@]"
+ tmp=( '
+ '${^tmp}')' )
+ text="${text}${tmp}"
+ done
+ fi
+ compstate[list]='list force'
+ compstate[insert]=''
+
+ compadd -UX "$text[2,-1]" -n ''
+}
+
+_help_sort_tags() {
+ local f="${${(@)${(@)funcstack[3,(i)_(main_complete|complete|approximate|normal)]}:#_(wanted|requested|all_labels|next_label)}% *}"
+
+ if [[ "$help_funcs[$curcontext]" != *${f}* ||
+ "$help_tags[${curcontext}${f}]" != *(${(j:|:)~argv})* ]]; then
+ [[ "$help_funcs[$curcontext]" != *${f}* ]] &&
+ help_funcs[$curcontext]="${help_funcs[$curcontext]}:${f}"
+ help_tags[${curcontext}${f}]="${help_tags[${curcontext}${f}]},${argv}:${f}"
+ comptry "$@"
+ fi
+}
+
+_complete_help "$@"