diff options
author | dana <dana@dana.is> | 2018-06-09 00:15:59 -0500 |
---|---|---|
committer | Oliver Kiddle <okiddle@yahoo.co.uk> | 2018-06-09 11:06:55 +0200 |
commit | b5b3dde0a003df55b7711ea3ebb3c1ebd4d9c5a1 (patch) | |
tree | c6ff1a14ff62efb5b6f31e6c3f2979309526cfdc /Completion | |
parent | 660e3f543e608ffeae2906af460d0ad78949156f (diff) | |
download | zsh-b5b3dde0a003df55b7711ea3ebb3c1ebd4d9c5a1.tar.gz zsh-b5b3dde0a003df55b7711ea3ebb3c1ebd4d9c5a1.tar.xz zsh-b5b3dde0a003df55b7711ea3ebb3c1ebd4d9c5a1.zip |
42965: add full completion for bash and update shell list in _sh
Diffstat (limited to 'Completion')
-rw-r--r-- | Completion/Unix/Command/_bash | 85 | ||||
-rw-r--r-- | Completion/Unix/Command/_sh | 2 |
2 files changed, 86 insertions, 1 deletions
diff --git a/Completion/Unix/Command/_bash b/Completion/Unix/Command/_bash new file mode 100644 index 000000000..260ca64fb --- /dev/null +++ b/Completion/Unix/Command/_bash @@ -0,0 +1,85 @@ +#compdef bash + +local ret=1 +local -a context line state state_descr args tmp cmd +local -A opt_args val_args + +cmd=( $words[1] --noprofile --norc ) + +args=( + # Long options must appear before short options (take care — some of these are + # duplicated in the s group below!) + + l + '!--debug' + '--debugger[enable extended debugging mode]' + '(-D --dump-po-strings --dump-strings)--dump-po-strings[like -D, but display in gettext PO format]' + '(-D --dump-po-strings --dump-strings)--dump-strings[display strings subject to language translation]' + '(: -)--help[display help information]' + # The usual = is deliberately omitted here + '(--init-file --rcfile)'{--init-file,--rcfile}'[load specified file instead of ~/.bashrc]: :_files' + '(-l --login)--login[act as login shell]' + '--noediting[disable readline editing]' + '--noprofile[do not load /etc/profile, ~/.bash_profile, etc.]' + '--norc[do not load ~/.bashrc]' + '--posix[enable POSIX mode]' + '(-r --restricted)--restricted[act as restricted shell]' + '(: -)--version[display version information]' + # This is ugly, but this way the + variants have accurate descriptions. Note + # that bash does accept + variants of -i, -l, -s, etc., but they don't seem to + # actually do anything, so we don't bother with them + + s + '(l)'{'-a[','+a[do not '}'mark all functions and variables for export]' + '(l)'{'-B[','+B[do not '}'enable brace expansion]' + '(l)'{'-b[','+b[do not '}'report status of terminated background jobs immediately]' + '(l)'{'-C[','+C[do not '}'prevent output redirection from overwriting existing files]' + '(l 1 -)-c[execute specified command string]:command string:_cmdstring:argv[0]:' + '(l)-D[display strings subject to language translation]' + '(l)'{'-E[','+E[do not '}'make functions and subshells inherit ERR traps]' + '(l)'{'-e[','+e[do not '}'exit immediately on non-zero return]' + '(l)'{'-f[','+f[do not '}'disable file globbing]' + '(l)'{'-H[','+H[do not '}'enable history substitution]' + '(l)'{'-h[','+h[do not '}'hash commands]' + '(l)-i[act as interactive shell]' + '(l)'{'-k[','+k[do not '}'act on variable assignments in command arguments]' + '(l)-l[act as login shell]' + '(l)'{'-m[','+m[do not '}'enable job control]' + '(l)'{'-n[','+n[do not '}'read (syntax-check) commands only]' + '(l)*'{'-O[','+O[un'}'set specified `shopt` option]: :->shopt-options' + '(l)*'{'-o[','+o[un'}'set specified `set` option]: :->set-options' + '(l)'{'-P[','+P[do not '}'resolve cd paths]' + '(l)'{'-p[','+p[do not '}'enable privileged mode]' + '(l)-r[act as restricted shell]' + '(l 1 -c)-s[read commands from standard input]' + '(l)'{'-T[','+T[do not '}'make functions and subshells inherit DEBUG and RETURN traps]' + '(l)'{'-t[','+t[do not '}'exit after executing one command]' + '(l)'{'-u[','+u[do not '}'treat unset variables as an error during parameter expansion]' + '(l)'{'-v[','+v[do not '}'print shell input lines as they are read]' + '(l)'{'-x[','+x[do not '}'print command trace]' + + o + '(-)1:script file:_files' + '(-)*:: :->args' +) + +_arguments -s -S -A '-*' : $args && ret=0 + +case $state in + args) + if [[ -n ${opt_args[(i)s--[cs]]} ]]; then + _files && ret=0 + else + _normal && ret=0 + fi + ;; + set-options) + tmp=( ${(f)"$( _call_program set-options ${(q-)cmd} -c '"shopt -o"' )"} ) + tmp=( ${tmp%%[[:space:]]*} ) + _values -w '`set` option' $tmp && ret=0 + ;; + shopt-options) + tmp=( ${(f)"$( _call_program shopt-options ${(q-)cmd} -c shopt )"} ) + tmp=( ${tmp%%[[:space:]]*} ) + _values -w '`shopt` option' $tmp && ret=0 + ;; +esac + +return ret diff --git a/Completion/Unix/Command/_sh b/Completion/Unix/Command/_sh index 2afb46621..39d299c58 100644 --- a/Completion/Unix/Command/_sh +++ b/Completion/Unix/Command/_sh @@ -1,4 +1,4 @@ -#compdef sh ksh bash csh tcsh rc +#compdef sh ash csh dash ksh ksh88 ksh93 mksh oksh pdksh rc tcsh yash if (( CURRENT == ${words[(i)-c]} + 1 )); then _cmdstring |