diff options
author | Marlon Richert <marlon.richert@gmail.com> | 2023-06-22 13:13:09 -0700 |
---|---|---|
committer | Bart Schaefer <schaefer@zsh.org> | 2023-06-22 13:13:09 -0700 |
commit | 6c993144bde84e145800ff007b1c698a867c7196 (patch) | |
tree | 5203c02963065cba616647cc6de504e07e165691 /Test/comptest | |
parent | 4f6a1b3717bb84b8243b13c4ec9171945893c934 (diff) | |
download | zsh-6c993144bde84e145800ff007b1c698a867c7196.tar.gz zsh-6c993144bde84e145800ff007b1c698a867c7196.tar.xz zsh-6c993144bde84e145800ff007b1c698a867c7196.zip |
51860: simplify suffix handling in _prefix to remove less accurate hack
This solves the following problems in the _prefix completer: - The old code had logic for dealing with compstate[unambiguous] that was unnecessary. It works fine without it. - Because of this logic, if a widget set compstate[insert]=1 after calling _main_complete, an `x` was left after the completion on the command line. - If the same widget also set `compstate[to_end]=`, then instead, the last character of the inserted completion would be treated as an autoremovable suffix, with the actual suffix being inserted to the line as a normal character. - After inserting a completion, the cursor would move to the end of the entire current word on the command, not the end of word that was inserted. This is not what you want with _prefix, since you are trying to complete a word _before_ the one on the command line, after which you usually want to insert a separator, such as a space or slash, before the next word.
Diffstat (limited to 'Test/comptest')
-rw-r--r-- | Test/comptest | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/Test/comptest b/Test/comptest index 79c69979a..39ad14768 100644 --- a/Test/comptest +++ b/Test/comptest @@ -40,7 +40,7 @@ KEYTIMEOUT=1 setopt zle autoload -U compinit compinit -u -zstyle ":completion:*" completer _expand _complete _ignored +zstyle ":completion:*" completer _expand _complete _prefix _ignored zstyle ":completion:*:default" list-colors "no=<NO>" "fi=<FI>" "di=<DI>" "ln=<LN>" "pi=<PI>" "so=<SO>" "bd=<BD>" "cd=<CD>" "ex=<EX>" "mi=<MI>" "tc=<TC>" "sp=<SP>" "lc=<LC>" "ec=<EC>\n" "rc=<RC>" zstyle ":completion:*" group-name "" zstyle ":completion:*:messages" format "<MESSAGE>%d</MESSAGE> @@ -51,6 +51,12 @@ zstyle ":completion:*:options" verbose yes zstyle ":completion:*:values" verbose yes setopt noalwayslastprompt listrowsfirst completeinword zmodload zsh/complist +zle -C complete-word complete-word complete-word-with-postfunc +complete-word-with-postfunc() { + local +h -a comppostfuncs=( comptest-postfunc ) + _main_complete "$@" +} +comptest-postfunc() {} complete-word-with-report () { print -lr "<WIDGET><complete-word>" zle complete-word |