mirror of
https://github.com/zsh-users/zsh
synced 2024-09-20 00:11:39 +00:00
add -x option (to be passed on to compadd) to _description and friends; make _message respect any -[12VJ] options it gets, adding the message to that group (16609)
This commit is contained in:
parent
50758ce645
commit
77339cc21d
10
ChangeLog
10
ChangeLog
|
@ -1,3 +1,13 @@
|
|||
2002-02-12 Sven Wischnowsky <wischnow@zsh.org>
|
||||
|
||||
* 16609: Completion/Base/Core/_all_labels,
|
||||
Completion/Base/Core/_description, Completion/Base/Core/_message,
|
||||
Completion/Base/Core/_next_label,
|
||||
Completion/Base/Core/_requested, Completion/Base/Core/_wanted,
|
||||
Doc/Zsh/compsys.yo: add -x option (to be passed on to compadd)
|
||||
to _description and friends; make _message respect any -[12VJ]
|
||||
options it gets, adding the message to that group
|
||||
|
||||
2002-02-09 Clint Adams <clint@zsh.org>
|
||||
|
||||
* unposted: Functions/Prompts/prompt_clint_setup:
|
||||
|
|
|
@ -1,16 +1,14 @@
|
|||
#autoload
|
||||
|
||||
local __gopt=-J __len __tmp __pre __suf __ret=1 __descr __spec __prev
|
||||
local __gopt __len __tmp __pre __suf __ret=1 __descr __spec __prev
|
||||
|
||||
if [[ "$1" = - ]]; then
|
||||
__prev=-
|
||||
shift
|
||||
fi
|
||||
|
||||
if [[ "$1" = -([12]|)[VJ] ]]; then
|
||||
__gopt="$1"
|
||||
shift
|
||||
fi
|
||||
__gopt=()
|
||||
zparseopts -D -a __gopt 1 2 V J x
|
||||
|
||||
__tmp=${argv[(ib:4:)-]}
|
||||
__len=$#
|
||||
|
@ -29,12 +27,12 @@ while comptags "-A$__prev" "$1" curtag __spec; do
|
|||
_comp_tags="$_comp_tags $__spec "
|
||||
if [[ "$curtag" = *[^\\]:* ]]; then
|
||||
zformat -f __descr "${curtag#*:}" "d:$3"
|
||||
_description "$__gopt" "${curtag%:*}" "$2" "$__descr"
|
||||
_description "$__gopt[@]" "${curtag%:*}" "$2" "$__descr"
|
||||
curtag="${curtag%:*}"
|
||||
|
||||
"$4" "${(P@)2}" "${(@)argv[5,-1]}" && __ret=0
|
||||
else
|
||||
_description "$__gopt" "$curtag" "$2" "$3"
|
||||
_description "$__gopt[@]" "$curtag" "$2" "$3"
|
||||
|
||||
"${(@)argv[4,__pre]}" "${(P@)2}" "${(@)argv[__suf,-1]}" && __ret=0
|
||||
fi
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
#autoload
|
||||
|
||||
local name gropt=-J format gname hidden hide match opts tag
|
||||
local name gropt nopt xopt format gname hidden hide match opts tag
|
||||
|
||||
opts=()
|
||||
|
||||
if [[ "$1" = -([12]|)[VJ] ]]; then
|
||||
gropt="$1"
|
||||
shift
|
||||
fi
|
||||
gropt=(-J)
|
||||
xopt=(-X)
|
||||
nopt=()
|
||||
zparseopts -K -D -a nopt 1 2 V=gropt J=gropt x=xopt
|
||||
|
||||
3="${${3##[[:blank:]]#}%%[[:blank:]]#}"
|
||||
[[ -n "$3" ]] && _lastdescr=( "$_lastdescr[@]" "$3" )
|
||||
|
@ -62,15 +62,15 @@ fi
|
|||
|
||||
if [[ -n "$gname" ]]; then
|
||||
if [[ -n "$format" ]]; then
|
||||
set -A "$name" "$opts[@]" "$gropt" "$gname" -X "$format"
|
||||
set -A "$name" "$opts[@]" "$nopt[@]" "$gropt" "$gname" "$xopt" "$format"
|
||||
else
|
||||
set -A "$name" "$opts[@]" "$gropt" "$gname"
|
||||
set -A "$name" "$opts[@]" "$nopt[@]" "$gropt" "$gname"
|
||||
fi
|
||||
else
|
||||
if [[ -n "$format" ]]; then
|
||||
set -A "$name" "$opts[@]" "$gropt" -default- -X "$format"
|
||||
set -A "$name" "$opts[@]" "$nopt[@]" "$gropt" -default- "$xopt" "$format"
|
||||
else
|
||||
set -A "$name" "$opts[@]" "$gropt" -default-
|
||||
set -A "$name" "$opts[@]" "$nopt[@]" "$gropt" -default-
|
||||
fi
|
||||
fi
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#autoload
|
||||
|
||||
local format raw
|
||||
local format raw gopt
|
||||
|
||||
if [[ "$1" = -e ]]; then
|
||||
local expl ret=1
|
||||
|
@ -15,6 +15,9 @@ if [[ "$1" = -e ]]; then
|
|||
return ret
|
||||
fi
|
||||
|
||||
gopt=()
|
||||
zparseopts -D -a gopt 1 2 V J
|
||||
|
||||
_tags messages || return 1
|
||||
|
||||
if [[ "$1" = -r ]]; then
|
||||
|
@ -28,6 +31,6 @@ fi
|
|||
|
||||
if [[ -n "$format$raw" ]]; then
|
||||
[[ -z "$raw" ]] && zformat -f format "$format" "d:$1" "${(@)argv[2,-1]}"
|
||||
builtin compadd -x "$format"
|
||||
builtin compadd "$gopt[@]" -x "$format"
|
||||
_comp_mesg=yes
|
||||
fi
|
||||
|
|
|
@ -1,21 +1,19 @@
|
|||
#autoload
|
||||
|
||||
local __gopt=-J __descr __spec
|
||||
local __gopt __descr __spec
|
||||
|
||||
if [[ "$1" = -([12]|)[VJ] ]]; then
|
||||
__gopt="$1"
|
||||
shift
|
||||
fi
|
||||
__gopt=()
|
||||
zparseopts -D -a __gopt 1 2 V J x
|
||||
|
||||
if comptags -A "$1" curtag __spec; then
|
||||
_comp_tags="$_comp_tags $__spec "
|
||||
if [[ "$curtag" = *[^\\]:* ]]; then
|
||||
zformat -f __descr "${curtag#*:}" "d:$3"
|
||||
_description "$__gopt" "${curtag%:*}" "$2" "$__descr"
|
||||
_description "$__gopt[@]" "${curtag%:*}" "$2" "$__descr"
|
||||
curtag="${curtag%:*}"
|
||||
set -A $2 "${(P@)2}" "${(@)argv[4,-1]}"
|
||||
else
|
||||
_description "$__gopt" "$curtag" "$2" "$3"
|
||||
_description "$__gopt[@]" "$curtag" "$2" "$3"
|
||||
set -A $2 "${(@)argv[4,-1]}" "${(P@)2}"
|
||||
fi
|
||||
|
||||
|
|
|
@ -1,17 +1,15 @@
|
|||
#autoload
|
||||
|
||||
local __gopt=-J
|
||||
local __gopt
|
||||
|
||||
if [[ "$1" = -([12]|)[VJ] ]]; then
|
||||
__gopt="$1"
|
||||
shift
|
||||
fi
|
||||
__gopt=()
|
||||
zparseopts -D -a __gopt 1 2 V J x
|
||||
|
||||
if comptags -R "$1"; then
|
||||
if [[ $# -gt 3 ]]; then
|
||||
_all_labels - "$__gopt" "$@" || return 1
|
||||
_all_labels - "$__gopt[@]" "$@" || return 1
|
||||
elif [[ $# -gt 1 ]]; then
|
||||
_description "$__gopt" "$@"
|
||||
_description "$__gopt[@]" "$@"
|
||||
fi
|
||||
return 0
|
||||
else
|
||||
|
|
|
@ -1,26 +1,15 @@
|
|||
#autoload
|
||||
|
||||
local __targs __gopt=-J
|
||||
local __targs __gopt
|
||||
|
||||
if [[ "$1" = -C?* ]]; then
|
||||
__targs=( -C "${1[3,-1]}" )
|
||||
shift
|
||||
elif [[ "$1" = -C ]]; then
|
||||
__targs=( -C "$2" )
|
||||
shift 2
|
||||
else
|
||||
__targs=()
|
||||
fi
|
||||
|
||||
if [[ "$1" = -([12]|)[VJ] ]]; then
|
||||
__gopt="$1"
|
||||
shift
|
||||
fi
|
||||
__gopt=()
|
||||
__tagrs=()
|
||||
zparseopts -D -a __gopt 1 2 V J x C:=__targs
|
||||
|
||||
_tags "$__targs[@]" "$1"
|
||||
|
||||
while _tags; do
|
||||
_all_labels "$__gopt" "$@" && return 0
|
||||
_all_labels "$__gopt[@]" "$@" && return 0
|
||||
done
|
||||
|
||||
return 1
|
||||
|
|
|
@ -2930,7 +2930,7 @@ put themselves into the arrays again.
|
|||
|
||||
startitem()
|
||||
findex(_all_labels)
|
||||
item(tt(_all_labels) [ tt(-12VJ) ] var(tag) var(name) var(descr) [ var(command) var(args) ... ])(
|
||||
item(tt(_all_labels) [ tt(-x) ] [ tt(-12VJ) ] var(tag) var(name) var(descr) [ var(command) var(args) ... ])(
|
||||
This is a convenient interface to the tt(_next_label) function below,
|
||||
implementing the loop shown in the tt(_next_label) example. The
|
||||
var(command) is the one that should be called to generate the matches. The
|
||||
|
@ -3587,7 +3587,7 @@ tt(_describe) uses the tt(_all_labels) function to generate the matches, so
|
|||
it does not need to appear inside a loop over tag labels.
|
||||
)
|
||||
findex(_description)
|
||||
item(tt(_description) [ tt(-12VJ) ] var(tag) var(name) var(descr) [ var(specs) ... ])(
|
||||
item(tt(_description) [ tt(-x) ] [ tt(-12VJ) ] var(tag) var(name) var(descr) [ var(specs) ... ])(
|
||||
This function is called before completions are added (typically by a call
|
||||
to tt(compadd)); it tests various styles and arranges for any necessary
|
||||
options to be passed on to tt(compadd). The styles are tested in the
|
||||
|
@ -3609,7 +3609,10 @@ not contain an explanation string to be displayed above the matches. If
|
|||
tt(_description) is called with more than three arguments,
|
||||
the additional var(specs) should be of the form `var(char)tt(:)var(str)'
|
||||
and every appearance of `tt(%)var(char)' in the format string will be
|
||||
replaced by var(string).
|
||||
replaced by var(string). If the tt(-x) option is given, the
|
||||
description will be added using the tt(-x) option instead of the
|
||||
default tt(-X), i.e. the description will even be displayed if no
|
||||
matches are added for the description.
|
||||
|
||||
The options placed in the array will also make sure that the matches
|
||||
are placed in a separate group, depending on the value of the
|
||||
|
@ -3692,7 +3695,7 @@ tt(_guard)), only the message will be displayed and if the `tt(-n)' is
|
|||
followed by another character, only options are completed.
|
||||
)
|
||||
findex(_message)
|
||||
xitem(tt(_message) [ tt(-r) ] var(descr))
|
||||
xitem(tt(_message) [ tt(-r12) ] [ tt(-VJ) var(group) ] var(descr))
|
||||
item(tt(_message -e) var(tag descr))(
|
||||
The var(descr) is used like the third
|
||||
argument to the tt(_description) function. However, the resulting
|
||||
|
@ -3709,6 +3712,9 @@ used literally as the string to display. This is only used in cases
|
|||
where that string is taken from some pre-processed argument list
|
||||
containing an expanded description.
|
||||
|
||||
The tt(-12VJ) options and the var(group) are passed to tt(compadd) and
|
||||
hence determine the group the message string is added to.
|
||||
|
||||
In the second form, the var(descr) is added like a description added
|
||||
by tt(_description) under the given var(tag), but the var(descr) will
|
||||
always be shown even if no matches are added for the var(tag).
|
||||
|
@ -3741,13 +3747,13 @@ Like other utility functions, this function accepts the `tt(-V)',
|
|||
them to the tt(compadd) builtin.
|
||||
)
|
||||
findex(_next_label)
|
||||
item(tt(_next_label) [ tt(-12VJ) ] var(tag) var(name) var(descr) [ var(options) ... ])(
|
||||
item(tt(_next_label) [ tt(-x) ] [ tt(-12VJ) ] var(tag) var(name) var(descr) [ var(options) ... ])(
|
||||
This function should be called repeatedly to generate the tag
|
||||
labels. On each call it will check if another tag label is to be used
|
||||
and, if there is at least one, zero is returned. If no more tag
|
||||
labels are to be used, a non-zero status is returned.
|
||||
|
||||
The tt(-12JV) options and the first three arguments are given to the
|
||||
The tt(-x12VJ) options and the first three arguments are given to the
|
||||
tt(_description) function using the tag label instead of the first
|
||||
argument as appropriate. The var(options) given after the var(descr)
|
||||
should be other options to be used for tt(compadd) or whatever
|
||||
|
@ -3932,7 +3938,7 @@ Either of the two var(spec)s can be matched.
|
|||
enditem()
|
||||
)
|
||||
findex(_requested)
|
||||
item(tt(_requested) [ tt(-12VJ) ] var(tag) [ var(name) var(descr) [ var(command) var(args) ... ] ])(
|
||||
item(tt(_requested) [ tt(-x) ] [ tt(-12VJ) ] var(tag) [ var(name) var(descr) [ var(command) var(args) ... ] ])(
|
||||
This function is called to decide whether a tag already registered by a
|
||||
call to tt(_tags) (see below) is requested and hence completion should be
|
||||
performed for it; it returns status zero if the tag is requested and
|
||||
|
@ -4159,7 +4165,7 @@ which case you have to make the parameter tt(curcontext) local instead
|
|||
of tt(context) (as described above).
|
||||
)
|
||||
findex(_wanted)
|
||||
item(tt(_wanted) [ tt(-C) var(name) ] [ tt(-12VJ) ] var(tag) var(name) var(descr) var(command) var(args) ...)(
|
||||
item(tt(_wanted) [ tt(-x) ] [ tt(-C) var(name) ] [ tt(-12VJ) ] var(tag) var(name) var(descr) var(command) var(args) ...)(
|
||||
In many contexts, completion will generate one particular set of
|
||||
matches (usually corresponding to a single tag); however, it is
|
||||
still necessary to decide whether the user requires matches of this type.
|
||||
|
@ -4183,7 +4189,8 @@ Note that, as for tt(_requested), the var(command) has to accept the options
|
|||
that have to be passed down to tt(compadd).
|
||||
|
||||
Like tt(_tags) this function supports the tt(-C) option to give a
|
||||
different name for the argument context field.
|
||||
different name for the argument context field. The tt(-x) option has
|
||||
the same meaning as for tt(_description).
|
||||
)
|
||||
enditem()
|
||||
|
||||
|
|
Loading…
Reference in a new issue