From 139a4dbe07728a22dcb120d1ca9ff3cdae98471a Mon Sep 17 00:00:00 2001 From: Oliver Kiddle Date: Wed, 22 Jun 2016 01:30:22 +0200 Subject: 38735: support verbose style to allow clearer but less compact descriptions for time specifiers --- Completion/Unix/Command/_find | 20 ++++++++++++++------ Completion/Zsh/Type/_globquals | 24 ++++++++++++++++++++---- 2 files changed, 34 insertions(+), 10 deletions(-) (limited to 'Completion') diff --git a/Completion/Unix/Command/_find b/Completion/Unix/Command/_find index e736f32cb..3854d6cce 100644 --- a/Completion/Unix/Command/_find +++ b/Completion/Unix/Command/_find @@ -1,7 +1,7 @@ #compdef find gfind -local curcontext="$curcontext" state_descr variant -local -a state line args alts +local curcontext="$curcontext" state_descr variant default +local -a state line args alts disp smatch _pick_variant -r variant gnu=GNU $OSTYPE -version @@ -101,7 +101,7 @@ case $variant in '-D[print diagnostics]:debug option:(help tree search stat rates opt exec)' '-O+[enable query optimisation]:level:(1 2 3)' '*-daystart' - '-regextype:regexp syntax:(emacs posix-awk posix-basic posix-egrep posix-extended)' + '-regextype:regexp syntax:(help findutils-default awk egrep ed emacs gnu-awk grep posix-awk posix-basic posix-egrep posix-extended posix-minimal-basic sed)' '*-warn' '*-nowarn' '*-xautofs' @@ -147,13 +147,21 @@ _arguments -C $args \ '*-user:user:_users' \ '*-xdev' \ '*-a' '*-o' \ - '*:directory:_files -/' + '(-D -E -H -L -O -P -f -s -x --help --version)*:directory:_files -/' if [[ $state = times ]]; then if ! compset -P '[+-]' || [[ -prefix '[0-9]' ]]; then - disp=( 'before' 'exactly' 'since' ) compstate[list]+=' packed' - alts=( "senses:sense:compadd -V times -S '' -d disp - + '' -" ) + if zstyle -t ":completion:${curcontext}:senses" verbose; then + zstyle -s ":completion:${curcontext}:senses" list-separator sep || sep=-- + default=" [default exactly]" + disp=( "- $sep before" "+ $sep since" ) + smatch=( - + ) + else + disp=( before exactly since ) + smatch=( - '' + ) + fi + alts=( "senses:sense${default}:compadd -V times -S '' -d disp -a smatch" ) fi alts+=( "times:${state_descr}:_dates -f d" ) _alternative $alts diff --git a/Completion/Zsh/Type/_globquals b/Completion/Zsh/Type/_globquals index ed9c008a1..6eef16877 100644 --- a/Completion/Zsh/Type/_globquals +++ b/Completion/Zsh/Type/_globquals @@ -1,7 +1,7 @@ #autoload -local state=qual expl char delim timespec -local -a alts tdisp sdisp +local state=qual expl char delim timespec default +local -a alts tdisp sdisp tmatch smatch local -A specmap while [[ -n $PREFIX ]]; do @@ -118,11 +118,27 @@ while [[ -n $PREFIX ]]; do timespec=$PREFIX[1] if ! compset -P '[Mwhmsd]' && [[ -z $PREFIX ]]; then tdisp=( seconds minutes hours days weeks Months ) - alts+=( "time-specifiers:time specifier:compadd -E 0 -d tdisp -S '' - s m h d w M" ) + tmatch=( s m h d w M ) + if zstyle -t ":completion:${curcontext}:time-specifiers" verbose; then + zstyle -s ":completion:${curcontext}:time-specifiers" list-separator sep || sep=-- + print -v tdisp -f "%s ${sep//(#m)[%\\]/$MATCH$MATCH} %s\0" ${tmatch:^^tdisp} + tdisp=( ${(0)tdisp} ) + fi + alts+=( "time-specifiers:time specifier:compadd -E 0 -d tdisp -S '' -a tmatch" ) fi if ! compset -P '[-+]' && [[ -z $PREFIX ]]; then sdisp=( before exactly since ) - alts+=("senses:sense:compadd -E 0 -d sdisp -S '' - + '' -") + smatch=( - '' + ) + if zstyle -t ":completion:${curcontext}:senses" verbose; then + zstyle -s ":completion:${curcontext}:senses" list-separator sep || sep=-- + default=" [default exactly]" + sdisp=( "- $sep before" "+ $sep since" ) + smatch=( - + ) + else + sdisp=( before exactly since ) + smatch=( - '' + ) + fi + alts+=( "senses:sense${default}:compadd -E 0 -d sdisp -S '' -a smatch" ) fi specmap=( M months w weeks h hours m minutes s seconds '(|+|-|d)' days) alts+=('digits:digit ('${${specmap[(K)${timespec:-d}]}:-invalid time specifier}'):_dates -f ${${timespec/[-+]/d}:-d} -S ""' ) -- cgit 1.4.1