mirror of
git://git.code.sf.net/p/zsh/code
synced 2024-06-01 04:46:08 +02:00
3f7b81e24e
Committing without handling of +x option variants (line 10) pending resolution of workers/45422
37 lines
1.3 KiB
Plaintext
37 lines
1.3 KiB
Plaintext
#compdef sh ash csh dash ksh ksh88 ksh93 mksh oksh pdksh rc tcsh yash
|
|
|
|
local bourne argv0
|
|
local -a args all_opts=( -{{0..9},{A..Z},{a..z}} )
|
|
|
|
[[ $service == (csh|?csh|fish|rc) ]] || bourne=1
|
|
|
|
# Bourne-style shells support +x variants
|
|
# @todo Uncomment when workers/45422 is fixed
|
|
# (( bourne )) && all_opts+=( ${all_opts/#-/+} )
|
|
# Bourne-style shells take argv[0] as the second argument to -c
|
|
(( bourne )) && argv0=':argv[0]:'
|
|
|
|
# All of the recognised shells support at least these arguments
|
|
args=(
|
|
"(1 -)-c[execute specified command string]: :_cmdstring$argv0"
|
|
'-e[exit immediately on non-zero return]'
|
|
'-i[act as interactive shell]'
|
|
'-l[act as login shell]'
|
|
'-x[print command trace]'
|
|
'1:script file:_files'
|
|
'*:: :_files'
|
|
)
|
|
# Bourne-style shells support -o/+o option. Not all of them support -ooption in
|
|
# the same argument, but we'll allow it here for those that do
|
|
(( bourne )) && args+=(
|
|
'-o+[set specified option]:option:'
|
|
'+o+[unset specified option]:option:'
|
|
)
|
|
# Since this is a generic function we don't know what other options these shells
|
|
# support, but we don't want them to break the ones listed above, so we'll just
|
|
# ignore any other single-alphanumeric option. Obviously this doesn't account
|
|
# for long options
|
|
args+=( '!'${^${all_opts:#(${(~j<|>)${(@M)${(@M)args#(*[\*\)]|)[+-]?}%[+-]?}})}} )
|
|
|
|
_arguments -s -S -A '-*' : $args
|