mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-01-01 05:16:05 +01:00
39855: new completion for jot command
This commit is contained in:
parent
33b3489092
commit
0921a3537a
2 changed files with 84 additions and 0 deletions
|
@ -13,6 +13,8 @@
|
|||
* 39728: Src/zsh_system.h, Src/Modules/datetime.c: define
|
||||
_GNU_SOURCE on Cygwin
|
||||
|
||||
* 39855: Completion/BSD/Command/_jot: new completion
|
||||
|
||||
2016-11-07 Frank Terbeck <ft@bewatermyfriend.org>
|
||||
|
||||
* 39849: Completion/Unix/Command/_tmux: _tmux: Remove
|
||||
|
|
82
Completion/BSD/Command/_jot
Normal file
82
Completion/BSD/Command/_jot
Normal file
|
@ -0,0 +1,82 @@
|
|||
#compdef jot
|
||||
|
||||
local curcontext="$curcontext" state state_descr line ret=1
|
||||
local -A opt_args
|
||||
|
||||
_arguments -s -C : \
|
||||
'(-b)-r[generate random data instead of the default sequential data]' \
|
||||
'(-c -p -r -w)-b+[just print the specified word repeatedly]:word:' \
|
||||
'(-b -c -p)-w+[specify output format as in printf]:output format:->format' \
|
||||
'(-b -p -w)-c[same as -w %c]' \
|
||||
'-s+[separate the data by the specified string instead of newline]:string:' \
|
||||
'-n[do not print the final newline]' \
|
||||
'(-b -c -w)-p+[specify number of digits after decimal point]:precision:' \
|
||||
'(-)1: :_guard "^-*" "number of data"' \
|
||||
'2::lower bound:' \
|
||||
'3::upper bound:' \
|
||||
'4:: :->lastarg' && ret=0
|
||||
|
||||
case $state in
|
||||
(format)
|
||||
local -a flags digits conversions
|
||||
flags=(
|
||||
'#:alternative form'
|
||||
' :leave a blank before a positive number'
|
||||
'+:always place a sign before a number'
|
||||
'-:left adjust'
|
||||
)
|
||||
digits=(0 1 2 3 4 5 6 7 8 9 .)
|
||||
conversions=(
|
||||
{d,i}':signed decimal'
|
||||
'o:unsigned octal'
|
||||
'u:unsigned decimal'
|
||||
{x,X}':unsigned hexadecimal'
|
||||
'l'{d,i}':long signed decimal'
|
||||
'lo:long unsigned octal'
|
||||
'lu:long unsigned decimal'
|
||||
'l'{x,X}':long unsigned hexadecimal'
|
||||
'f:double number'
|
||||
{e,E}':double number in scientific notation'
|
||||
{g,G}':use %f or %e, whichever is more appropriate'
|
||||
'c:character'
|
||||
)
|
||||
|
||||
compset -P '([^%]#%%)#'
|
||||
if compset -P '[^%]#%'; then
|
||||
# flags: (|\#)(| )(|+|-)
|
||||
compset -P '(\#|\\\#)' && flags=( ${(@)flags:#\#*} )
|
||||
compset -P '( |\\ )' && flags=( ${(@)flags:#(\#| )*} )
|
||||
compset -P '(+|-)' || compset -P '[0-9]##' && flags=()
|
||||
# width.precision: [0-9]#(|.[0-9]#)
|
||||
if compset -P '.'; then
|
||||
flags=()
|
||||
digits=( ${(@)digits:#.} )
|
||||
fi
|
||||
compset -P '[0-9]#'
|
||||
# conversion specifier: ((|l)[diouxX]|[feEgGc])
|
||||
if compset -P '((|l)[diouxX]|[feEgGc])'; then
|
||||
_message -e format-rest 'rest of the format' && ret=0
|
||||
else
|
||||
local opts=( -S '' )
|
||||
_alternative -O opts 'flags:flag:(( $flags ))' \
|
||||
"width-precision:width.precision:($digits)" \
|
||||
'conversion-specifiers:conversion specifier:(( $conversions ))' \
|
||||
&& ret=0
|
||||
fi
|
||||
else
|
||||
local expl
|
||||
compset -P '*'
|
||||
_wanted start-specification expl 'start specification' \
|
||||
compadd -S '' % && ret=0
|
||||
fi
|
||||
;;
|
||||
(lastarg)
|
||||
if (( $+opt_args[-r] )); then
|
||||
_message -e seeds 'random number seed' && ret=0
|
||||
else
|
||||
_message -e steps 'step size' && ret=0
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
return ret
|
Loading…
Reference in a new issue