1
0
Fork 0
mirror of git://git.code.sf.net/p/zsh/code synced 2025-09-23 17:01:05 +02:00

zsh-workers/9731

This commit is contained in:
Tanaka Akira 2000-02-15 09:07:09 +00:00
parent bf990125d1
commit e6cc1ece7f
24 changed files with 82 additions and 112 deletions

View file

@ -17,9 +17,8 @@ if (( long )); then
fi
name=${~words[1]}
if [[ "$name" != /* ]]; then
tmp="$PWD/$name"
fi
[[ "$name" != /* ]] && tmp="$PWD/$name"
name="_args_cache_${name}"
name="${name//[^a-zA-Z0-9_]/_}"
@ -255,7 +254,7 @@ if (( $# )) && comparguments -i "$autod" "$@"; then
fi
if [[ -z "$matched" ]] && _requested options &&
{ ! zstyle -t ":completion:${curcontext}:options" prefix-needed ||
{ ! zstyle -T ":completion:${curcontext}:options" prefix-needed ||
[[ "$origpre" = [-+]* ||
( -z "$aret$mesg" && nm -eq compstate[nmatches] ) ]] } ; then
local prevpre="$PREFIX" previpre="$IPREFIX"

View file

@ -16,7 +16,7 @@ fi
_tags "$_type" || return 1
zstyle -t ":completion:${curcontext}:$_type" verbose && _showd=yes
zstyle -T ":completion:${curcontext}:$_type" verbose && _showd=yes
_description "$_type" _expl "$1"
shift

View file

@ -5,12 +5,12 @@ local expl disp jobs job jids pfx='%' desc how
_tags jobs || return 1
if [[ "$1" = -t ]]; then
zstyle -t ":completion:${curcontext}:jobs" prefix-needed &&
zstyle -T ":completion:${curcontext}:jobs" prefix-needed &&
[[ "$PREFIX" != %* && compstate[nmatches] -ne 0 ]] && return 1
shift
fi
zstyle -t ":completion:${curcontext}:jobs" prefix-hidden && pfx=''
zstyle -t ":completion:${curcontext}:jobs" verbose && desc=yes
zstyle -T ":completion:${curcontext}:jobs" verbose && desc=yes
if [[ "$1" = -r ]]; then
jids=( "${(@k)jobstates[(R)running*]}" )

View file

@ -21,7 +21,7 @@ elif [[ ${(Pt)${compstate[parameter]}} = array* ]]; then
while _tags; do
if _requested -V indexes expl 'array index'; then
ind=( {1..${#${(P)${compstate[parameter]}}}} )
if zstyle -t ":completion:${curcontext}:indexes" verbose; then
if zstyle -T ":completion:${curcontext}:indexes" verbose; then
list=()
for i in "$ind[@]"; do
[[ "$i" = ${PREFIX}*${SUFFIX} ]] &&

View file

@ -22,9 +22,9 @@ while _tags; do
compadd "$suf[@]" "$expl[@]" "$@" - "${(@k)nameddirs}"
if _requested -V directory-stack expl 'directory stack' &&
{ ! zstyle -t ":completion:${curcontext}:directory-stack" prefix-needed ||
{ ! zstyle -T ":completion:${curcontext}:directory-stack" prefix-needed ||
[[ "$PREFIX" = [-+]* || nm -eq compstate[nmatches] ]] }; then
if zstyle -t ":completion:${curcontext}:directory-stack" verbose; then
if zstyle -T ":completion:${curcontext}:directory-stack" verbose; then
integer i
lines=("${PWD}" "${dirstack[@]}")

View file

@ -16,7 +16,7 @@ zstyle -a ":completion:${curcontext}:ps" arguments args
out="$(command ps $args 2>/dev/null)"
if zstyle -t ":completion:${curcontext}:processes" verbose; then
if zstyle -T ":completion:${curcontext}:processes" verbose; then
zstyle -a ":completion:${curcontext}:ps" list-arguments listargs
(( $#listargs )) || listargs=( "$args[@]" )
if [[ "$listargs" = "$args" ]]; then

View file

@ -11,10 +11,10 @@ local expl list lines revlines disp
_wanted -V directory-stack expl 'directory stack' || return 1
! zstyle -t ":completion:${curcontext}:directory-stack" prefix-needed ||
! zstyle -T ":completion:${curcontext}:directory-stack" prefix-needed ||
[[ $PREFIX = [-+]* ]] || return 1
if zstyle -t ":completion:${curcontext}:directory-stack" verbose; then
if zstyle -T ":completion:${curcontext}:directory-stack" verbose; then
# get the list of directories with their canonical number
# and turn the lines into an array, removing the current directory
lines=("${dirstack[@]}")

View file

@ -7,7 +7,7 @@ if [[ CURRENT -eq 2 ]]; then
_wanted -C - jobs expl 'scheduled jobs' || return 1
lines=(${(f)"$(sched)"})
if zstyle -t ":completion:${curcontext}:jobs" verbose; then
if zstyle -T ":completion:${curcontext}:jobs" verbose; then
disp=( -ld lines )
else
disp=()

View file

@ -22,7 +22,7 @@ done
if _wanted signals expl signal &&
{ [[ -z "$minus" ]] ||
! zstyle -t ":completion:${curcontext}:signals" prefix-needed ||
! zstyle -T ":completion:${curcontext}:signals" prefix-needed ||
[[ "$PREFIX" = -* ]] } ; then
local disp tmp

View file

@ -10,7 +10,7 @@ else
while _tags; do
_requested files && _files && ret=0
_requested options expl 'inode element' &&
{ ! zstyle -t ":completion:${curcontext}:options" prefix-needed ||
{ ! zstyle -T ":completion:${curcontext}:options" prefix-needed ||
[[ "$PREFIX[1]" = + || ret -eq 1 ]] } &&
compadd "$expl[@]" - +device +inode +mode +nlink +uid +gid +rdev \
+size +atime +mtime +ctime +blksize +block +link

View file

@ -17,7 +17,7 @@ local curcontext="${curcontext}" oldcontext opm="$compstate[pattern_match]"
oldcontext="$curcontext"
zstyle -s ":completion:${curcontext}:" max-errors cfgacc
zstyle -s ":completion:${curcontext}:" max-errors cfgacc || cfgacc='2 numeric'
# Get the number of errors to accept.

View file

@ -16,17 +16,14 @@ else
fi
(( $opts[(I)-F] )) && hasign=yes
if [[ "$group[2]" = files ]]; then
opts=("$opts[@]" "$group[@]")
group=()
fi
[[ "$group[2]" = files ]] && opts=("$opts[@]" "$group[@]") group=()
ign=()
if zstyle -s ":completion:${curcontext}:all-files" file-patterns tmp &&
[[ -n "$tmp" ]]; then
aopts=(-g "$tmp")
fi
zstyle -s ":completion:${curcontext}:all-files" file-patterns tmp &&
[[ -n "$tmp" ]] &&
aopts=(-g "$tmp")
if zstyle -s ":completion:${curcontext}:directories" file-patterns tmp &&
[[ -n "$tmp" ]]; then
dopts=(-g "$tmp")

View file

@ -19,7 +19,7 @@
setopt localoptions nullglob rcexpandparam extendedglob
unsetopt markdirs globsubst shwordsplit nounset ksharrays
local comp post ret=1 _compskip _prio_num=1 format _comp_ignore \
local comp post ret=1 _compskip format _comp_ignore \
_completers _completers_left _comp_matcher \
context state line opt_args val_args curcontext="$curcontext" \
_last_nmatches=-1 _last_menu_style _def_menu_style _menu_style sel \
@ -28,12 +28,6 @@ local comp post ret=1 _compskip _prio_num=1 format _comp_ignore \
_saved_list="${compstate[list]}" \
_saved_insert="${compstate[insert]}"
typeset -U _offered_tags _tried_tags _failed_tags _used_tags _unused_tags
_offered_tags=()
_tried_tags=()
_failed_tags=()
typeset -U _lastdescr
[[ -z "$curcontext" ]] && curcontext=:::
@ -50,17 +44,13 @@ fi
# Initial setup.
_setup default
_def_menu_style=( "$_last_menu_style[@]" )
_def_menu_style=( "$_last_menu_style[@]"
${SELECTMIN+select${SELECTMIN:+\=$SELECTMIN}} )
_last_menu_style=()
# Get the names of the completers to use in the positional parameters.
if (( ! $# )); then
local tmp
zstyle -a ":completion:${curcontext}:" completer tmp
set -- "$tmp[@]"
fi
(( $# )) || zstyle -a ":completion:${curcontext}:" completer argv || set _complete
# And now just call the completer functions defined.
@ -75,7 +65,7 @@ for comp; do
shift 1 _completers_left
done
if (( $compstate[nmatches] )); then
if [[ $compstate[nmatches] -gt 1 ]]; then
[[ _last_nmatches -ge 0 && _last_nmatches -ne compstate[nmatches] ]] &&
_menu_style=( "$_last_menu_style[@]" "$_menu_style[@]" )
@ -128,7 +118,7 @@ if (( $compstate[nmatches] )); then
fi
fi
fi
elif [[ $#_lastdescr -ne 0 ]] &&
elif [[ $compstate[nmatches] -eq 0 && $#_lastdescr -ne 0 ]] &&
zstyle -s ":completion:${curcontext}:warnings" format format; then
local str
@ -147,11 +137,6 @@ elif [[ $#_lastdescr -ne 0 ]] &&
compadd -UX "$format" -n ''
fi
# See which tags were or were not used.
_used_tags=( "${(@)_tried_tags:#${(j:|:)~${(@)_failed_tags//\[/\\[}//\]/\\]}}" )
_unused_tags=( "${(@)_offered_tags:#${(j:|:)~${(@)_used_tags//\[/\\[}//\]/\\]}}" )
# Now call the post-functions.
for post in "$comppostfuncs[@]"; do
@ -167,10 +152,5 @@ _lastcomp[iprefix]="$IPREFIX"
_lastcomp[isuffix]="$ISUFFIX"
_lastcomp[qiprefix]="$QIPREFIX"
_lastcomp[qisuffix]="$QISUFFIX"
_lastcomp[offered_tags]="${(j.:.)_offered_tags}"
_lastcomp[tried_tags]="${(j.:.)_tried_tags}"
_lastcomp[failed_tags]="${(j.:.)_failed_tags}"
_lastcomp[unused_tags]="${(j.:.)_unused_tags}"
_lastcomp[used_tags]="${(j.:.)_used_tags}"
return ret

View file

@ -66,10 +66,7 @@ fi
name="$cmd1"
comp="$_comps[$cmd1]"
if [[ -z "$comp" ]]; then
name="$cmd2"
comp="$_comps[$cmd2]"
fi
[[ -z "$comp" ]] && name="$cmd2" comp="$_comps[$cmd2]"
# And generate the matches, probably using default completion.
@ -77,11 +74,9 @@ if [[ -n "$comp" ]]; then
_compskip=patterns
"$comp" && ret=0
[[ "$_compskip" = (all|*patterns*) ]] && return ret
else
if [[ "$_compskip" != *default* ]]; then
name=-default-
comp="$_comps[-default-]"
fi
elif [[ "$_compskip" != *default* ]]; then
name=-default-
comp="$_comps[-default-]"
fi
if [[ "$_compskip" != (all|*patterns*) ]]; then

View file

@ -290,7 +290,7 @@ for prepath in "$prepaths[@]"; do
tmp2=( "$tmp1[@]" )
builtin compadd -D tmp1 -F _comp_ignore "$matcher[@]" - "${(@)tmp1:t}"
if [[ $#tmp1 -eq 0 && -n "$_comp_correct" ]]; then
if [[ $#tmp1 -eq 0 ]]; then
tmp1=( "$tmp2[@]" )
compadd -D tmp1 -F _comp_ignore "$matcher[@]" - "${(@)tmp2:t}"
fi
@ -334,7 +334,7 @@ for prepath in "$prepaths[@]"; do
if [[ -z "$tpre$tsuf" && -n "$pre$suf" ]]; then
pfxsfx=(-S '' "$pfxsfx[@]")
break;
break
elif [[ "$haspats" = no && -z "$tpre$tsuf" &&
"$pre" = */ && -z "$suf" ]]; then
PREFIX="${opre}"
@ -352,8 +352,8 @@ for prepath in "$prepaths[@]"; do
if [[ "$rem" = *parent* ]]; then
for i in ${(M)^tmp1:#*/*}(-/); do
remt="${${i#$prepath$realpath$donepath}%/*}"
while [[ "$remt" = */* ]]; do
[[ "$prepath$realpath$donepath$remt" -ef "$i" ]] && break
while [[ "$remt" = */* &&
! "$prepath$realpath$donepath$remt" -ef "$i" ]]; do
remt="${remt%/*}"
done
[[ "$remt" = */* || "$remt" -ef "$i" ]] &&
@ -406,9 +406,7 @@ for prepath in "$prepaths[@]"; do
if [[ "$tmp3" = */* ]]; then
tmp4=( "${(@M)tmp1:#${tmp3%%/*}/*}" )
if (( $#tmp4 )); then
tmp1=( "$tmp4[@]" )
fi
(( $#tmp4 )) && tmp1=( "$tmp4[@]" )
fi
# Next we see if this component is ambiguous.

View file

@ -3,12 +3,15 @@
local val nm="$compstate[nmatches]"
if zstyle -a ":completion:${curcontext}:$1" list-colors val; then
zmodload -e zsh/complist || zmodload -i zsh/complist
zmodload -i zsh/complist
if [[ "$1" = default ]]; then
ZLS_COLORS="${(j.:.)${(@)val:gs/:/\\\:}}"
else
eval "ZLS_COLORS=\"(${1})\${(j.:(${1}).)\${(@)val:gs/:/\\\:}}:\${ZLS_COLORS}\""
fi
elif [[ "$1" = default && -n "$ZLS_COLORS$ZLS_COLOURS" ]]; then
zmodload -i zsh/complist
ZLS_COLORS="$ZLS_COLORS$ZLS_COLOURS"
fi
if zstyle -s ":completion:${curcontext}:$1" list-packed val; then

View file

@ -35,9 +35,6 @@ if (( $# )); then
comptags -i "$curcontext" "$@"
_offered_tags=( "$_offered_tags[@]" "$@" )
_last_tags=()
# Sort the tags.
if [[ -n "$_sort_tags" ]]; then
@ -55,6 +52,15 @@ if (( $# )); then
[[ -z "$nodef" ]] && comptry "$@"
else
# The first ones give the default behaviour.
comptry arguments values
comptry options
comptry globbed-files
comptry directories
comptry all-files
comptry "$@"
fi
@ -67,20 +73,4 @@ fi
# The other mode: switch to the next set of tags.
local tags
_failed_tags=( "$_failed_tags[@]" "$_last_tags[@]" )
# Return failure if no sets remaining.
comptags -N || return 1
# Otherwise get the next tags.
comptags -S _last_tags
_tried_tags=( "$_tried_tags[@]" "$_last_tags[@]" )
shift 1 "$prios"
return 0
comptags -N

View file

@ -470,19 +470,6 @@ compstyle() {
return 0
}
# Default styles. This should be executed conditionally somehow.
zstyle ':completion:*' verbose 'yes'
zstyle ':completion:*' prefix-needed 'yes'
zstyle ':completion:*' prefix-hidden 'no'
zstyle ':completion:*:(correct|approximate):*' max-errors '2' numeric
zstyle ':completion:*:correct:*' prompt 'correct to:'
zstyle ':completion:*::::' completer '_complete'
zstyle ':completion:*::::default' list-colors "${(s.:.)ZLS_COLORS:-${ZLS_COLOURS:-no=0:fi=0:di=0:ln=0:pi=0:so=0:bd=0:cd=0:ex=0}}"
(( $+SELECTMIN )) && zstyle ':completion:*::::default' menu "select=$SELECTMIN"
zstyle ':completion:*' tag-order 'arguments values' options \
globbed-files directories all-files
# Now we automatically make the definition files autoloaded.
typeset -U _i_files

View file

@ -106,7 +106,7 @@ tmp2=("$tmp2[@]" $_ra_left${(M)^short_bool:#$~tmp1} $_ra_left${(M)^short_intleve
tmp3=("$tmp3[@]" $_ra_left${(M)^short_hasarg:#$~tmp1} $_ra_left${(M)^short_configfile:#$~tmp1} $_ra_left${(M)^short_arbitem:#$~tmp1})
_describe -o option tmp2 -- tmp3 -S='
comp_opt='{ ! zstyle -t ":completion:${curcontext}:options" prefix-needed || [[ "$PREFIX" = -* ]] }'" && { $comp_short; $comp_long }"
comp_opt='{ ! zstyle -T ":completion:${curcontext}:options" prefix-needed || [[ "$PREFIX" = -* ]] }'" && { $comp_short; $comp_long }"
regex_short=()
regex_long=()

View file

@ -37,7 +37,7 @@ fi
if compset -P -P || [[ "$words[CURRENT-1]" = -P ]]; then
if _wanted printers expl printer; then
if zstyle -t ":completion:${curcontext}:printers" verbose; then
if zstyle -T ":completion:${curcontext}:printers" verbose; then
zformat -a list ' -- ' "$_lp_cache[@]"
disp=(-ld list)
else
@ -47,7 +47,7 @@ if compset -P -P || [[ "$words[CURRENT-1]" = -P ]]; then
(( $+_lp_alias_cache )) || return 1
if zstyle -t ":completion:${curcontext}:printers" verbose; then
if zstyle -T ":completion:${curcontext}:printers" verbose; then
zformat -a list ' -- ' "$_lp_alias_cache[@]"
disp=(-ld list)
else
@ -73,7 +73,7 @@ else
if _requested users expl user; then
strs=( "${(@)${(@)list##[^ ]##[ ]##[^ ]##[ ]##}%%[ ]*}" )
if [[ -z "$shown" ]] &&
zstyle -t ":completion:${curcontext}:users" verbose; then
zstyle -T ":completion:${curcontext}:users" verbose; then
disp=(-ld list)
shown=yes
else
@ -84,7 +84,7 @@ else
if _requested jobs expl job; then
strs=( "${(@)${(@)list##[^ ]##[ ]##[^ ]##[ ]##[^ ]##[ ]##}%%[ ]*}" )
if [[ -z "$shown" ]] &&
zstyle -t ":completion:${curcontext}:jobs" verbose; then
zstyle -T ":completion:${curcontext}:jobs" verbose; then
disp=(-ld list)
shown=yes
else

View file

@ -9,7 +9,7 @@ local curcontext="$curcontext" state line expl
typeset -A opt_args
[[ $CURRENT -eq 2 ]] && _wanted options expl option &&
{ ! zstyle -t ":completion:${curcontext}:options" prefix-needed ||
{ ! zstyle -T ":completion:${curcontext}:options" prefix-needed ||
[[ "$PREFIX" = -* ]] } &&
compadd -M 'r:|[_-]=* r:|=*' "$expl[@]" - -version

View file

@ -713,6 +713,9 @@ only completion for prediction one could use:
example(zstyle ':completion:::::' completer _complete _correct _approximate
zstyle ':completion:incremental::::' completer _complete _correct
zstyle ':completion:predict::::' completer _complete)
The default value for this style is tt(_complete), i.e. normally only
completion will be done.
)
item(tt(completions))(
This style is used by the tt(_expand) completer function.
@ -1115,7 +1118,10 @@ will em(not) try to generate corrected
completions when given a numeric argument, so in this case the number given
should be greater than zero. For example, `tt(2 not-numeric)' specifies that
correcting completion with two errors will usually be performed, but if a
numeric argument is given, correcting completion will not be performed.
numeric argument is given, correcting completion will not be
performed.
The default value for this style contains tt(2) and tt(numeric).
)
item(tt(menu))(
This style is tested for the tt(default) tag and the tags used when
@ -1219,6 +1225,8 @@ item(tt(prefix-hidden))(
This is used when matches with a common prefix are added (e.g. option
names). If it is `true', this prefix will not be shown in the list of
matches.
The default value for this style is `false'.
)
item(tt(prefix-needed))(
This, too, is used for matches with a common prefix. If it is set to
@ -1226,6 +1234,8 @@ This, too, is used for matches with a common prefix. If it is set to
matches. E.g. for options this means that the `tt(-)', `tt(+)', or
`tt(-)tt(-)' has to be on the line to make option names be completed at
all.
The default style for this style is `true'.
)
item(tt(prompt))(
The tt(incremental-complete-word) widget shows the value of this
@ -1344,7 +1354,10 @@ in which order tags are to be used based on additional context
information. See the tt(_sort_tags) function below for a description
of how such functions can be implemented.
If no style has been defined for a context, all tags will be used.
If no style has been defined for a context, the strings tt(arguments
values), tt(options), tt(globbed-files), tt(directories) and
tt(all-files) plus all tags offered by the completion function will be
used.
)
item(tt(users))(
This may be set to a list of names that should be completed whenever
@ -1369,7 +1382,9 @@ the tt(accounts) tag.
item(tt(verbose))(
This is used in several contexts to decide if only a simple or a
verbose list of matches should be generated. For example some commands
show descriptions for option names if this style is true.
show descriptions for option names if this style is `true'.
The default value for this style is `true'.
)
item(tt(word))(
To find out if listing should be performed on its own, the tt(_list)

View file

@ -15,6 +15,7 @@ xitem(tt(zstyle -b) var(context) var(style) var(name))
xitem(tt(zstyle -a) var(context) var(style) var(name))
xitem(tt(zstyle -h) var(context) var(style) var(name))
xitem(tt(zstyle -t) var(context) var(style) [ var(strings) ...])
xitem(tt(zstyle -T) var(context) var(style) [ var(strings) ...])
item(tt(zstyle -m) var(context) var(style) var(pattern))(
This builtin command is used to define and lookup styles. Styles are
pairs of names and values, where the values consist of any number of
@ -63,7 +64,7 @@ makes it be returned as an associative array (with the first, third,
etc. string being used as the keys and the other strings being used as
the values).
The tt(-t) option can be used to test the value of a style, i.e. it
The tt(-t) options can be used to test the value of a style, i.e. it
only sets the return value. Without any var(strings) arguments it is
zero if the style is defined for at least one matching pattern, has
only one string in its value and that is equal to one of tt(true),
@ -71,6 +72,9 @@ tt(yes), tt(on) or tt(1). If any var(strings) are given the return
zero if and only if at least one of the var(strings) is equal to at
least one of the strings in the value.
The tt(-T) option is like tt(-t) but returns zero if the style is not
set for any matching pattern.
The tt(-m) option can be used to match a value. It returns zero if the
var(pattern) matches at least one of the strings in the value.
)

View file

@ -285,6 +285,7 @@ bin_zstyle(char *nam, char **args, char *ops, int func)
case 'a': min = 3; max = 3; break;
case 'h': min = 3; max = 3; break;
case 't': min = 2; max = -1; break;
case 'T': min = 2; max = -1; break;
case 'm': min = 3; max = 3; break;
case 'g': min = 1; max = 3; break;
default:
@ -417,6 +418,7 @@ bin_zstyle(char *nam, char **args, char *ops, int func)
}
break;
case 't':
case 'T':
{
Stypat s;
@ -438,7 +440,7 @@ bin_zstyle(char *nam, char **args, char *ops, int func)
!strcmp(s->vals[0], "on") ||
!strcmp(s->vals[0], "1"));
}
return 1;
return (args[0][1] == 't');
}
break;
case 'm':