diff options
author | Justin M. Keyes <justinkz@gmail.com> | 2018-02-02 23:26:16 +0100 |
---|---|---|
committer | Justin M. Keyes <justinkz@gmail.com> | 2018-02-11 15:29:19 +0100 |
commit | cebf31cf705e32ed3b3ac2202884ab6b360f6c52 (patch) | |
tree | 6b6337b269a47096db41eadf5365c2b42f20045c /src | |
parent | 2de447b60c04fcaad3d762851c512b2545ea6bad (diff) | |
download | rneovim-cebf31cf705e32ed3b3ac2202884ab6b360f6c52.tar.gz rneovim-cebf31cf705e32ed3b3ac2202884ab6b360f6c52.tar.bz2 rneovim-cebf31cf705e32ed3b3ac2202884ab6b360f6c52.zip |
vim-patch:8.0.1210: CTRL-G and CTRL-T are ignored with typeahead
Problem: When typing a search pattern CTRL-G and CTRL-T are ignored when
there is typeahead.
Solution: Don't pass SEARCH_PEEK and don't call char_avail(). (haya14busa,
closes vim/vim#2233)
https://github.com/vim/vim/commit/f8e8c0643b1cd97db11912bc4f773e1328a0da02
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/ex_getln.c | 25 | ||||
-rw-r--r-- | src/nvim/testdir/test_search.vim | 20 |
2 files changed, 34 insertions, 11 deletions
diff --git a/src/nvim/ex_getln.c b/src/nvim/ex_getln.c index c99ae687bb..6b13a57980 100644 --- a/src/nvim/ex_getln.c +++ b/src/nvim/ex_getln.c @@ -443,14 +443,8 @@ static uint8_t *command_line_enter(int firstc, long count, int indent) } } - if (s->gotesc) { // abandon command line - xfree(ccline.cmdbuff); - ccline.cmdbuff = NULL; - if (msg_scrolled == 0) { - compute_cmdrow(); - } - MSG(""); - redraw_cmdline = true; + if (s->gotesc) { + abandon_cmdline(); } } @@ -1680,9 +1674,6 @@ static int command_line_handle_key(CommandLineState *s) case Ctrl_G: // next match case Ctrl_T: // previous match if (p_is && !cmd_silent && (s->firstc == '/' || s->firstc == '?')) { - if (char_avail()) { - return 1; - } if (ccline.cmdlen != 0) { command_line_next_incsearch(s, s->c == Ctrl_G); } @@ -1948,6 +1939,18 @@ static int command_line_changed(CommandLineState *s) return 1; } +/// Abandon the command line. +static void abandon_cmdline(void) +{ + xfree(ccline.cmdbuff); + ccline.cmdbuff = NULL; + if (msg_scrolled == 0) { + compute_cmdrow(); + } + MSG(""); + redraw_cmdline = true; +} + /* * getcmdline() - accept a command line starting with firstc. * diff --git a/src/nvim/testdir/test_search.vim b/src/nvim/testdir/test_search.vim index 54b44bebc8..ffcc758055 100644 --- a/src/nvim/testdir/test_search.vim +++ b/src/nvim/testdir/test_search.vim @@ -364,6 +364,26 @@ func Test_search_cmdline4() bw! endfunc +func Test_search_cmdline5() + if !exists('+incsearch') + return + endif + " Do not call test_override("char_avail", 1) so that <C-g> and <C-t> work + " regardless char_avail. + new + call setline(1, [' 1 the first', ' 2 the second', ' 3 the third']) + set incsearch + 1 + call feedkeys("/the\<c-g>\<c-g>\<cr>", 'tx') + call assert_equal(' 3 the third', getline('.')) + $ + call feedkeys("?the\<c-t>\<c-t>\<c-t>\<cr>", 'tx') + call assert_equal(' 2 the second', getline('.')) + " clean up + set noincsearch + bw! +endfunc + " Tests for regexp with various magic settings func Test_search_regexp() enew! |