1
0
Fork 0
mirror of git://git.code.sf.net/p/zsh/code synced 2025-11-01 18:30:55 +01:00

39479 + 39481 minus _path_files hunk (see 39489): Completion: audit 'compset -P' calls to use shortest match where applicable, plus random drive-by tweaks.

Found by grepping for patterns that can match needles of various lengths:

    :grep 'compset -[PS].*[\#^*()\|<>?~\]' Completion/
This commit is contained in:
Daniel Shahaf 2016-09-28 17:46:37 +00:00
parent a96e34b459
commit 7ad0001183
32 changed files with 77 additions and 42 deletions

View file

@ -83,7 +83,7 @@ case $state in
"classpath:$state:_path_files -r': ' -/" && ret=0
;;
property)
if compset -P '*='; then
if compset -P 1 '*='; then
_default && ret=0
else
_message -e properties 'property name'

View file

@ -106,10 +106,10 @@ fi
_arguments -C -s "$args[@]" && ret=0
if [[ $state = afile ]]; then
if compset -P '*:'; then
# TODO: doesn't need to be rsh.
_wanted files expl 'remote files' \
compadd $(rsh ${words[CURRENT]%:*} echo ${words[CURRENT]#*:}\*) && ret=0
if [[ $ig != gnu ]]; then
_files && ret=0
elif compset -P 1 '*:'; then
_remote_files -- ssh && ret=0
elif compset -P '*@'; then
_wanted hosts expl 'remote host name' _hosts && ret=0
else

View file

@ -595,7 +595,7 @@ _cvs_tempdir() {
(( $+functions[_cvs_user_variable] )) ||
_cvs_user_variable() {
if compset -P '*='; then
if compset -P 1 '*='; then
_default
else
_message -e variables "variable"

View file

@ -32,7 +32,7 @@ esac
case $state in
addresses)
compset -P '*;'
if compset -P '*='; then
if compset -P 1 '*='; then
_files && ret=0
else
_message -e addresses address

View file

@ -1335,7 +1335,7 @@ _git-push () {
'--follow-tags[also push missing annotated tags reachable from the pushed refs]' \
'(--receive-pack --exec)'{--receive-pack=-,--exec=-}'[path to git-receive-pack on remote]:remote git-receive-pack:_files' \
'(--force-with-lease --no-force-with-lease)*--force-with-lease=-[allow refs that are not ancestors to be updated if current ref matches expected value]::ref and expectation:->lease' \
'(--force-with-lease --no-force-with-lease)--no-force-with-lease=-[cancel all previous force-with-lease specifications]' \
'(--force-with-lease --no-force-with-lease)--no-force-with-lease[cancel all previous force-with-lease specifications]' \
'(-f --force)'{-f,--force}'[allow refs that are not ancestors to be updated]' \
'(:)--repo=[default repository to use]:repository:__git_any_repositories' \
'(-u --set-upstream)'{-u,--set-upstream}'[add upstream reference for each branch that is up to date or pushed]' \

View file

@ -360,7 +360,7 @@ case "$words[2]" in
'*:picture file:_imagemagick' && return
if [[ "$state" = profile ]]; then
if compset -P '*:'; then
if compset -P 1 '*:'; then
_files
else
_wanted prefixes expl 'profile type' compadd icc: iptc:

View file

@ -116,7 +116,7 @@ _mkisofs_sparc_boot_images () {
_mkisofs_pathspec () {
local sep
if (( $words[(I)-graft-points] )); then
if ! compset -P '*[^\\]\='; then
if ! compset -P 1 '*[^\\]\='; then
sep='-qS='
fi
fi
@ -335,7 +335,7 @@ else
case "$state" in
(devimg)
if compset -P \*=; then
if compset -P 1 '*='; then
_files
else
_files -g "*(%,@)"

View file

@ -32,7 +32,7 @@ else
fi
;;
sname)
if compset -P '*='; then
if compset -P 1 '*='; then
case "$IPREFIX" in
*DEVICE\=)
_wanted devices expl 'ghostscript device' \

View file

@ -31,7 +31,7 @@ case $state in
state=''
;;
schemata)
if compset -P '*:'; then
if compset -P 1 '*:'; then
_directories && ret=0
else
_wanted schemata expl 'schema' compadd -M 'r:|.=* r:|=*' \

View file

@ -32,7 +32,7 @@ case $state in
sign='sign:sign:((-\:"print all but the last specified bytes/lines"'
sign+=' +\:"print the first specified bytes/lines (default)"))'
digit='digits:digit:(0 1 2 3 4 5 6 7 8 9)'
if compset -P '*[0-9]'; then
if compset -P '[0-9]##'; then
_alternative $mlt $digit && ret=0
elif [[ -z $PREFIX ]]; then
_alternative $sign $digit && ret=0

View file

@ -364,7 +364,7 @@ case "$service" in
'*:picture file:_imagemagick' && return
if [[ "$state" = profile ]]; then
if compset -P '*:'; then
if compset -P 1 '*:'; then
_files
else
_wanted prefixes expl 'profile type' compadd icc: iptc:

View file

@ -578,7 +578,7 @@ encoding)
;;
property)
if compset -P '*='; then
if compset -P 1 '*='; then
_default && return
else
_message -e property-names 'property name'

View file

@ -44,7 +44,7 @@ _lp_job_options()
# The program specified by the style list-printer-options should list jobs in
# the same style as lpoptions -l.
if compset -P '*='; then
if compset -P 1 '*='; then
# List values for the option
case ${IPREFIX%=} in
(media)

View file

@ -69,8 +69,9 @@ case "$state" in
"F $sep Append a \`*' for executable files"
"G $sep Inhibit display of group information"
"Q $sep Enclose file names in double quotes" )
# The "Z" on the next line is sentinel to prevent the character class from being empty.
disp=( ${disp[@]:#[Z$PREFIX]*} )
compset -P '[FGQ]*'
compset -P '[FGQ]#'
compadd -d disp - ${disp[@]%% *} && ret=0
;;
esac

View file

@ -856,7 +856,7 @@ fsopt)
devordir)
local dev_tmp mp_tmp mline
if compset -P '*:'; then
if compset -P 1 '*:'; then
_wanted exports expl 'exported path' compadd \
${${(f)"$(path+=( {/usr,}/sbin(N) ) _call_program exports \
showmount -e ${IPREFIX%:} 2>/dev/null)"}[2,-1]%% *} && ret=0

