patch 9.1.1059: completion: input text deleted with preinsert when adding leader
Commit: https://github.com/vim/vim/commit/bfb4eea7869b0118221cd145a774d74191ce6130 Author: glepnir <glephun...@gmail.com> Date: Fri Jan 31 15:28:29 2025 +0100 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 <glephun...@gmail.com> Signed-off-by: Christian Brabandt <c...@256bit.org> diff --git a/src/insexpand.c b/src/insexpand.c index 63b779dd1..df757ce9b 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 d0f90c881..49e44653a 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\<CR>h\<C-X>\<C-N>er", 'tx') + call assert_equal("hero", getline('.')) + call assert_equal(3, col('.')) + " can not work with fuzzy set cot+=fuzzy call feedkeys("S\<C-X>\<C-O>", 'tx') diff --git a/src/version.c b/src/version.c index e69088d3c..209baf1d8 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, /**/ -- -- You received this message from the "vim_dev" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php --- You received this message because you are subscribed to the Google Groups "vim_dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+unsubscr...@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/vim_dev/E1tdsGU-00EBnl-LO%40256bit.org.