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/Base/Utility | |
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/Base/Utility')
-rw-r--r-- | Completion/Base/Utility/_contexts | 23 | ||||
-rw-r--r-- | Completion/Base/Utility/_set_command | 31 |
2 files changed, 31 insertions, 23 deletions
diff --git a/Completion/Base/Utility/_contexts b/Completion/Base/Utility/_contexts deleted file mode 100644 index f0e5ba874..000000000 --- a/Completion/Base/Utility/_contexts +++ /dev/null @@ -1,23 +0,0 @@ -#autoload - -# This searches $* in the array for normal completions and calls the result. -# It is used to include completions for another command or special context -# into the list generated by the calling function. -# For example the function for `-subscript-' could call this as in -# `_contexts -math-' to get the completions that would be generated for a -# mathematical context. - -local i tmp ret=1 service or - -if [[ $1 = -o ]]; then - or=yes - shift -fi - -for i; do - tmp="$_comps[$i]" - [[ -n "$tmp" ]] && service="${_services[$i]:-$i}" && eval "$tmp" && ret=0 - [[ -n "$or" && ret -eq 0 ]] && return 0 -done - -return ret diff --git a/Completion/Base/Utility/_set_command b/Completion/Base/Utility/_set_command new file mode 100644 index 000000000..daf532686 --- /dev/null +++ b/Completion/Base/Utility/_set_command @@ -0,0 +1,31 @@ +#autoload + +# This sets the parameters _comp_command1 and _comp_command2 in the +# calling function. + +local command + +command="$words[1]" + +[[ -z "$command" ]] && return + +if (( $+builtins[$command] + $+functions[$command] )); then + _comp_command1="$command" + curcontext="${curcontext%:*:*}:${_comp_command1}:" +elif [[ "$command[1]" = '=' ]]; then + eval _comp_command2\=$command + _comp_command1="$command[2,-1]" + curcontext="${curcontext%:*:*}:${_comp_command2}:" +elif [[ "$command" = ..#/* ]]; then + _comp_command1="${PWD}/$command" + _comp_command2="${command:t}" + curcontext="${curcontext%:*:*}:${_comp_command2}:" +elif [[ "$command" = */* ]]; then + _comp_command1="$command" + _comp_command2="${command:t}" + curcontext="${curcontext%:*:*}:${_comp_command2}:" +else + _comp_command1="$command" + _comp_command2="$commands[$command]" + curcontext="${curcontext%:*:*}:${_comp_command1}:" +fi |