diff options
author | Bram Moolenaar <Bram@vim.org> | 2017-10-22 14:44:17 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2017-10-22 14:44:17 +0200 |
commit | f8e8c0643b1cd97db11912bc4f773e1328a0da02 (patch) | |
tree | ce6ffc0333bd70a60db9a5a1402582bcf65aadcf /src | |
parent | 53f0c962394dc6bc66d5b0762af9434e672d1b25 (diff) |
patch 8.0.1210: CTRL-G and CTRL-T are ignored with typeaheadv8.0.1210
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 #2233)
Diffstat (limited to 'src')
-rw-r--r-- | src/ex_getln.c | 30 | ||||
-rw-r--r-- | src/testdir/test_search.vim | 20 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 39 insertions, 13 deletions
diff --git a/src/ex_getln.c b/src/ex_getln.c index ceeeaf89f0..6876a215a8 100644 --- a/src/ex_getln.c +++ b/src/ex_getln.c @@ -159,6 +159,20 @@ trigger_cmd_autocmd(int typechar, int evt) #endif /* + * Abandon the command line. + */ + static void +abandon_cmdline(void) +{ + vim_free(ccline.cmdbuff); + ccline.cmdbuff = NULL; + if (msg_scrolled == 0) + compute_cmdrow(); + MSG(""); + redraw_cmdline = TRUE; +} + +/* * getcmdline() - accept a command line starting with firstc. * * firstc == ':' get ":" command line. @@ -1702,11 +1716,8 @@ getcmdline( if (p_is && !cmd_silent && (firstc == '/' || firstc == '?')) { pos_T t; - int search_flags = SEARCH_KEEP + SEARCH_NOOF - + SEARCH_PEEK; + int search_flags = SEARCH_KEEP + SEARCH_NOOF; - if (char_avail()) - continue; cursor_off(); out_flush(); if (c == Ctrl_G) @@ -2083,15 +2094,8 @@ returncmd: } #endif - if (gotesc) /* abandon command line */ - { - vim_free(ccline.cmdbuff); - ccline.cmdbuff = NULL; - if (msg_scrolled == 0) - compute_cmdrow(); - MSG(""); - redraw_cmdline = TRUE; - } + if (gotesc) + abandon_cmdline(); } /* diff --git a/src/testdir/test_search.vim b/src/testdir/test_search.vim index e6a46ff145..19e631e699 100644 --- a/src/testdir/test_search.vim +++ b/src/testdir/test_search.vim @@ -356,6 +356,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! diff --git a/src/version.c b/src/version.c index b0eefff021..6ab48f1798 100644 --- a/src/version.c +++ b/src/version.c @@ -762,6 +762,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1210, +/**/ 1209, /**/ 1208, |