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:
Justin M. Keyes 2017-03-21 23:17:10 +01:00
parent b82e3358e0
commit 01bf78971c
2 changed files with 21 additions and 8 deletions

View File

@ -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;

View File

@ -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