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/Y01completion.ztst | |
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/Y01completion.ztst')
-rw-r--r-- | Test/Y01completion.ztst | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/Test/Y01completion.ztst b/Test/Y01completion.ztst index fb369ea69..fc18b19a4 100644 --- a/Test/Y01completion.ztst +++ b/Test/Y01completion.ztst @@ -35,6 +35,54 @@ >line: {: dir1/}{} >line: {: dir2/}{} + comptest $': d\t\t\t\t\t \t' +0:unambiguous prefix and autoremovable suffix +>line: {: dir}{} +>line: {: dir}{} +>DESCRIPTION:{file} +>DI:{dir1} +>DI:{dir2} +>line: {: dir1/}{} +>line: {: dir2/}{} +>line: {: dir1/}{} +>line: {: dir1 }{} +>DESCRIPTION:{file} +>DI:{dir1} +>DI:{dir2} +>FI:{file1} +>FI:{file2} + + comptest $': suf\ebd\t\t\t\t\t \t' +0:unambiguous prefix and autoremovable suffix with _prefix completer +>line: {: dir}{suf} +>line: {: dir}{suf} +>DESCRIPTION:{file} +>DI:{dir1} +>DI:{dir2} +>line: {: dir1/}{suf} +>line: {: dir2/}{suf} +>line: {: dir1/}{suf} +>line: {: dir1 }{suf} +>DESCRIPTION:{file} +>DI:{dir1} +>DI:{dir2} +>FI:{file1} +>FI:{file2} +F:regression test workers/51641 + + comptesteval 'comptest-postfunc() { compstate[insert]=1 compstate[list]= }' + comptest $': \t \t' +0:compstate[insert]=1 compstate[list]= +>line: {: dir1/}{} +>line: {: dir1 dir1/}{} + + comptest $': suf\eb\t \t' +0:compstate[insert]=1 compstate[list]= with _prefix completer +>line: {: dir1/}{suf} +>line: {: dir1 dir1/}{suf} +F:regression test workers/51641 + + comptesteval 'comptest-postfunc() {}' comptest $': *\t\t\t\t\t\t' 0:_expand shows file types >line: {: dir1/}{} |