mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-09-29 06:51:03 +02:00
zsh-workers/9876
This commit is contained in:
parent
39b2b5eb2a
commit
ed8b5c01b0
5 changed files with 21 additions and 15 deletions
|
@ -55,6 +55,9 @@ local sep tag style keys pats key num tmp
|
||||||
if [[ "$1" = -s ]]; then
|
if [[ "$1" = -s ]]; then
|
||||||
sep="$2"
|
sep="$2"
|
||||||
shift 2
|
shift 2
|
||||||
|
elif [[ "$1" = -s* ]]; then
|
||||||
|
sep="${1[3,-1]}"
|
||||||
|
shift
|
||||||
else
|
else
|
||||||
sep=:
|
sep=:
|
||||||
fi
|
fi
|
||||||
|
@ -81,9 +84,9 @@ shift
|
||||||
if zstyle -a ":completion:${curcontext}:$tag" "$style" tmp; then
|
if zstyle -a ":completion:${curcontext}:$tag" "$style" tmp; then
|
||||||
eval "tmp=( \"\${(@M)tmp:#\${(j($sep))~pats}}\" )"
|
eval "tmp=( \"\${(@M)tmp:#\${(j($sep))~pats}}\" )"
|
||||||
if (( keys[(in:num:)$key] != 1 )); then
|
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
|
fi
|
||||||
tmp=( ${tmp%%$sep*} )
|
tmp=( ${tmp%%${~sep}*} )
|
||||||
|
|
||||||
compadd "$@" - $tmp || { (( $+functions[_$key] )) && "_$key" "$@" }
|
compadd "$@" - $tmp || { (( $+functions[_$key] )) && "_$key" "$@" }
|
||||||
else
|
else
|
||||||
|
|
|
@ -54,21 +54,21 @@ _rlogin () {
|
||||||
}
|
}
|
||||||
|
|
||||||
_rlogin_users () {
|
_rlogin_users () {
|
||||||
_tags users && _combination my-accounts users-hosts users "$@"
|
_tags users && _combination -s '[:@]' my-accounts users-hosts users "$@"
|
||||||
}
|
}
|
||||||
|
|
||||||
_rlogin_hosts () {
|
_rlogin_hosts () {
|
||||||
_tags hosts &&
|
_tags hosts &&
|
||||||
if [[ "$IPREFIX" == *@ ]]; then
|
if [[ "$IPREFIX" == *@ ]]; then
|
||||||
_combination my-accounts users-hosts "users=${IPREFIX/@}" hosts "$@"
|
_combination -s '[:@]' my-accounts users-hosts "users=${IPREFIX/@}" hosts "$@"
|
||||||
else
|
else
|
||||||
_combination my-accounts users-hosts \
|
_combination -s '[:@]' my-accounts users-hosts \
|
||||||
${opt_args[-l]:+"users=${opt_args[-l]:q}"} hosts "$@"
|
${opt_args[-l]:+"users=${opt_args[-l]:q}"} hosts "$@"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
_rlogin_all_hosts () {
|
_rlogin_all_hosts () {
|
||||||
_tags hosts && _combination my-accounts users-hosts hosts "$@"
|
_tags hosts && _combination -s '[:@]' my-accounts users-hosts hosts "$@"
|
||||||
}
|
}
|
||||||
|
|
||||||
_rlogin "$@"
|
_rlogin "$@"
|
||||||
|
|
|
@ -223,14 +223,14 @@ _ssh () {
|
||||||
}
|
}
|
||||||
|
|
||||||
_ssh_users () {
|
_ssh_users () {
|
||||||
_combination my-accounts users-hosts users "$@"
|
_combination -s '[:@]' my-accounts users-hosts users "$@"
|
||||||
}
|
}
|
||||||
|
|
||||||
_ssh_hosts () {
|
_ssh_hosts () {
|
||||||
if [[ "$IPREFIX" == *@ ]]; then
|
if [[ "$IPREFIX" == *@ ]]; then
|
||||||
_combination my-accounts users-hosts "users=${IPREFIX/@}" hosts "$@"
|
_combination -s '[:@]' my-accounts users-hosts "users=${IPREFIX/@}" hosts "$@"
|
||||||
else
|
else
|
||||||
_combination my-accounts users-hosts \
|
_combination -s '[:@]' my-accounts users-hosts \
|
||||||
${opt_args[-l]:+"users=${opt_args[-l]:q}"} hosts "$@"
|
${opt_args[-l]:+"users=${opt_args[-l]:q}"} hosts "$@"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,8 +23,8 @@ if [[ -prefix 1 *@ ]]; then
|
||||||
compset -P 1 '*@'
|
compset -P 1 '*@'
|
||||||
|
|
||||||
_wanted -C user-at hosts expl "host for $user" &&
|
_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
|
else
|
||||||
_wanted users expl "user" &&
|
_wanted users expl "user" &&
|
||||||
_combination "${tag}" users-hosts users -S@ -q "$expl[@]" "$@"
|
_combination -s '[:@]' "${tag}" users-hosts users -S@ -q "$expl[@]" "$@"
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -1456,7 +1456,8 @@ completed.
|
||||||
)
|
)
|
||||||
item(tt(users-hosts))(
|
item(tt(users-hosts))(
|
||||||
The values of this style should be of the form
|
The values of this style should be of the form
|
||||||
`var(user)tt(:)var(host)'. It is used for commands that need pairs of
|
`var(user)tt(@)var(host)' or `var(user)tt(:)var(host)'. It is used for
|
||||||
|
commands that need pairs of
|
||||||
user- and hostnames. For such commands, only the pairs from this style
|
user- and hostnames. For such commands, only the pairs from this style
|
||||||
are used and if, for example, the username is already typed, then only
|
are used and if, for example, the username is already typed, then only
|
||||||
the hostnames for which there is a pair with that username is defined.
|
the hostnames for which there is a pair with that username is defined.
|
||||||
|
@ -2637,7 +2638,7 @@ Either of two `var(spec)'s can be matched.
|
||||||
enditem()
|
enditem()
|
||||||
)
|
)
|
||||||
findex(_combination)
|
findex(_combination)
|
||||||
item(tt(_combination) [ tt(-s) var(spec) ] var(tag) var(style) var(specs) ... var(field) var(opts) ...)(
|
item(tt(_combination) [ tt(-s) var(pattern) ] var(tag) var(style) var(specs) ... var(field) var(opts) ...)(
|
||||||
This function is used to complete combinations of values such as pairs
|
This function is used to complete combinations of values such as pairs
|
||||||
of hostnames and usernames. The possible values will be taken from the
|
of hostnames and usernames. The possible values will be taken from the
|
||||||
var(style) whose name is given as the second argument. The first argument
|
var(style) whose name is given as the second argument. The first argument
|
||||||
|
@ -2652,8 +2653,10 @@ generated.
|
||||||
|
|
||||||
The matches generated will be taken from the value of the style. These
|
The matches generated will be taken from the value of the style. These
|
||||||
values should contain the possible values for the combinations where
|
values should contain the possible values for the combinations where
|
||||||
the values for the different fields are separated by colons or the
|
the values for the different fields are separated by colons or
|
||||||
character given after the tt(-s) option to tt(_combination).
|
characters matching the pattern given after the tt(-s) option to
|
||||||
|
tt(_combination) (normally this is used to define character classes
|
||||||
|
like the `tt(-s "[:@]")' used for the tt(users-hosts) style).
|
||||||
|
|
||||||
Only the values for the requested fields for which the patterns given
|
Only the values for the requested fields for which the patterns given
|
||||||
in the `var(field)tt(=)var(pattern)' match the respective fields in
|
in the `var(field)tt(=)var(pattern)' match the respective fields in
|
||||||
|
|
Loading…
Reference in a new issue