]> granicus.if.org Git - vim/commitdiff
patch 8.0.0172: command line window does not work v8.0.0172
authorBram Moolenaar <Bram@vim.org>
Wed, 11 Jan 2017 21:40:19 +0000 (22:40 +0100)
committerBram Moolenaar <Bram@vim.org>
Wed, 11 Jan 2017 21:40:19 +0000 (22:40 +0100)
Problem:    The command selected in the command line window is not executed.
            (Andrey Starodubtsev)
Solution:   Save and restore the command line at a lower level. (closes #1370)

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

index 162e55590a549636e410c53836f301ce9fed830c..581c44492cb96a00b8b99494428a10aff5f7d9a0 100644 (file)
@@ -773,9 +773,7 @@ getcmdline(
                /*
                 * Open a window to edit the command line (and history).
                 */
-               save_cmdline(&save_ccline);
                c = ex_window();
-               restore_cmdline(&save_ccline);
                some_key_typed = TRUE;
            }
        }
@@ -6904,9 +6902,7 @@ ex_window(void)
     redraw_later(SOME_VALID);
 
     /* Save the command line info, can be used recursively. */
-    save_ccline = ccline;
-    ccline.cmdbuff = NULL;
-    ccline.cmdprompt = NULL;
+    save_cmdline(&save_ccline);
 
     /* No Ex mode here! */
     exmode_active = 0;
@@ -6953,7 +6949,7 @@ ex_window(void)
 # endif
 
     /* Restore the command line info. */
-    ccline = save_ccline;
+    restore_cmdline(&save_ccline);
     cmdwin_type = 0;
 
     exmode_active = save_exmode;
index 243ede7517165f513e351b6a2ff4368bd42cd6f3..ca31e3f06c7319d8b2625cadd1f21e2f19213a6a 100644 (file)
@@ -87,3 +87,20 @@ function Test_History()
   call assert_equal(-1, histnr('abc'))
   call assert_fails('call histnr([])', 'E730:')
 endfunction
+
+function Test_Search_history_window()
+  new
+  call setline(1, ['a', 'b', 'a', 'b'])
+  1
+  call feedkeys("/a\<CR>", 'xt')
+  call assert_equal('a', getline('.'))
+  1
+  call feedkeys("/b\<CR>", 'xt')
+  call assert_equal('b', getline('.'))
+  1
+  " select the previous /a command
+  call feedkeys("q/kk\<CR>", 'x!')
+  call assert_equal('a', getline('.'))
+  call assert_equal('a', @/)
+  bwipe!
+endfunc
index dfbbe1831c29bd8463d96ffcd7de4c8c9916d6b1..a6bbf1b131b22207f48d157eca5640eee17ff48d 100644 (file)
@@ -764,6 +764,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    172,
 /**/
     171,
 /**/