From 4285f0578af1958f5a8fc63254ae508bab9468e0 Mon Sep 17 00:00:00 2001 From: Sven Wischnowsky Date: Mon, 2 Apr 2001 11:04:49 +0000 Subject: moved from Completion/Core/_tags --- Completion/Base/Core/_tags | 66 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 Completion/Base/Core/_tags (limited to 'Completion/Base/Core') diff --git a/Completion/Base/Core/_tags b/Completion/Base/Core/_tags new file mode 100644 index 000000000..0af8d74d2 --- /dev/null +++ b/Completion/Base/Core/_tags @@ -0,0 +1,66 @@ +#autoload + +local prev + +# A `--' as the first argument says that we should tell comptags to use +# the preceding function nesting level. This is only documented here because +# if everythings goes well, users won't have to worry about it and should +# not mess with it. + +if [[ "$1" = -- ]]; then + prev=- + shift +fi + +if (( $# )); then + + # We have arguments: the tags supported in this context. + + local curcontext="$curcontext" order tag nodef tmp + + if [[ "$1" = -C?* ]]; then + curcontext="${curcontext%:*}:${1[3,-1]}" + shift + elif [[ "$1" = -C ]]; then + curcontext="${curcontext%:*}:${2}" + shift 2 + fi + + [[ "$1" = -(|-) ]] && shift + + zstyle -a ":completion:${curcontext}:" group-order order && + compgroups "$order[@]" + + # Set and remember offered tags. + + comptags "-i$prev" "$curcontext" "$@" + + # Sort the tags. + + if [[ -n "$_sort_tags" ]]; then + "$_sort_tags" "$@" + else + zstyle -a ":completion:${curcontext}:" tag-order order || + order=('(|*-)argument-* (|*-)option-* values' options) + + for tag in $order; do + case $tag in + -) nodef=yes;; + \!*) comptry "${(@)argv:#(${(j:|:)~${=~tag[2,-1]}})}";; + ?*) comptry -m "$tag";; + esac + done + + [[ -z "$nodef" ]] && comptry "$@" + fi + + # Return non-zero if at least one set of tags should be used. + + comptags "-T$prev" + + return +fi + +# The other mode: switch to the next set of tags. + +comptags "-N$prev" -- cgit 1.4.1