mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-09-30 19:20:53 +02:00
36983 + 36990: new completions for head and tail
This commit is contained in:
parent
aba7c00698
commit
9640e9f497
3 changed files with 115 additions and 0 deletions
|
@ -1,3 +1,8 @@
|
|||
2015-10-29 Jun-ichi Takimoto <takimoto-j@kba.biglobe.ne.jp>
|
||||
|
||||
* 36983 (with fix from 36990): Completion/Unix/Command/_head,
|
||||
Completion/Unix/Command/_tail: new completions for head and tail
|
||||
|
||||
2015-10-27 Barton E. Schaefer <schaefer@zsh.org>
|
||||
|
||||
* 36994: Functions/Zle/bracketed-paste-magic: declare local REPLY
|
||||
|
|
45
Completion/Unix/Command/_head
Normal file
45
Completion/Unix/Command/_head
Normal file
|
@ -0,0 +1,45 @@
|
|||
#compdef head
|
||||
|
||||
local curcontext=$curcontext state state_descr line expl opts args ret=1
|
||||
typeset -A opt_args
|
||||
|
||||
if _pick_variant gnu=GNU unix --version; then
|
||||
args=(
|
||||
'(-n --lines -c --bytes)'{-c+,--bytes=}'[print the first (or with -, all but the last) specified bytes]:number of bytes:->number'
|
||||
'(-n --lines -c --bytes)'{-n+,--lines=}'[print the first (or with -, all but the last) specified lines]:number of lines:->number'
|
||||
'(-q --quiet --silent -v --verbose)'{-q,--quiet,--silent}'[never print headers giving file names]'
|
||||
'(-q --quiet --silent -v --verbose)'{-v,--verbose}'[always print headers giving file names]'
|
||||
'(- *)--help[display help and exit]'
|
||||
'(- *)--version[output version information and exit]'
|
||||
)
|
||||
else
|
||||
opts=(-A '-*')
|
||||
args=( '(-c)-n+[display the first specified lines]:number of lines' )
|
||||
case $OSTYPE in
|
||||
(freebsd*|darwin*|dragonfly*|netbsd*)
|
||||
args+=( '(-n)-c+[display the first specified bytes]:number of bytes' )
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
_arguments -C -s -S $opts : $args '*:file:_files' && return 0
|
||||
|
||||
case $state in
|
||||
(number)
|
||||
local mlt sign digit
|
||||
mlt='multiplier:multiplier:((b\:512 K\:1024 KB\:1000 M\:1024\^2'
|
||||
mlt+=' MB\:1000\^2 G\:1024\^3 GB\:1000\^3 T\:1024\^4 TB\:1000\^4))'
|
||||
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
|
||||
_alternative $mlt $digit && ret=0
|
||||
elif [[ -z $PREFIX ]]; then
|
||||
_alternative $sign $digit && ret=0
|
||||
elif compset -P '(+|-)'; then
|
||||
_alternative $digit && ret=0
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
return ret
|
65
Completion/Unix/Command/_tail
Normal file
65
Completion/Unix/Command/_tail
Normal file
|
@ -0,0 +1,65 @@
|
|||
#compdef tail
|
||||
|
||||
local curcontext=$curcontext state state_descr line expl opts args ret=1
|
||||
typeset -A opt_args
|
||||
|
||||
if _pick_variant gnu=GNU unix --version; then
|
||||
args=(
|
||||
'(-n --lines -c --bytes)'{-c+,--bytes=}'[print the last specified bytes; with +, start at the specified byte]:number of bytes:->number'
|
||||
'(-n --lines -c --bytes)'{-n+,--lines=}'[print the last specified lines; with +, start at the specified line]:number of lines:->number'
|
||||
'(-F -f)--follow=-[output appended data as the file grows]::how:(name descriptor)'
|
||||
'(-F --follow)-f[same as --follow=descriptor]'
|
||||
'(-f --follow --retry)-F[same as --follow=name --retry]'
|
||||
'--max-unchanged-stats=[with --follow=name, check file rename after the specified number of iterations]:number of iterations'
|
||||
'(-s --sleep-interval)'{-s+,--sleep-interval=}'[with -f, sleep the specfied seconds between iterations]:seconds'
|
||||
'--pid=[with -f, terminate after the specified process dies]:pid:_pids'
|
||||
'(-q --quiet --silent -v --verbose)'{-q,--quiet,--silent}'[never output headers giving file names]'
|
||||
'(-q --quiet --silent -v --verbose)'{-v,--verbose}'[always output headers giving file names]'
|
||||
'--retry[keep trying to open a file even when it becomes inaccessible]'
|
||||
'(- *)--help[display help and exit]'
|
||||
'(- *)--version[output version information and exit]'
|
||||
)
|
||||
else
|
||||
opts=(-A '-*')
|
||||
args=(
|
||||
'(-b -n)-c+[start at the specified byte]:bytes relative to the end (with +, beginning) of file'
|
||||
'(-b -c)-n+[start at the specified line]:lines relative to the end (with +, beginning) of file'
|
||||
'(-F -r)-f[wait for new data to be appended to the file]'
|
||||
)
|
||||
case $OSTYPE in
|
||||
(freebsd*|darwin*|dragonfly*|netbsd*|openbsd*)
|
||||
args+=(
|
||||
'(-f -F)-r[display the file in reverse order]'
|
||||
'(-c -n)-b+[start at the specified block (512-byte)]:blocks relative to the end (with +, beginning) of file'
|
||||
)
|
||||
;|
|
||||
(freebsd*|darwin*|dragonfly*|netbsd*)
|
||||
args+=( '(-f -r)-F[implies -f, but also detect file rename]' )
|
||||
;|
|
||||
(freebsd*|darwin*|dragonfly*)
|
||||
args+=( '-q[suppress the headers when displaying multiple files]' )
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
_arguments -C -s -S $opts : $args '*:file:_files' && return 0
|
||||
|
||||
case $state in
|
||||
(number)
|
||||
local mlt sign digit
|
||||
mlt='multiplier:multiplier:((b\:512 K\:1024 KB\:1000 M\:1024\^2'
|
||||
mlt+=' MB\:1000\^2 G\:1024\^3 GB\:1000\^3 T\:1024\^4 TB\:1000\^4))'
|
||||
sign='sign: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
|
||||
_alternative $mlt $digit && ret=0
|
||||
elif [[ -z $PREFIX ]]; then
|
||||
_alternative $sign $digit && ret=0
|
||||
elif compset -P '(+|-)'; then
|
||||
_alternative $digit && ret=0
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
return ret
|
Loading…
Reference in a new issue