From bfb4eea7869b0118221cd145a774d74191ce6130 Mon Sep 17 00:00:00 2001 From: glepnir Date: Fri, 31 Jan 2025 15:28:29 +0100 Subject: [PATCH] patch 9.1.1059: completion: input text deleted with preinsert when adding leader Problem: completion: input text deleted with preinsert when adding leader Solution: remove compl_length and check the ptr for being equal to pattern when preinsert is active (glepnir) closes: #16545 Signed-off-by: glepnir Signed-off-by: Christian Brabandt --- src/insexpand.c | 4 ++-- src/testdir/test_ins_complete.vim | 4 ++++ src/version.c | 2 ++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/insexpand.c b/src/insexpand.c index 63b779dd18..df757ce9b8 100644 --- a/src/insexpand.c +++ b/src/insexpand.c @@ -4094,7 +4094,7 @@ get_next_default_completion(ins_compl_next_state_T *st, pos_T *start_pos) if (!in_fuzzy) ptr = ins_compl_get_next_word_or_line(st->ins_buf, st->cur_match_pos, &len, &cont_s_ipos); - if (ptr == NULL) + if (ptr == NULL || (ins_compl_has_preinsert() && STRCMP(ptr, compl_pattern.string) == 0)) continue; if (ins_compl_add_infercase(ptr, len, p_ic, @@ -4342,7 +4342,7 @@ ins_compl_delete(void) int has_preinsert = ins_compl_preinsert_effect(); if (has_preinsert) { - col = compl_col + ins_compl_leader_len() - compl_length; + col += ins_compl_leader_len(); curwin->w_cursor.col = compl_ins_end_col; } diff --git a/src/testdir/test_ins_complete.vim b/src/testdir/test_ins_complete.vim index d0f90c8810..49e44653a2 100644 --- a/src/testdir/test_ins_complete.vim +++ b/src/testdir/test_ins_complete.vim @@ -3112,6 +3112,10 @@ function Test_completeopt_preinsert() call assert_equal("hello hero", getline('.')) call assert_equal(2, col('.')) + call feedkeys("Shello hero\h\\er", 'tx') + call assert_equal("hero", getline('.')) + call assert_equal(3, col('.')) + " can not work with fuzzy set cot+=fuzzy call feedkeys("S\\", 'tx') diff --git a/src/version.c b/src/version.c index e69088d3c2..209baf1d8a 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1059, /**/ 1058, /**/ -- 2.47.2