neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

commit aa33ea86e1ce37e0d8bf4d52630c446aafcced6c
parent 5a7586a10960c3df1e4c3f326c1f9ff6d734fb04
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Thu, 11 Sep 2025 07:18:00 +0800

vim-patch:9.1.1752: tests: need another test for v9.1.1750 behaviour

Problem:  tests: No test when deleting text after autocompletion with preinsert
          did complete an entry
Solution: Verify, that after deletion autocompletion does not reinsert
          the deleted text. Note: the actual issue was fixed with v9.1.1750.
          (Girish Palya)

Pre v9.1.1750 behaviour:
When autocomplete is enabled with *preinsert*, deleting text after selecting a
longer match could cause unintended reinsertion, e.g.:

- Matches available: "foo" and "foobar".
- User selects "foobar" with Ctrl-N
- User deletes characters back to "foo".
- Autocomplete then incorrectly re-inserts "bar", preventing deletion past "foo".

v9.1.1750 removes the unwanted reinsertion so text can be deleted correctly.

closes: vim/vim#18259

https://github.com/vim/vim/commit/fe0061c6093aac817ed6061b75868a97a116d9c0

Co-authored-by: Girish Palya <girishji@gmail.com>

Diffstat:
Mtest/old/testdir/test_ins_complete.vim | 6++++++
1 file changed, 6 insertions(+), 0 deletions(-)

diff --git a/test/old/testdir/test_ins_complete.vim b/test/old/testdir/test_ins_complete.vim @@ -5755,6 +5755,12 @@ func Test_autocomplete_completeopt_preinsert() call feedkeys($"cwch\<C-N>\<Esc>n.n.", 'tx') call assert_equal(repeat(['changed'], 3), getline(1, 3)) + " Select a match and delete up to text equal to another match + %delete + call setline(1, ["foobar", "foo"]) + call feedkeys("Go\<ESC>", 'tx') + call DoTest("f\<C-N>\<C-N>\<BS>\<BS>\<BS>\<BS>", 'foo', 3) + %delete _ let &l:undolevels = &l:undolevels normal! ifoo