Mercurial > vim
changeset 17411:9c4ddc78df74 v8.1.1704
patch 8.1.1704: C-R C-W does not work after C-G when using 'incsearch'
commit https://github.com/vim/vim/commit/69a5b867940d25f68a782de5c1165d65b51fcafa
Author: Bram Moolenaar <Bram@vim.org>
Date: Tue Jul 16 21:38:51 2019 +0200
patch 8.1.1704: C-R C-W does not work after C-G when using 'incsearch'
Problem: C-R C-W does not work after C-G when using 'incsearch'.
Solution: Put cursor at end of the match. (Yasuhiro Matsumoto, closes https://github.com/vim/vim/issues/4664)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Tue, 16 Jul 2019 21:45:05 +0200 |
parents | 5f5c552c1acb |
children | 6ab542e33829 |
files | src/ex_getln.c src/testdir/test_search.vim src/version.c |
diffstat | 3 files changed, 10 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/ex_getln.c +++ b/src/ex_getln.c @@ -713,6 +713,7 @@ may_adjust_incsearch_highlighting( save_viewstate(&is_state->old_viewstate); update_screen(NOT_VALID); redrawcmdline(); + curwin->w_cursor = is_state->match_end; } else vim_beep(BO_ERROR);
--- a/src/testdir/test_search.vim +++ b/src/testdir/test_search.vim @@ -240,6 +240,10 @@ func Test_search_cmdline2() " go to previous match (on line 2) call feedkeys("/the\<C-G>\<C-G>\<C-G>\<C-T>\<C-T>\<C-T>\<cr>", 'tx') call assert_equal(' 2 these', getline('.')) + 1 + " go to previous match (on line 2) + call feedkeys("/the\<C-G>\<C-R>\<C-W>\<cr>", 'tx') + call assert_equal('theother', @/) " Test 2: keep the view, " after deleting a character from the search cmd @@ -251,7 +255,7 @@ func Test_search_cmdline2() call assert_equal({'lnum': 10, 'leftcol': 0, 'col': 4, 'topfill': 0, 'topline': 6, 'coladd': 0, 'skipcol': 0, 'curswant': 4}, winsaveview()) " remove all history entries - for i in range(10) + for i in range(11) call histdel('/') endfor @@ -477,14 +481,14 @@ func Test_search_cmdline5() " 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']) + 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('.')) + call assert_equal(' 1 the first', getline('.')) " clean up set noincsearch bw!