blob: 9d14478bd0cfa28348b611b993c4d13dda5bb68c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
#!/bin/zsh
zmodload -F zsh/terminfo p:terminfo
local -P key_name=
case $KEYS in
( $'\t' ) key_name=tab ;;
( $terminfo[kcbt] ) key_name=shift-tab ;;
esac
() {
local -a match=() mbegin=() mend=() # `zstyle` for some reason assigns these.
local +h curcontext=${curcontext:-${WIDGET}:::}
local +h -a comppostfuncs=( .autocomplete.complete-word.post "$comppostfuncs[@]" )
if [[ -z $compstate[old_list] ]] || [[ $WIDGET == *menu-* && -v _autocomplete__partial_list ]] ||
( builtin zstyle -t ":autocomplete:${key_name}:" insert-unambiguous &&
[[ -n $_autocomplete__unambiguous ]] ); then
_main_complete
else
compstate[old_list]=keep
[[ $key_name == shift-tab && $_lastcomp[tags] == *all-matches ]] &&
compstate[insert]=all
_main_complete -
fi
}
[[ _lastcomp[nmatches] -gt 0 && -n $compstate[insert] ]] &&
unset curcontext
|