1
0
Fork 0
mirror of git://git.code.sf.net/p/zsh/code synced 2025-01-19 11:31:26 +01:00

zsh-workers/9876

This commit is contained in:
Tanaka Akira 2000-02-25 14:41:48 +00:00
parent 39b2b5eb2a
commit ed8b5c01b0
5 changed files with 21 additions and 15 deletions

View file

@ -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

View file

@ -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 "$@"

View file

@ -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
}

View file

@ -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

View file

@ -1456,7 +1456,8 @@ completed.
)
item(tt(users-hosts))(
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
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.
@ -2637,7 +2638,7 @@ Either of two `var(spec)'s can be matched.
enditem()
)
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
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
@ -2652,8 +2653,10 @@ generated.
The matches generated will be taken from the value of the style. These
values should contain the possible values for the combinations where
the values for the different fields are separated by colons or the
character given after the tt(-s) option to tt(_combination).
the values for the different fields are separated by colons or
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
in the `var(field)tt(=)var(pattern)' match the respective fields in