summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2017-01-11 22:40:19 +0100
committerBram Moolenaar <Bram@vim.org>2017-01-11 22:40:19 +0100
commit1d669c233c97486555a34f7d3f069068d9ebdb63 (patch)
treea00db0e11c3e5aca8d89e68805549401e1090270
parentee142add229cbcd58bc76d59f23e02517df14379 (diff)
patch 8.0.0172: command line window does not workv8.0.0172
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)
-rw-r--r--src/ex_getln.c8
-rw-r--r--src/testdir/test_history.vim17
-rw-r--r--src/version.c2
3 files changed, 21 insertions, 6 deletions
diff --git a/src/ex_getln.c b/src/ex_getln.c
index 162e55590a..581c44492c 100644
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -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;
diff --git a/src/testdir/test_history.vim b/src/testdir/test_history.vim
index 243ede7517..ca31e3f06c 100644
--- a/src/testdir/test_history.vim
+++ b/src/testdir/test_history.vim
@@ -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
diff --git a/src/version.c b/src/version.c
index dfbbe1831c..a6bbf1b131 100644
--- a/src/version.c
+++ b/src/version.c
@@ -765,6 +765,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 172,
+/**/
171,
/**/
170,