summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Completion/Base/_combination94
1 files changed, 0 insertions, 94 deletions
diff --git a/Completion/Base/_combination b/Completion/Base/_combination
deleted file mode 100644
index dcb3269cd..000000000
--- a/Completion/Base/_combination
+++ /dev/null
@@ -1,94 +0,0 @@
-#autoload
-
-# Usage:
-# _combination [-s S] TAG STYLE \
-# Ki1[:Ni1]=Pi1 Ki2[:Ni2]=Pi2 ... Kim[:Nim]=Pim Kj[:Nj] EXPL...
-#
-# STYLE should be of the form K1-K2-...-Kn.
-#
-# Example: telnet
-#
-# Assume an user sets the style `users-hosts-ports' as for the my-accounts
-# tag:
-#
-# zstyle ':completion:*:*:telnet:*:my-accounts' users-hosts-ports \
-# @host0: user1@host1: user2@host2:
-# @mail-server:{smtp,pop3}
-# @news-server:nntp
-# @proxy-server:8000
-#
-#
-# `_telnet' completes hosts as:
-#
-# _combination my-accounts users-hosts-ports \
-# ${opt_args[-l]:+users=${opt_args[-l]:q}} \
-# hosts "$expl[@]"
-#
-# This completes `host1', `host2', `mail-server', `news-server' and
-# `proxy-server' according to the user given with `-l' if it is exists.
-# And if it is failed, `_hosts' is called.
-#
-# `_telnet' completes ports as:
-#
-# _combination my-accounts users-hosts-ports \
-# ${opt_args[-l]:+users=${opt_args[-l]:q}} \
-# hosts="${line[2]:q}" \
-# ports "$expl[@]"
-#
-# This completes `smtp', `pop3', `nntp' and `8000' according to the
-# host argument --- $line[2] and the user option argument if it is
-# exists. And if it is failed, `_ports' is called.
-#
-# `_telnet' completes users for an argument of option `-l' as:
-#
-# _combination my-accounts users-hosts-ports \
-# ${line[2]:+hosts="${line[2]:q}"} \
-# ${line[3]:+ports="${line[3]:q}"} \
-# users "$expl[@]"
-#
-# This completes `user1' and `user2' according to the host argument and
-# the port argument if they are exist. And if it is failed, `_users' is
-# called.
-
-local sep tag style keys pats key num tmp
-
-if [[ "$1" = -s ]]; then
- sep="$2"
- shift 2
-elif [[ "$1" = -s* ]]; then
- sep="${1[3,-1]}"
- shift
-else
- sep=:
-fi
-
-tag="$1"
-style="$2"
-shift 2
-
-keys=( ${(s/-/)style} )
-pats=( "${(@)keys/*/*}" )
-
-while [[ "$1" = *=* ]]; do
- tmp="${1%%\=*}"
- key="${tmp%:*}"
- num="${${tmp##*:}:-1}"
- pats[$keys[(in:num:)$key]]="${1#*\=}"
- shift
-done
-
-key="${1%:*}"
-num="${${1##*:}:-1}"
-shift
-
-if zstyle -a ":completion:${curcontext}:$tag" "$style" tmp; then
- eval "tmp=( \"\${(@M)tmp:#\${(j($sep))~pats}}\" )"
- if (( keys[(in:num:)$key] != 1 )); then
- eval "tmp=( \${tmp#\${(j(${sep}))~\${(@)\${(@)keys[2,(rn:num:)\$key]}/*/*}}${~sep}} )"
- fi
- tmp=( ${tmp%%${~sep}*} )
-
- compadd "$@" -a tmp || { (( $+functions[_$key] )) && "_$key" "$@" }
-else
- (( $+functions[_$key] )) && "_$key" "$@"
-fi