From f7d2e37e36dafd3a45d343c771d2ff53f6a4b875 Mon Sep 17 00:00:00 2001 From: Aufar Gilbran Date: Wed, 19 Aug 2020 00:51:47 +0800 Subject: [PATCH] vim-patch:8.1.0399: 'hlsearch' highlight remains in other window Problem: 'hlsearch' highlight remains in other window after cancelling command. Solution: Redraw all windows. Also remove unnecessary delays. (closes vim/vim#3437) https://github.com/vim/vim/commit/65985ac998713dfe0f0ff1dd49c5e3e8f17f4870 --- src/nvim/ex_getln.c | 6 +++--- src/nvim/testdir/test_search.vim | 26 +++++++++----------------- 2 files changed, 12 insertions(+), 20 deletions(-) diff --git a/src/nvim/ex_getln.c b/src/nvim/ex_getln.c index 960b7cf03f..6ef8a9b5bf 100644 --- a/src/nvim/ex_getln.c +++ b/src/nvim/ex_getln.c @@ -529,7 +529,8 @@ static void may_do_incsearch_highlighting(int firstc, long count, if (!use_last_pat) { next_char = ccline.cmdbuff[skiplen + patlen]; ccline.cmdbuff[skiplen + patlen] = NUL; - if (empty_pattern(ccline.cmdbuff)) { + if (empty_pattern(ccline.cmdbuff) && !no_hlsearch) { + redraw_all_later(SOME_VALID); set_no_hlsearch(true); } ccline.cmdbuff[skiplen + patlen] = next_char; @@ -624,10 +625,9 @@ static void finish_incsearch_highlighting(int gotesc, incsearch_state_T *s, p_magic = s->magic_save; validate_cursor(); // needed for TAB + redraw_all_later(SOME_VALID); if (call_update_screen) { update_screen(SOME_VALID); - } else { - redraw_all_later(SOME_VALID); } } } diff --git a/src/nvim/testdir/test_search.vim b/src/nvim/testdir/test_search.vim index ec4c15cd11..767cf99be3 100644 --- a/src/nvim/testdir/test_search.vim +++ b/src/nvim/testdir/test_search.vim @@ -639,7 +639,6 @@ func Test_incsearch_substitute_dump() call term_sendkeys(buf, 'o') sleep 100m call term_sendkeys(buf, 'o') - sleep 100m call VerifyScreenDump(buf, 'Test_incsearch_substitute_01', {}) call term_sendkeys(buf, "\") @@ -647,30 +646,25 @@ func Test_incsearch_substitute_dump() call term_sendkeys(buf, "/foo\") sleep 100m call term_sendkeys(buf, ':.,.+2s//') - sleep 100m call VerifyScreenDump(buf, 'Test_incsearch_substitute_02', {}) " Deleting last slash should remove the match. call term_sendkeys(buf, "\") - sleep 100m call VerifyScreenDump(buf, 'Test_incsearch_substitute_03', {}) call term_sendkeys(buf, "\") " Reverse range is accepted call term_sendkeys(buf, ':5,2s/foo') - sleep 100m call VerifyScreenDump(buf, 'Test_incsearch_substitute_04', {}) call term_sendkeys(buf, "\") " White space after the command is skipped call term_sendkeys(buf, ':2,3sub /fo') - sleep 100m call VerifyScreenDump(buf, 'Test_incsearch_substitute_05', {}) call term_sendkeys(buf, "\") " Command modifiers are skipped call term_sendkeys(buf, ':above below browse botr confirm keepmar keepalt keeppat keepjum filter xxx hide lockm leftabove noau noswap rightbel sandbox silent silent! $tab top unsil vert verbose 4,5s/fo.') - sleep 100m call VerifyScreenDump(buf, 'Test_incsearch_substitute_06', {}) call term_sendkeys(buf, "\") @@ -678,13 +672,11 @@ func Test_incsearch_substitute_dump() call term_sendkeys(buf, ":set cursorline\") call term_sendkeys(buf, 'G9G') call term_sendkeys(buf, ':9,11s/bar') - sleep 100m call VerifyScreenDump(buf, 'Test_incsearch_substitute_07', {}) call term_sendkeys(buf, "\") " Cursorline highlighting at cursor when no match call term_sendkeys(buf, ':9,10s/bar') - sleep 100m call VerifyScreenDump(buf, 'Test_incsearch_substitute_08', {}) call term_sendkeys(buf, "\") @@ -692,7 +684,6 @@ func Test_incsearch_substitute_dump() call term_sendkeys(buf, '3G4G') call term_sendkeys(buf, ":nohlsearch\") call term_sendkeys(buf, ':6,7s/\v') - sleep 100m call VerifyScreenDump(buf, 'Test_incsearch_substitute_09', {}) call term_sendkeys(buf, "\") @@ -705,6 +696,15 @@ func Test_incsearch_substitute_dump() call term_sendkeys(buf, "\") call VerifyScreenDump(buf, 'Test_incsearch_substitute_10', {}) + call term_sendkeys(buf, ":split\") + call term_sendkeys(buf, ":let @/ = 'xyz'\") + call term_sendkeys(buf, ":%s/.") + call VerifyScreenDump(buf, 'Test_incsearch_substitute_11', {}) + call term_sendkeys(buf, "\") + call VerifyScreenDump(buf, 'Test_incsearch_substitute_12', {}) + call term_sendkeys(buf, "\") + call VerifyScreenDump(buf, 'Test_incsearch_substitute_13', {}) + call StopVimInTerminal(buf) call delete('Xis_subst_script') endfunc @@ -728,7 +728,6 @@ func Test_incsearch_sort_dump() " Need to send one key at a time to force a redraw. call term_sendkeys(buf, ':sort ni u /on') - sleep 100m call VerifyScreenDump(buf, 'Test_incsearch_sort_01', {}) call term_sendkeys(buf, "\") @@ -755,27 +754,22 @@ func Test_incsearch_vimgrep_dump() " Need to send one key at a time to force a redraw. call term_sendkeys(buf, ':vimgrep on') - sleep 100m call VerifyScreenDump(buf, 'Test_incsearch_vimgrep_01', {}) call term_sendkeys(buf, "\") call term_sendkeys(buf, ':vimg /on/ *.txt') - sleep 100m call VerifyScreenDump(buf, 'Test_incsearch_vimgrep_02', {}) call term_sendkeys(buf, "\") call term_sendkeys(buf, ':vimgrepadd "\") call term_sendkeys(buf, ':lv "tha') - sleep 100m call VerifyScreenDump(buf, 'Test_incsearch_vimgrep_04', {}) call term_sendkeys(buf, "\") call term_sendkeys(buf, ':lvimgrepa "the" **/*.txt') - sleep 100m call VerifyScreenDump(buf, 'Test_incsearch_vimgrep_05', {}) call term_sendkeys(buf, "\") @@ -918,13 +912,11 @@ func Test_incsearch_search_dump() " Need to send one key at a time to force a redraw. call term_sendkeys(buf, '/fo') - sleep 100m call VerifyScreenDump(buf, 'Test_incsearch_search_01', {}) call term_sendkeys(buf, "\") sleep 100m call term_sendkeys(buf, '/\v') - sleep 100m call VerifyScreenDump(buf, 'Test_incsearch_search_02', {}) call term_sendkeys(buf, "\")