summaryrefslogtreecommitdiffstats
path: root/Completion/Commands
diff options
context:
space:
mode:
authorTanaka Akira <akr@users.sourceforge.net>2000-03-24 12:37:56 +0000
committerTanaka Akira <akr@users.sourceforge.net>2000-03-24 12:37:56 +0000
commitb0226d3cc8393bb4dd57d9e2e8f04ef885c43ab9 (patch)
tree9b9357f56affeb7e8e3c368c0396cf850ff0174b /Completion/Commands
parentzsh-workers/10230 (diff)
downloadzsh-b0226d3cc8393bb4dd57d9e2e8f04ef885c43ab9.tar
zsh-b0226d3cc8393bb4dd57d9e2e8f04ef885c43ab9.tar.gz
zsh-b0226d3cc8393bb4dd57d9e2e8f04ef885c43ab9.tar.bz2
zsh-b0226d3cc8393bb4dd57d9e2e8f04ef885c43ab9.tar.lz
zsh-b0226d3cc8393bb4dd57d9e2e8f04ef885c43ab9.tar.xz
zsh-b0226d3cc8393bb4dd57d9e2e8f04ef885c43ab9.tar.zst
zsh-b0226d3cc8393bb4dd57d9e2e8f04ef885c43ab9.zip
zsh-workers/10231
Diffstat (limited to 'Completion/Commands')
-rw-r--r--Completion/Commands/_next_tags45
1 files changed, 41 insertions, 4 deletions
diff --git a/Completion/Commands/_next_tags b/Completion/Commands/_next_tags
index 028ba4d61..6d3389ff1 100644
--- a/Completion/Commands/_next_tags
+++ b/Completion/Commands/_next_tags
@@ -46,7 +46,7 @@ _next_tags_pre() {
# Helper function for sorting tags. Most of this is copied from _tags.
_next_tags_sort() {
- local order tags tag nodef
+ local order tags tag nodef tmp tmp2
if ! zstyle -a ":completion:${curcontext}:" tag-order order; then
if (( $+_comp_default_tags )); then
@@ -69,12 +69,49 @@ _next_tags_sort() {
case $tag in
-) nodef=yes;;
*\(\)) "${${tag%%[ ]#\(\)}##[ ]#}" "$@";;
- \!*) comptry "${(@)argv:#(${(j:|:)~${=tag[2,-1]}})}";;
- ?*) comptry ${=tag};;
+ \!*) comptry "${(@)argv:#(${(j:|:)~${=~tag[2,-1]}})}";;
+ ?*) tmp=( ${${(s: :)${tag//\\\\ /$'\0'}}//$'\0'/ } ) tmp2=() tmp3=()
+ for tag in "$tmp[@]"; do
+ if [[ "$tag" = *:* ]]; then
+ tmp2=( "$tmp2[@]" "${(@M)^argv:#${~tag%%:*}}:${tag#*:}" )
+ else
+ for atag in "${(@M)argv:#${~tag}}"; do
+ if zstyle -a ":completion:${curcontext}:${atag}" tag-aliases als; then
+ tmp3=( "$tmp3[@]" "$als[@]" )
+ tmp=( "${(@)tmp:#${atag}}" )
+ else
+ tmp2=( "$tmp2[@]" "$atag" )
+ fi
+ done
+ fi
+ done
+
+ comptry "${(@)tmp2:#(${(j:|:)~${(q)tmp%%:*}})}" "$tmp3[@]" "$tmp[@]"
+ ;;
esac
done
- [[ -z "$nodef" ]] && comptry "$@"
+ if [[ -z "$nodef" ]]; then
+ if (( $+_comp_default_tags )); then
+ for tag in "$_comp_default_tags[@]"; do
+ if zstyle -a ":completion:${curcontext}:${tag}" tag-aliases als; then
+ comptry "$als[@]"
+ else
+ comptry "$tag"
+ fi
+ done
+ else
+ tmp2=()
+ for tag; do
+ if zstyle -a ":completion:${curcontext}:${tag}" tag-aliases als; then
+ tmp2=( "$tmp2[@]" "$als[@]" )
+ else
+ tmp2=( "$tmp2[@]" "$tag" )
+ fi
+ done
+ comptry "$tmp2[@]"
+ fi
+ fi
}
[[ -o kshautoload ]] || _next_tags "$@"