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 (ex_normal_busy == 0 && got_int == false) {
|
||||
// Open a window to edit the command line (and history).
|
||||
save_cmdline(&s->save_ccline);
|
||||
s->c = ex_window();
|
||||
restore_cmdline(&s->save_ccline);
|
||||
s->some_key_typed = true;
|
||||
}
|
||||
} else {
|
||||
@ -5229,10 +5227,8 @@ static int ex_window(void)
|
||||
invalidate_botline();
|
||||
redraw_later(SOME_VALID);
|
||||
|
||||
/* Save the command line info, can be used recursively. */
|
||||
save_ccline = ccline;
|
||||
ccline.cmdbuff = NULL;
|
||||
ccline.cmdprompt = NULL;
|
||||
// Save the command line info, can be used recursively.
|
||||
save_cmdline(&save_ccline);
|
||||
|
||||
/* No Ex mode here! */
|
||||
exmode_active = 0;
|
||||
@ -5266,8 +5262,8 @@ static int ex_window(void)
|
||||
/* Restore KeyTyped in case it is modified by autocommands */
|
||||
KeyTyped = save_KeyTyped;
|
||||
|
||||
/* Restore the command line info. */
|
||||
ccline = save_ccline;
|
||||
// Restore the command line info.
|
||||
restore_cmdline(&save_ccline);
|
||||
cmdwin_type = 0;
|
||||
|
||||
exmode_active = save_exmode;
|
||||
|
@ -63,3 +63,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
|
||||
|
Loading…
Reference in New Issue
Block a user