summaryrefslogtreecommitdiffstats
path: root/Completion
diff options
context:
space:
mode:
authorTanaka Akira <akr@users.sourceforge.net>2000-02-25 14:41:48 +0000
committerTanaka Akira <akr@users.sourceforge.net>2000-02-25 14:41:48 +0000
commited8b5c01b0622a95134155b85832b49bda241986 (patch)
treead166f5d2aefa10f0a7d96087370a05762012c14 /Completion
parentzsh-workers/9870 (diff)
downloadzsh-ed8b5c01b0622a95134155b85832b49bda241986.tar
zsh-ed8b5c01b0622a95134155b85832b49bda241986.tar.gz
zsh-ed8b5c01b0622a95134155b85832b49bda241986.tar.bz2
zsh-ed8b5c01b0622a95134155b85832b49bda241986.tar.lz
zsh-ed8b5c01b0622a95134155b85832b49bda241986.tar.xz
zsh-ed8b5c01b0622a95134155b85832b49bda241986.tar.zst
zsh-ed8b5c01b0622a95134155b85832b49bda241986.zip
zsh-workers/9876
Diffstat (limited to 'Completion')
-rw-r--r--Completion/Base/_combination7
-rw-r--r--Completion/User/_rlogin8
-rw-r--r--Completion/User/_ssh6
-rw-r--r--Completion/User/_user_at_host4
4 files changed, 14 insertions, 11 deletions
diff --git a/Completion/Base/_combination b/Completion/Base/_combination
index 875d3c2cb..6b9607a27 100644
--- a/Completion/Base/_combination
+++ b/Completion/Base/_combination
@@ -55,6 +55,9 @@ 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
@@ -81,9 +84,9 @@ 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} )"
+ eval "tmp=( \${tmp#\${(j(${sep}))~\${(@)\${(@)keys[2,(rn:num:)\$key]}/*/*}}${~sep}} )"
fi
- tmp=( ${tmp%%$sep*} )
+ tmp=( ${tmp%%${~sep}*} )
compadd "$@" - $tmp || { (( $+functions[_$key] )) && "_$key" "$@" }
else
diff --git a/Completion/User/_rlogin b/Completion/User/_rlogin
index 738b6225f..df78bd447 100644
--- a/Completion/User/_rlogin
+++ b/Completion/User/_rlogin
@@ -54,21 +54,21 @@ _rlogin () {
}
_rlogin_users () {
- _tags users && _combination my-accounts users-hosts users "$@"
+ _tags users && _combination -s '[:@]' my-accounts users-hosts users "$@"
}
_rlogin_hosts () {
_tags hosts &&
if [[ "$IPREFIX" == *@ ]]; then
- _combination my-accounts users-hosts "users=${IPREFIX/@}" hosts "$@"
+ _combination -s '[:@]' my-accounts users-hosts "users=${IPREFIX/@}" hosts "$@"
else
- _combination my-accounts users-hosts \
+ _combination -s '[:@]' my-accounts users-hosts \
${opt_args[-l]:+"users=${opt_args[-l]:q}"} hosts "$@"
fi
}
_rlogin_all_hosts () {
- _tags hosts && _combination my-accounts users-hosts hosts "$@"
+ _tags hosts && _combination -s '[:@]' my-accounts users-hosts hosts "$@"
}
_rlogin "$@"
diff --git a/Completion/User/_ssh b/Completion/User/_ssh
index 82f959b37..ddfe6de63 100644
--- a/Completion/User/_ssh
+++ b/Completion/User/_ssh
@@ -223,14 +223,14 @@ _ssh () {
}
_ssh_users () {
- _combination my-accounts users-hosts users "$@"
+ _combination -s '[:@]' my-accounts users-hosts users "$@"
}
_ssh_hosts () {
if [[ "$IPREFIX" == *@ ]]; then
- _combination my-accounts users-hosts "users=${IPREFIX/@}" hosts "$@"
+ _combination -s '[:@]' my-accounts users-hosts "users=${IPREFIX/@}" hosts "$@"
else
- _combination my-accounts users-hosts \
+ _combination -s '[:@]' my-accounts users-hosts \
${opt_args[-l]:+"users=${opt_args[-l]:q}"} hosts "$@"
fi
}
diff --git a/Completion/User/_user_at_host b/Completion/User/_user_at_host
index 1098d2342..c7b86d385 100644
--- a/Completion/User/_user_at_host
+++ b/Completion/User/_user_at_host
@@ -23,8 +23,8 @@ if [[ -prefix 1 *@ ]]; then
compset -P 1 '*@'
_wanted -C user-at hosts expl "host for $user" &&
- _combination "${tag}" users-hosts users="$user" hosts "$expl[@]" "$@"
+ _combination -s '[:@]' "${tag}" users-hosts users="$user" hosts "$expl[@]" "$@"
else
_wanted users expl "user" &&
- _combination "${tag}" users-hosts users -S@ -q "$expl[@]" "$@"
+ _combination -s '[:@]' "${tag}" users-hosts users -S@ -q "$expl[@]" "$@"
fi