]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 9.2.0040: completion: preinsert wrong with register completion v9.2.0040
authorGirish Palya <girishji@gmail.com>
Sat, 21 Feb 2026 10:56:26 +0000 (10:56 +0000)
committerChristian Brabandt <cb@256bit.org>
Sat, 21 Feb 2026 10:56:26 +0000 (10:56 +0000)
Problem:  completion: preinsert wrong with register completion
Solution: Remove preinserted text during register content insertion
          (Girish Palya).

fixes:  #19329
closes: #19474

Signed-off-by: Girish Palya <girishji@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
src/register.c
src/testdir/test_ins_complete.vim
src/version.c

index 2cc840dd58c67b10469d557d42faf77fb5b1bdf6..1f1739160fa5ec5be777c6b3d2b40c2af531e940 100644 (file)
@@ -1616,6 +1616,9 @@ do_put(
        (void)may_get_selection(regname);
 #endif
 
+    // Remove any preinserted text (issue #19329)
+    if (ins_compl_preinsert_effect())
+       ins_compl_delete();
 
     curbuf->b_op_start = curwin->w_cursor;     // default for '[ mark
     curbuf->b_op_end = curwin->w_cursor;       // default for '] mark
index 7e92bac69edf113b3faa6563200d8ed5260c859f..2796379c9191b2a7b5c4847212c06e3690f4b7f0 100644 (file)
@@ -6265,4 +6265,26 @@ func Test_autocomplete_preinsert_null_leader()
   delfunc GetState
 endfunc
 
+" Issue #19329: When register contents are inserted, remove preinserted text
+func Test_ins_register_preinsert_autocomplete()
+  func TestOmni(findstart, base)
+    if a:findstart
+      return col(".") - 1
+    endif
+    return ["foo", "foobar"]
+  endfunc
+
+  call test_override("char_avail", 1)
+  new
+  set omnifunc=TestOmni complete^=o
+  set completeopt=preinsert autocomplete
+
+  call feedkeys("ifoo \<C-R>\<C-P>=\"xyz\"\<CR>\<Esc>", 'tx')
+  call assert_equal("foo xyz", getline('.'))
+  bw!
+  set omnifunc& complete& completeopt& autocomplete&
+  call test_override("char_avail", 0)
+  delfunc TestOmni
+endfunc
+
 " vim: shiftwidth=2 sts=2 expandtab nofoldenable
index 336ac8894fb6daca4235a50c7b196e9a87c127e4..ea286f11b24eea62a141671e291b19ac4d777c97 100644 (file)
@@ -734,6 +734,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    40,
 /**/
     39,
 /**/