mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
vim-patch:8.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 vim/vim#1370)
1d669c233c
This commit is contained in:
parent
b82e3358e0
commit
01bf78971c
@ -698,9 +698,7 @@ static int command_line_execute(VimState *state, int key)
|
|||||||
if (s->c == cedit_key || s->c == K_CMDWIN) {
|
if (s->c == cedit_key || s->c == K_CMDWIN) {
|
||||||
if (ex_normal_busy == 0 && got_int == false) {
|
if (ex_normal_busy == 0 && got_int == false) {
|
||||||
// Open a window to edit the command line (and history).
|
// Open a window to edit the command line (and history).
|
||||||
save_cmdline(&s->save_ccline);
|
|
||||||
s->c = ex_window();
|
s->c = ex_window();
|
||||||
restore_cmdline(&s->save_ccline);
|
|
||||||
s->some_key_typed = true;
|
s->some_key_typed = true;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -5229,10 +5227,8 @@ static int ex_window(void)
|
|||||||
invalidate_botline();
|
invalidate_botline();
|
||||||
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;
|
||||||
@ -5266,8 +5262,8 @@ static int ex_window(void)
|
|||||||
/* Restore KeyTyped in case it is modified by autocommands */
|
/* Restore KeyTyped in case it is modified by autocommands */
|
||||||
KeyTyped = save_KeyTyped;
|
KeyTyped = save_KeyTyped;
|
||||||
|
|
||||||
/* 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;
|
||||||
|
@ -63,3 +63,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
|
||||||
|
Loading…
Reference in New Issue
Block a user