]> granicus.if.org Git - vim/commitdiff
patch 9.0.1299: change for triggering incsearch not sufficiently tested v9.0.1299
authorzeertzjq <zeertzjq@outlook.com>
Sat, 11 Feb 2023 10:34:07 +0000 (10:34 +0000)
committerBram Moolenaar <Bram@vim.org>
Sat, 11 Feb 2023 10:34:07 +0000 (10:34 +0000)
Problem:    Change for triggering incsearch not sufficiently tested.
Solution:   Add a test case.  Simplify the code. (closes #11971)

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

index d40f923382c3a9a77868feee4ecbc77eac2ce29b..b2bf4ed3296bea75bccc87b9a671b88556f11092 100644 (file)
@@ -1253,9 +1253,9 @@ cmdline_insert_reg(int *gotesc UNUSED)
     // remove the double quote
     redrawcmd();
 
-    // The text has been stuffed, the command line didn't change yet, but it
-    // will change soon.  The caller must take care of it.
-    return literally ? CMDLINE_NOT_CHANGED : CMDLINE_CHANGED;
+    // With "literally": the command line has already changed.
+    // Else: the text has been stuffed, but the command line didn't change yet.
+    return literally ? CMDLINE_CHANGED : CMDLINE_NOT_CHANGED;
 }
 
 /*
@@ -2086,10 +2086,8 @@ getcmdline_int(
                res = cmdline_insert_reg(&gotesc);
                if (res == GOTO_NORMAL_MODE)
                    goto returncmd;
-#ifdef FEAT_SEARCH_EXTRA
-               if (res == CMDLINE_NOT_CHANGED)
-                   is_state.incsearch_postponed = TRUE;
-#endif
+               if (res == CMDLINE_CHANGED)
+                   goto cmdline_changed;
                goto cmdline_not_changed;
 
        case Ctrl_D:
index c11f6ff306e4d3d25345777cf4fc9879d7b2aa2d..f2a763add59e302ca6224f0aef924ed2f84bed84 100644 (file)
@@ -1909,17 +1909,15 @@ func Test_Cmdline()
   call assert_equal(':', g:entered)
   au! CmdlineChanged
 
+  autocmd CmdlineChanged : let g:log += [getcmdline()]
+
   let g:log = []
   cnoremap <F1> <Cmd>call setcmdline('ls')<CR>
-  autocmd CmdlineChanged : let g:log += [getcmdline()]
   call feedkeys(":\<F1>", 'xt')
   call assert_equal(['ls'], g:log)
-  unlet g:log
-  au! CmdlineChanged
   cunmap <F1>
 
   let g:log = []
-  autocmd CmdlineChanged : let g:log += [getcmdline()]
   call feedkeys(":sign \<Tab>\<Tab>\<C-N>\<C-P>\<S-Tab>\<S-Tab>\<Esc>", 'xt')
   call assert_equal([
         \ 's',
@@ -1950,6 +1948,22 @@ func Test_Cmdline()
         \ 'sign unplace',
         \ ], g:log)
   set wildmenu& wildoptions&
+
+  let g:log = []
+  let @r = 'abc'
+  call feedkeys(":0\<C-R>r1\<C-R>\<C-O>r2\<C-R>\<C-R>r3\<Esc>", 'xt')
+  call assert_equal([
+        \ '0',
+        \ '0a',
+        \ '0ab',
+        \ '0abc',
+        \ '0abc1',
+        \ '0abc1abc',
+        \ '0abc1abc2',
+        \ '0abc1abc2abc',
+        \ '0abc1abc2abc3',
+        \ ], g:log)
+
   unlet g:log
   au! CmdlineChanged
 
index f50677b4052586fcf1e0de46e791d3b24ddafd36..9e8e975a967f3be50a74ec3fe889e73fd57d7c0e 100644 (file)
@@ -695,6 +695,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1299,
 /**/
     1298,
 /**/