diff options
Diffstat (limited to 'Completion')
-rw-r--r-- | Completion/Commands/_complete_help | 35 | ||||
-rw-r--r-- | Completion/Core/_wanted | 21 |
2 files changed, 56 insertions, 0 deletions
diff --git a/Completion/Commands/_complete_help b/Completion/Commands/_complete_help new file mode 100644 index 000000000..cfefdcf90 --- /dev/null +++ b/Completion/Commands/_complete_help @@ -0,0 +1,35 @@ +#compdef -k complete-word \C-xh + +_complete_help() { + local _sort_tags=_help_sort_tags text i + typeset -A help_tags + typeset -U help_contexts + + help_contexts=() + + compadd() { return 1 } + + _main_complete + + unfunction compadd + + for i in "$help_contexts[@]"; do + text="${text} +tags in context \`${i}': ${help_tags[$i]}" + done + + compstate[list]=list + compstate[force_list]=yes + compstate[insert]='' + + compadd -UX "$text[2,-1]" -n '' +} + +_help_sort_tags() { + help_contexts=( "$help_contexts[@]" "$curcontext" ) + help_tags[$curcontext]="${help_tags[$curcontext]} + ${argv}" + comptry "$@" +} + +_complete_help "$@" diff --git a/Completion/Core/_wanted b/Completion/Core/_wanted new file mode 100644 index 000000000..7baa3e724 --- /dev/null +++ b/Completion/Core/_wanted @@ -0,0 +1,21 @@ +#autoload + +local targs + +if [[ "$1" = -C?* ]]; then + targs=( -C "${1[3,-1]}" ) + shift +elif [[ "$1" = -C ]]; then + targs=( -C "$2" ) + shift 2 +else + targs=() +fi + +[[ "$1" = -(|-) ]] && shift + +if [[ $# -gt 1 ]]; then + _tags "$targs[@]" "$1" && _description "${(@)argv[2,-1]}" +else + _tags "$targs[@]" "$1" +fi |