]> granicus.if.org Git - vim/commitdiff
patch 8.2.2870: CmdlineChange event triggered twice for CTRL-R v8.2.2870
authorBram Moolenaar <Bram@vim.org>
Tue, 18 May 2021 19:38:45 +0000 (21:38 +0200)
committerBram Moolenaar <Bram@vim.org>
Tue, 18 May 2021 19:38:45 +0000 (21:38 +0200)
Problem:    CmdlineChange event triggered twice for CTRL-R.
Solution:   Return CMDLINE_NOT_CHANGED from cmdline_insert_reg().
            (closes #8219)

src/ex_getln.c
src/testdir/test_cmdline.vim
src/version.c

index 4ebc341109bebe7d44bc32b1d947c83cb2999eca..e7d71a510f34c25ea3249c066e379d3c0bfe3aa2 100644 (file)
@@ -1253,8 +1253,11 @@ cmdline_insert_reg(int *gotesc UNUSED)
        }
 #endif
     }
+    // remove the double quote
     redrawcmd();
-    return CMDLINE_CHANGED;
+
+    // The text has been stuffed, the command line didn't change yet.
+    return CMDLINE_NOT_CHANGED;
 }
 
 /*
index 5ed283f1fa24330d4db39a505a214938f8e99a51..bba7e725e96d147037cb344aebab108a51c19485 100644 (file)
@@ -1810,6 +1810,12 @@ func Test_cmd_map_cmdlineChanged()
   call feedkeys(":\<F1>\<CR>", 'xt')
   call assert_equal(['l', 'ls'], g:log)
 
+  let @b = 'b'
+  cnoremap <F1> a<C-R>b
+  let g:log = []
+  call feedkeys(":\<F1>\<CR>", 'xt')
+  call assert_equal(['a', 'ab'], g:log)
+
   unlet g:log
   cunmap <F1>
   augroup test
index 0b17d91af437ea9ebc833c35347cac8df0fae7db..edc95e56103ccd5a91d56c1b5f04cbc885131552 100644 (file)
@@ -750,6 +750,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    2870,
 /**/
     2869,
 /**/