diff options
author | Sven Wischnowsky <wischnow@users.sourceforge.net> | 2002-03-04 08:53:41 +0000 |
---|---|---|
committer | Sven Wischnowsky <wischnow@users.sourceforge.net> | 2002-03-04 08:53:41 +0000 |
commit | f56ba813bb92b1d61be91cb39df620b37a5a0588 (patch) | |
tree | 6b7432b8e437bfbd92b7859e0c9e38dd11277f1d /Completion/Unix/Command | |
parent | 10490ec499fff7b932f92a0b19c7e5343a24761d (diff) | |
download | zsh-f56ba813bb92b1d61be91cb39df620b37a5a0588.tar.gz zsh-f56ba813bb92b1d61be91cb39df620b37a5a0588.tar.xz zsh-f56ba813bb92b1d61be91cb39df620b37a5a0588.zip |
allow different sets of completion definitions selected with option -T to compdef; use this for parameter values and redirections (16755)
Diffstat (limited to 'Completion/Unix/Command')
-rw-r--r-- | Completion/Unix/Command/_gcc | 24 | ||||
-rw-r--r-- | Completion/Unix/Command/_su | 2 |
2 files changed, 22 insertions, 4 deletions
diff --git a/Completion/Unix/Command/_gcc b/Completion/Unix/Command/_gcc index e6c81e408..f297126d1 100644 --- a/Completion/Unix/Command/_gcc +++ b/Completion/Unix/Command/_gcc @@ -1,8 +1,21 @@ -#compdef gcc +#compdef gcc g++ -T values LDFLAGS CFLAGS CPPFLAGS -local curcontext="$curcontext" state line ret=1 expl args +local curcontext="$curcontext" state line ret=1 expl args args2 typeset -A opt_args +if [[ "$comptype" = values ]]; then + compset -q + words=( fake "$words[@]" ) + (( CURRENT++ )) + if ("$service" = LDFLAGS ]]; then + args2=( '-R:runtime path:->rundir' ) + else + args2=() + fi +else + args2=( '*:input file:_files -g \*.\(\[cCmisSoak\]\|cc\|cxx\|ii\|k\[ih\]\)' ) +fi + args=() case $MACHTYPE in m68*) @@ -243,7 +256,7 @@ _arguments -C -M 'L:|-{fW}no-=-{fW} r:|[_-]=* r:|=*' \ -freg-struct-return -fshared-data -fshort-enums \ -fshort-double -fvolatile -fvolatile-global \ -fverbose-asm -fpack-struct \ - '*:input file:_files -g \*.\(\[cCmisSoak\]\|cc\|cxx\|ii\|k\[ih\]\)' && ret=0 + "$args2[@]" && ret=0 case "$state" in @@ -276,6 +289,11 @@ library) _wanted libraries expl library \ compadd - ${^=LD_LIBRARY_PATH:-/usr/lib /usr/local/lib}/lib*.(a|so*)(:t:fr:s/lib//) && ret=0 ;; +rundir) + compset -P '*:' + compset -S ':*' + _files -/ -S/ -r '\n\t\- /:' "$@" + ;; esac return ret diff --git a/Completion/Unix/Command/_su b/Completion/Unix/Command/_su index d8ed17183..a1dd69db8 100644 --- a/Completion/Unix/Command/_su +++ b/Completion/Unix/Command/_su @@ -17,4 +17,4 @@ fi shell="${${(M@)${(@f)$(</etc/passwd)}:#$usr*}##*:}" compset -n $base -_contexts -o $shell $shell:t -default- +_dispatch comps $shell $shell:t -default- |