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 | 51813: differentiate empty $2 from omitted $2 in version comparisons (diff) | |
| download | zsh-6c993144bde84e145800ff007b1c698a867c7196.tar zsh-6c993144bde84e145800ff007b1c698a867c7196.tar.gz zsh-6c993144bde84e145800ff007b1c698a867c7196.tar.bz2 zsh-6c993144bde84e145800ff007b1c698a867c7196.tar.lz zsh-6c993144bde84e145800ff007b1c698a867c7196.tar.xz zsh-6c993144bde84e145800ff007b1c698a867c7196.tar.zst 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 |
