diff options
author | Tanaka Akira <akr@users.sourceforge.net> | 1999-04-15 18:05:38 +0000 |
---|---|---|
committer | Tanaka Akira <akr@users.sourceforge.net> | 1999-04-15 18:05:38 +0000 |
commit | e74702b467171dbdafb56dfe354794a212e020d9 (patch) | |
tree | c295b3e9b2e93e2de10331877442615b0f37e779 /Functions/Completion/_main_complete | |
parent | c175751b501a3a4cb40ad4787340a597ea769be4 (diff) | |
download | zsh-e74702b467171dbdafb56dfe354794a212e020d9.tar.gz zsh-e74702b467171dbdafb56dfe354794a212e020d9.tar.xz zsh-e74702b467171dbdafb56dfe354794a212e020d9.zip |
Initial revision
Diffstat (limited to 'Functions/Completion/_main_complete')
-rw-r--r-- | Functions/Completion/_main_complete | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/Functions/Completion/_main_complete b/Functions/Completion/_main_complete new file mode 100644 index 000000000..003a01785 --- /dev/null +++ b/Functions/Completion/_main_complete @@ -0,0 +1,48 @@ +#autoload + +# The main loop of the completion code. This is what is called when +# completion is attempted from the command line. +# The completion code gives us the special variables and the arguments +# from the command line are given as positional parameters. + +local comp name + +setopt localoptions nullglob rcexpandparam globdots +unsetopt markdirs globsubst shwordsplit nounset + +# An entry for `-first-' is the replacement for `compctl -T' +# Completion functions may set `COMPSKIP' to any value to make the +# main loops stop calling other completion functions. + +comp="$comps[-first-]" +if [[ ! -z "$comp" ]]; then + "$comp" "$@" + if (( $+COMPSKIP )); then + unset COMPSKIP + return + fi +fi + +# For arguments we use the `_normal function. + +if [[ $CONTEXT == argument || $CONTEXT == command ]]; then + _normal "$@" +else + # Let's see if we have a special completion definition for the other + # possible contexts. + + comp='' + + case $CONTEXT in + redirect) comp="$comps[-redirect-]";; + math) comp="$comps[-math-]";; + subscript) comp="$comps[-subscript-]";; + value) comp="$comps[-value-]";; + condition) comp="$comps[-condition-]";; + esac + + # If not, we use default completion, if any. + + [[ -z "$comp" ]] && comp="$comps[-default-]" + [[ -z "$comp" ]] || "$comp" "$@" +fi |