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.

Raspunde prin e-mail lui