View file

@ -56,7 +56,7 @@ _perl_normal() {
_perl_m_opt () {
compset -P '-'
if compset -P '*='; then
if compset -P 1 '*='; then
_message -e module-arguments 'module arguments, comma separated'
else
_perl_modules -S= -q

View file

@ -50,7 +50,7 @@ case $state in
local -a directives suf
local code='foreach (ini_get_all() as $k => $v) { echo "$k\n"; }'
directives=( $(_call_program directives $words[1] -r ${(q)code} 2>/dev/null) )
if compset -P '*='; then
if compset -P 1 '*='; then
_default && return 0
else
compset -S '=*' || suf=( -qS '=' )

View file

@ -38,9 +38,9 @@ _rlogin () {
'*:files:->files' && ret=0
if [[ -n "$state" ]]; then
if compset -P '*:'; then
if compset -P 1 '*:'; then
_remote_files -- rsh && ret=0
elif compset -P '*@'; then
elif compset -P 1 '*@'; then
_wanted hosts expl host _rlogin_hosts -S: && ret=0
else
_alternative \

View file

@ -200,7 +200,7 @@ _ssh () {
case "$lstate" in
option)
if compset -P '*='; then
if compset -P 1 '*='; then
case "${IPREFIX#-o}" in
(#i)(ciphers|macs|kexalgorithms|hostkeyalgorithms|pubkeyacceptedkeytypes|hostbasedkeytypes)=)
if ! compset -P +; then
@ -628,9 +628,9 @@ _ssh () {
fi
;;
file)
if compset -P '[^./][^/]#:'; then
if compset -P 1 '[^./][^/]#:'; then
_remote_files -- ssh ${(kv)~opt_args[(I)-[FP1246]]/-P/-p} && ret=0
elif compset -P '*@'; then
elif compset -P 1 '*@'; then
suf=( -S '' )
compset -S ':*' || suf=( -r: -S: )
_wanted hosts expl 'remote host name' _ssh_hosts $suf && ret=0
@ -642,9 +642,9 @@ _ssh () {
fi
;;
rfile)
if compset -P '*:'; then
if compset -P 1 '*:'; then
_remote_files -- ssh && ret=0
elif compset -P '*@'; then
elif compset -P 1 '*@'; then
_wanted hosts expl host _ssh_hosts -r: -S: && ret=0
else
_alternative \

View file

@ -56,7 +56,7 @@ case $state in
sign='signs:sign:((+\:"start at the specified byte/line"'
sign+=' -\:"output the last specified bytes/lines (default)"))'
digit='digits:digit:(0 1 2 3 4 5 6 7 8 9)'
if compset -P '*[0-9]'; then
if compset -P '[0-9]##'; then
_alternative $mlt $digit && ret=0
elif [[ -z $PREFIX ]]; then
_alternative $sign $digit && ret=0

View file

@ -90,7 +90,7 @@ case "$state" in
option)
local -a options
options=( ${${(M)${(f)"$(_call_program options $words[1] -show-option 2>/dev/null)"}:# -o *}/(#b) -o (*)=[^ ]#[[:blank:]]##(*)/$match[1]:${match[2]:l}} )
if compset -P '*='; then
if compset -P 1 '*='; then
_message -e values 'value'
else
compset -S '=*' || suf=( -S '=' )
@ -98,7 +98,7 @@ case "$state" in
fi
;;
pauth)
if compset -P '*:'; then
if compset -P 1 '*:'; then
_message -e passwords 'password'
else
compset -S ':*' || suf=( -S ':' )