mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-09-04 22:51:42 +02:00
42223: new completions for sublime text and some basic Unix utilities
This commit is contained in:
parent
48f01128be
commit
ae059841b0
6 changed files with 224 additions and 0 deletions
|
@ -1,5 +1,10 @@
|
|||
2018-01-05 Oliver Kiddle <okiddle@yahoo.co.uk>
|
||||
|
||||
* dana: 42223 (tweaked): Completion/X/Command/_sublimetext,
|
||||
Completion/Unix/Command/_getopt, Completion/Unix/Command/_install
|
||||
Completion/Unix/Command/_mktemp, Completion/Unix/Command/_fold:
|
||||
new completions
|
||||
|
||||
* 42221: Completion/Unix/Command/_enscript:
|
||||
update enscript completion for GNU enscript 1.6.6
|
||||
|
||||
|
|
24
Completion/Unix/Command/_fold
Normal file
24
Completion/Unix/Command/_fold
Normal file
|
@ -0,0 +1,24 @@
|
|||
#compdef fold gfold
|
||||
|
||||
local variant
|
||||
local -a args
|
||||
|
||||
_pick_variant -r variant busybox=BusyBox gnu='Free Soft' unix --version
|
||||
|
||||
args=(
|
||||
'(-b --bytes)'{-b,--bytes}'[count bytes rather than columns]'
|
||||
'(: -)--help[display help information]'
|
||||
'(-s --spaces)'{-s,--spaces}'[fold on whitespace]'
|
||||
'(-w --width)'{-w+,--width=}'[specify line width]:line width (columns or bytes)'
|
||||
'(: -)--version[display version information]'
|
||||
'*: :_files'
|
||||
)
|
||||
|
||||
# Non-GNU variants don't support long options (except BusyBox's --help)
|
||||
if [[ $variant == *busybox* ]]; then # See also: _busybox
|
||||
args=( ${args:#((#s)|*\))(\*|)--^help*} )
|
||||
elif [[ $variant != gnu ]]; then
|
||||
args=( ${args:#((#s)|*\))(\*|)--*} )
|
||||
fi
|
||||
|
||||
_arguments -s -S : $args
|
28
Completion/Unix/Command/_getopt
Normal file
28
Completion/Unix/Command/_getopt
Normal file
|
@ -0,0 +1,28 @@
|
|||
#compdef getopt ggetopt
|
||||
|
||||
local -a args aopts
|
||||
|
||||
# Note: BusyBox getopt is borrowed straight from util-linux, so they're
|
||||
# basically identical
|
||||
if _pick_variant busybox=BusyBox util-linux='getopt*enhanced' unix --version; then
|
||||
args=(
|
||||
'(-a --alternative)'{-a,--alternative}'[allow long options with single -]'
|
||||
'(: -)'{-h,--help}'[display help information]'
|
||||
'*'{-l+,--longoptions=}'[specify long options]:long options'
|
||||
'(-n --name)'{-n+,--name=}'[specify program name]:program name'
|
||||
'(1 -o --options)'{-o+,--options=}'[specify short options]:short options'
|
||||
'(-q --quiet)'{-q,--quiet}'[suppress getopt(3) error messages]'
|
||||
'(-Q --quiet-output)'{-Q,--quiet-output}'[suppress normal output]'
|
||||
'(-s --shell)'{-s+,--shell=}'[specify shell quoting conventions]:shell:(bash csh tcsh sh)'
|
||||
'(: -)'{-T,--test}'[test for enhanced getopt]'
|
||||
'(-u --unquoted)'{-u,--unquoted}'[do not quote output]'
|
||||
'(: -)'{-V,--version}'[display version information]'
|
||||
'(-o --options)1: :_guard "^-*" "short options"'
|
||||
'*:argument'
|
||||
)
|
||||
[[ -n $POSIXLY_CORRECT ]] && aopts+=( -A '-*' )
|
||||
else
|
||||
args=( '1:short options' '*:argument' )
|
||||
fi
|
||||
|
||||
_arguments -s -S $aopts : $args
|
111
Completion/Unix/Command/_install
Normal file
111
Completion/Unix/Command/_install
Normal file
|
@ -0,0 +1,111 @@
|
|||
#compdef install ginstall
|
||||
|
||||
local curcontext="$curcontext" lx ret=1
|
||||
local -a line state state_descr common_args args tmp
|
||||
local -A opt_args val_args
|
||||
|
||||
# These are *almost* common — non-GNU variants need to remove the long options
|
||||
common_args=(
|
||||
'(--backup)-b[create backups of destination files]'
|
||||
'(-C -c --compare)'{-C,--compare}'[copy files; do nothing if identical destination file exists]'
|
||||
'(-C -c --compare)-c[copy files (default)]'
|
||||
'(-d --directory)'{-d,--directory}'[create directories]'
|
||||
'(-g --group)'{-g+,--group=}'[specify destination file group]: :_groups'
|
||||
'(-m --mode)'{-m+,--mode=}'[specify destination file mode]: :_modes'
|
||||
'(-o --owner)'{-o+,--owner=}'[specify destination file owner]: :_users'
|
||||
'(-p --preserve-timestamps)'{-p,--preserve-timestamps}'[preserve modification times]'
|
||||
'(-s --strip)'{-s,--strip}'[strip binaries]'
|
||||
'(-v --verbose)'{-v,--verbose}'[output verbosely]'
|
||||
'*: :_files'
|
||||
)
|
||||
|
||||
if _pick_variant gnu='Free Soft' unix --version; then
|
||||
# Hide Linux-specific options on non-Linux platforms
|
||||
[[ $OSTYPE == linux* ]] || lx='!'
|
||||
args+=(
|
||||
$common_args
|
||||
'(-b --backup)--backup=[create backup; optionally specify method]:: :->controls'
|
||||
"${lx}--context=[like -Z, or specify SELinux security context to set]::SELinux security context"
|
||||
'-D[create all leading destination path components]'
|
||||
'(: -)--help[display help information]'
|
||||
"${lx}--preserve-context[preserve SELinux security context]"
|
||||
'--strip-program=[specify program used to strip binaries]:strip program:_files'
|
||||
'(-S --suffix)'{-S+,--suffix=}'[specify backup suffix]:backup suffix'
|
||||
'(-t --target-directory)'{-t+,--target-directory=}'[copy source to specified directory]: :_directories'
|
||||
'(-T --no-target-directory)'{-T,--no-target-directory}'[treat destination as regular file]'
|
||||
'(: -)--version[display version information]'
|
||||
"${lx}-Z[set SELinux security context on destination files to default type]"
|
||||
)
|
||||
|
||||
else
|
||||
args+=(
|
||||
${common_args##((#s)|*\))(\*|)--*}
|
||||
'-B+[specify backup suffix for -b]:backup suffix'
|
||||
'-f+[specify destination file flags]: :_flags'
|
||||
)
|
||||
[[ $OSTYPE == dragonfly* ]] && args+=(
|
||||
'!-D+[no effect (compatibility with NetBSD)]: :_directories'
|
||||
'-L+[use user/group database files from specified directory]: :_directories'
|
||||
'-l[fall back to system files if user/group not found in -L directory]'
|
||||
)
|
||||
[[ $OSTYPE == netbsd* ]] && {
|
||||
args+=(
|
||||
'-a+[specify shell command to run on files after install]:shell command'
|
||||
'-r[use temporary files to perform safe copy]'
|
||||
'-S+[specify arguments to pass to strip program]:arguments to strip program'
|
||||
)
|
||||
# NetBSD has no -v for some reason
|
||||
args=( ${args##((#s)|*\))(\*|)-v*} )
|
||||
}
|
||||
[[ $OSTYPE == openbsd* ]] && args+=(
|
||||
'-D[create all leading destination path components]'
|
||||
'-F[flush installed file contents to disk]'
|
||||
)
|
||||
[[ $OSTYPE == (darwin|dragonfly)* ]] && args+=(
|
||||
'-M[disable use of mmap(2)]'
|
||||
)
|
||||
[[ $OSTYPE == (freebsd|netbsd)* ]] && args+=(
|
||||
'-D+[specify destination directory used for metadata log]: :_directories'
|
||||
'-h+[store digest in metadata log using specified method]: :->digests'
|
||||
'(-C -c --compare)-l+[link files (rather than copy) using specified method]: :->linkflags'
|
||||
'-M+[log mtree(8) metadata for installed files to specified file]:metadata log file:_files'
|
||||
'+N+[use user/group database files from specified directory]: :_directories'
|
||||
'-T+[specify mtree(8) tags to store in metadata log]:mtree(8) tags'
|
||||
'-U[indicate that install is unprivileged]'
|
||||
)
|
||||
[[ $OSTYPE == netbsd* ]] || args+=(
|
||||
'-S[use temporary files to perform safe copy]'
|
||||
)
|
||||
fi
|
||||
|
||||
_arguments -C -s -S : $args && ret=0
|
||||
|
||||
case $state in
|
||||
controls)
|
||||
tmp=(
|
||||
{none,off}':never make backups'
|
||||
{numbered,t}':make numbered backups'
|
||||
{existing,nil}':make numbered backups if they already exist'
|
||||
# 'never' actually means 'always'...
|
||||
{simple,never}':make simple backups'
|
||||
)
|
||||
_describe -t controls 'version control method' tmp && ret=0
|
||||
;;
|
||||
digests)
|
||||
tmp=( none md5 rmd160 sha1 sha256 sha512 )
|
||||
[[ $OSTYPE == netbsd* ]] && tmp+=( sha384 )
|
||||
_values 'digest method' $tmp && ret=0
|
||||
;;
|
||||
linkflags)
|
||||
tmp=(
|
||||
'h[hard links]'
|
||||
's[symlinks]'
|
||||
'm[mixed (hard links for files on same file system)]'
|
||||
'a[symlinks use absolute path]'
|
||||
'r[symlinks use relative path]'
|
||||
)
|
||||
_values -S '' 'link flags' $tmp && ret=0
|
||||
;;
|
||||
esac
|
||||
|
||||
return ret
|
43
Completion/Unix/Command/_mktemp
Normal file
43
Completion/Unix/Command/_mktemp
Normal file
|
@ -0,0 +1,43 @@
|
|||
#compdef mktemp gmktemp
|
||||
|
||||
local variant
|
||||
local args
|
||||
|
||||
_pick_variant -r variant busybox=BusyBox gnu='Free Soft' unix --version
|
||||
|
||||
args=(
|
||||
'(-d --directory)'{-d,--directory}'[make directory instead of file]'
|
||||
'(: -)--help[display help information]'
|
||||
'(-p --tmpdir)'{-p+,--tmpdir=}'[make relative to specified directory]: :_directories'
|
||||
'(-q --quiet)'{-q,--quiet}'[suppress error messages]'
|
||||
'--suffix=[append specified suffix to template]:template suffix'
|
||||
'-t[interpret template as single path component relative to temp dir]'
|
||||
'(-u --dry-run)'{-u,--dry-run}'[print file name only]'
|
||||
'(: -)'{-V,--version}'[display version information]'
|
||||
'1: :_guard "^-*" "template name"'
|
||||
)
|
||||
|
||||
# Non-GNU variants don't support long options (except BusyBox's --help)
|
||||
if [[ $variant == *busybox* ]]; then # See also: _busybox
|
||||
args=( ${args:#((#s)|*\))(\*|)--^help*} )
|
||||
elif [[ $variant != gnu ]]; then
|
||||
args=( ${args:#((#s)|*\))(\*|)--*} )
|
||||
fi
|
||||
|
||||
[[ $variant == gnu ]] || {
|
||||
# BusyBox, OpenBSD, and Solaris have -p, but -t doesn't take an argument
|
||||
if [[ $variant == *busybox* ]] || [[ $OSTYPE == (openbsd|solaris)* ]]; then
|
||||
args=( ${args:#((#s)|*\))(\*|)-t*} )
|
||||
args+=( '-t[generate template relative to temp dir]' )
|
||||
# Dragonfly, FreeBSD, and Darwin take an argument to -t and support any number
|
||||
# of template files
|
||||
else
|
||||
args=( ${args:#((#s)|*\))(1:*|(\*|)-t*)} )
|
||||
args+=(
|
||||
'-t[generate template relative to temp dir using specified prefix]:template prefix'
|
||||
'*: :_guard "^-*" "template name"'
|
||||
)
|
||||
fi
|
||||
}
|
||||
|
||||
_arguments -s -S : $args
|
13
Completion/X/Command/_sublimetext
Normal file
13
Completion/X/Command/_sublimetext
Normal file
|
@ -0,0 +1,13 @@
|
|||
#compdef subl
|
||||
|
||||
_arguments -s -S : \
|
||||
'(-a -n --add --new-window)'{-a,--add}'[add to current window]' \
|
||||
'(-b --background)'{-b,--background}"[don't activate application]" \
|
||||
'--command[run specified command]:command' \
|
||||
'(: -)'{-h,--help}'[display help information]' \
|
||||
'(-a -n --add --new-window)'{-n,--new-window}'[open new window]' \
|
||||
'--project[load specified project]:project file:_files' \
|
||||
'(-s --stay)'{-s,--stay}'[keep application activated]' \
|
||||
'(: -)'{-v,--version}'[display version information]' \
|
||||
'(-w --wait)'{-w,--wait}'[wait for files to close]' \
|
||||
'*:file or directory:_files'
|
Loading…
Reference in a new issue