mirror of
https://github.com/vim/vim.git
synced 2025-09-29 04:34:16 -04:00
patch 8.0.0172: command line window does not work
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)
This commit is contained in:
@@ -773,9 +773,7 @@ getcmdline(
|
|||||||
/*
|
/*
|
||||||
* Open a window to edit the command line (and history).
|
* Open a window to edit the command line (and history).
|
||||||
*/
|
*/
|
||||||
save_cmdline(&save_ccline);
|
|
||||||
c = ex_window();
|
c = ex_window();
|
||||||
restore_cmdline(&save_ccline);
|
|
||||||
some_key_typed = TRUE;
|
some_key_typed = TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -6904,9 +6902,7 @@ ex_window(void)
|
|||||||
redraw_later(SOME_VALID);
|
redraw_later(SOME_VALID);
|
||||||
|
|
||||||
/* Save the command line info, can be used recursively. */
|
/* Save the command line info, can be used recursively. */
|
||||||
save_ccline = ccline;
|
save_cmdline(&save_ccline);
|
||||||
ccline.cmdbuff = NULL;
|
|
||||||
ccline.cmdprompt = NULL;
|
|
||||||
|
|
||||||
/* No Ex mode here! */
|
/* No Ex mode here! */
|
||||||
exmode_active = 0;
|
exmode_active = 0;
|
||||||
@@ -6953,7 +6949,7 @@ ex_window(void)
|
|||||||
# endif
|
# endif
|
||||||
|
|
||||||
/* Restore the command line info. */
|
/* Restore the command line info. */
|
||||||
ccline = save_ccline;
|
restore_cmdline(&save_ccline);
|
||||||
cmdwin_type = 0;
|
cmdwin_type = 0;
|
||||||
|
|
||||||
exmode_active = save_exmode;
|
exmode_active = save_exmode;
|
||||||
|
@@ -87,3 +87,20 @@ function Test_History()
|
|||||||
call assert_equal(-1, histnr('abc'))
|
call assert_equal(-1, histnr('abc'))
|
||||||
call assert_fails('call histnr([])', 'E730:')
|
call assert_fails('call histnr([])', 'E730:')
|
||||||
endfunction
|
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
|
||||||
|
@@ -764,6 +764,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
172,
|
||||||
/**/
|
/**/
|
||||||
171,
|
171,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user