From ba4f5e80ec9d7e145718e79fed6e57a852c86c12 Mon Sep 17 00:00:00 2001 From: Tanaka Akira Date: Thu, 15 Apr 1999 18:15:04 +0000 Subject: zsh-3.1.5-pws-8 --- Functions/Completion/__main_complete | 48 ++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 Functions/Completion/__main_complete (limited to 'Functions/Completion/__main_complete') diff --git a/Functions/Completion/__main_complete b/Functions/Completion/__main_complete new file mode 100644 index 000000000..48f2338de --- /dev/null +++ b/Functions/Completion/__main_complete @@ -0,0 +1,48 @@ +#helper + +# 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' +# The `|| return 1' is used throughout: if a function producing matches +# returns non-zero this is interpreted as `do not try to produce more matches' +# (this is the replacement for `compctl -t'). + +comp="$comps[--first--]" +[[ -z "$comp" ]] || callcomplete comps --first-- "$@" || return 1 + +# For arguments we use the `__normal' function called via the convenience +# alias `compsub'. + +if [[ $CONTEXT == argument || $CONTEXT == command ]]; then + compsub +else + # Let's see if we have a special completion definition for the other + # possible contexts. + + comp='' + + case $CONTEXT in + redirect) name=--redirect--;; + math) name=--math--;; + subscript) name=--subscript--;; + value) name=--value--;; + condition) name=--condition--;; + esac + + # If not, we use default completion, if any. + + comp="$comps[$name]" + if [[ -z "$comp" ]]; then + name=--default-- + comp="$comps[--default--]" + fi + [[ -z "$comp" ]] || callcomplete comps "$name" "$@" || return 1 +fi -- cgit 1.4.1