From d35e5e4237ec578962d3d577bc5a4e4f6bf4abb2 Mon Sep 17 00:00:00 2001 From: Girish Palya Date: Sun, 28 Sep 2025 17:12:55 +0000 Subject: [PATCH] patch 9.1.1800: completion: strange behaviour with 'ac' completeopt=longest,preinsert Problem: completion: strange behaviour with 'ac' completeopt=longest,preinsert (zeertzjq) Solution: Let preinsert take precedence (Girish Palya) fixes: #18410 closes: #18428 Signed-off-by: Girish Palya Signed-off-by: Christian Brabandt --- src/insexpand.c | 3 ++- src/testdir/dumps/Test_autocompletedelay_7.dump | 4 ++-- src/testdir/test_ins_complete.vim | 12 +++++++++++- src/version.c | 2 ++ 4 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/insexpand.c b/src/insexpand.c index 2aabacd83a..35068cdae6 100644 --- a/src/insexpand.c +++ b/src/insexpand.c @@ -3100,7 +3100,8 @@ ins_compl_prep(int c) if (ctrl_x_mode_not_defined_yet() || (ctrl_x_mode_normal() && !compl_started)) { - compl_get_longest = (get_cot_flags() & COT_LONGEST) != 0; + compl_get_longest = (get_cot_flags() & COT_LONGEST) + && !ins_compl_has_autocomplete(); compl_used_match = TRUE; } diff --git a/src/testdir/dumps/Test_autocompletedelay_7.dump b/src/testdir/dumps/Test_autocompletedelay_7.dump index 08f4059c68..017156bd0d 100644 --- a/src/testdir/dumps/Test_autocompletedelay_7.dump +++ b/src/testdir/dumps/Test_autocompletedelay_7.dump @@ -2,9 +2,9 @@ |f|o@1|b|a|r| @68 |f|o@1|b|a|r|b|a|z| @65 |f|o@1> @71 -|f+0#0000001#ffd7ff255|o@1| @11| +0#4040ff13#ffffff0@59 +|f+0#0000001#e0e0e08|o@1| @11| +0#4040ff13#ffffff0@59 |f+0#0000001#ffd7ff255|o@1|b|a|r| @8| +0#4040ff13#ffffff0@59 |f+0#0000001#ffd7ff255|o@1|b|a|r|b|a|z| @5| +0#4040ff13#ffffff0@59 |~| @73 |~| @73 -|-+2#0000000&@1| |K|e|y|w|o|r|d| |c|o|m|p|l|e|t|i|o|n| |(|^|N|^|P|)| |B+0#e000002&|a|c|k| |a|t| |o|r|i|g|i|n|a|l| +0#0000000&@29 +|-+2#0000000&@1| |K|e|y|w|o|r|d| |c|o|m|p|l|e|t|i|o|n| |(|^|N|^|P|)| |m+0#00e0003&|a|t|c|h| |1| |o|f| |3| +0#0000000&@33 diff --git a/src/testdir/test_ins_complete.vim b/src/testdir/test_ins_complete.vim index 48623f26a7..e6abe98e4a 100644 --- a/src/testdir/test_ins_complete.vim +++ b/src/testdir/test_ins_complete.vim @@ -5721,7 +5721,7 @@ func Test_autocompletedelay() call VerifyScreenDump(buf, 'Test_autocompletedelay_6', {}) " During delay wait, user can open menu using CTRL_N completion - call term_sendkeys(buf, "\:set completeopt=menuone,longest\") + call term_sendkeys(buf, "\:set completeopt=menuone\") call term_sendkeys(buf, "Sf\") call VerifyScreenDump(buf, 'Test_autocompletedelay_7', {}) @@ -5871,6 +5871,16 @@ func Test_autocomplete_longest() call feedkeys("Go\", 'tx') call DoTest("f\\\\\\", 'foo', 3) + " Issue #18410: When both 'preinsert' and 'longest' are set, 'preinsert' + " takes precedence + %delete + set autocomplete completeopt+=longest,preinsert + call setline(1, ['foobar', 'foofoo', 'foobaz', '']) + call feedkeys("G", 'tx') + call DoTest("f", 'foobar', 2) + call assert_equal(1, g:preinserted) + + " Undo %delete _ let &l:undolevels = &l:undolevels normal! ifoo diff --git a/src/version.c b/src/version.c index 5c1424ed32..1faf29ad3c 100644 --- a/src/version.c +++ b/src/version.c @@ -729,6 +729,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1800, /**/ 1799, /**/