From 66f318d5f45d6318864ac3d368ea2921defcbbec Mon Sep 17 00:00:00 2001 From: Tanaka Akira Date: Fri, 4 Feb 2000 16:11:15 +0000 Subject: zsh-workers/9569 --- Completion/Core/_main_complete | 5 +++++ Completion/Core/_prefix | 23 +++++++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 Completion/Core/_prefix (limited to 'Completion') diff --git a/Completion/Core/_main_complete b/Completion/Core/_main_complete index ebe256588..a6714cea6 100644 --- a/Completion/Core/_main_complete +++ b/Completion/Core/_main_complete @@ -20,6 +20,7 @@ setopt localoptions nullglob rcexpandparam extendedglob unsetopt markdirs globsubst shwordsplit nounset ksharrays local comp post ret=1 _compskip _prio_num=1 format _comp_ignore \ + _completers _completers_left \ context state line opt_args val_args curcontext="$curcontext" \ _last_nmatches=-1 _last_menu_style _def_menu_style _menu_style sel \ _saved_exact="${compstate[exact]}" \ @@ -63,11 +64,15 @@ fi # And now just call the completer functions defined. +_completers=( "$@" ) +_completers_left=( "$@" ) + for comp; do if "$comp"; then ret=0 break; fi + shift 1 _completers_left done if (( $compstate[nmatches] )); then diff --git a/Completion/Core/_prefix b/Completion/Core/_prefix new file mode 100644 index 000000000..6306b4aa0 --- /dev/null +++ b/Completion/Core/_prefix @@ -0,0 +1,23 @@ +#autoload + +# Try to ignore the suffix. A bit like e-o-c-prefix. + +[[ -n "$SUFFIX" ]] || return 1 + +local curcontext="${curcontext/:[^:]#:/:prefix:}" comp i + +zstyle -a ":completion:${curcontext}:" completer comp || + comp=( "${(@)_completers[1,-${#_completers_left}-1][(R)_prefix,-1]}" ) + +if zstyle -t ":completion:${curcontext}:" add-space; then + ISUFFIX=" $SUFFIX" +else + ISUFFIX="$SUFFIX" +fi +SUFFIX='' + +for i in "$comp[@]"; do + [[ "$i" != _prefix ]] && "$i" && return 0 +done + +return 1 -- cgit 1.4.1