aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAufar Gilbran <aufargilbran@gmail.com>2020-08-19 00:51:47 +0800
committerAufar Gilbran <aufargilbran@gmail.com>2020-09-11 10:37:52 +0800
commitf7d2e37e36dafd3a45d343c771d2ff53f6a4b875 (patch)
tree2f53de05e4fbe3574bcde4a3ae59d8633dd5ff18 /src
parent112092fa1598fbfa9dae723da5e52d2dec8da2f0 (diff)
downloadrneovim-f7d2e37e36dafd3a45d343c771d2ff53f6a4b875.tar.gz
rneovim-f7d2e37e36dafd3a45d343c771d2ff53f6a4b875.tar.bz2
rneovim-f7d2e37e36dafd3a45d343c771d2ff53f6a4b875.zip
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
Diffstat (limited to 'src')
-rw-r--r--src/nvim/ex_getln.c6
-rw-r--r--src/nvim/testdir/test_search.vim26
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, "\<Esc>")
@@ -647,30 +646,25 @@ func Test_incsearch_substitute_dump()
call term_sendkeys(buf, "/foo\<CR>")
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, "\<BS>")
- sleep 100m
call VerifyScreenDump(buf, 'Test_incsearch_substitute_03', {})
call term_sendkeys(buf, "\<Esc>")
" Reverse range is accepted
call term_sendkeys(buf, ':5,2s/foo')
- sleep 100m
call VerifyScreenDump(buf, 'Test_incsearch_substitute_04', {})
call term_sendkeys(buf, "\<Esc>")
" 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, "\<Esc>")
" 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, "\<Esc>")
@@ -678,13 +672,11 @@ func Test_incsearch_substitute_dump()
call term_sendkeys(buf, ":set cursorline\<CR>")
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, "\<Esc>")
" 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, "\<Esc>")
@@ -692,7 +684,6 @@ func Test_incsearch_substitute_dump()
call term_sendkeys(buf, '3G4G')
call term_sendkeys(buf, ":nohlsearch\<CR>")
call term_sendkeys(buf, ':6,7s/\v')
- sleep 100m
call VerifyScreenDump(buf, 'Test_incsearch_substitute_09', {})
call term_sendkeys(buf, "\<Esc>")
@@ -705,6 +696,15 @@ func Test_incsearch_substitute_dump()
call term_sendkeys(buf, "\<Esc>")
call VerifyScreenDump(buf, 'Test_incsearch_substitute_10', {})
+ call term_sendkeys(buf, ":split\<CR>")
+ call term_sendkeys(buf, ":let @/ = 'xyz'\<CR>")
+ call term_sendkeys(buf, ":%s/.")
+ call VerifyScreenDump(buf, 'Test_incsearch_substitute_11', {})
+ call term_sendkeys(buf, "\<BS>")
+ call VerifyScreenDump(buf, 'Test_incsearch_substitute_12', {})
+ call term_sendkeys(buf, "\<Esc>")
+ 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, "\<Esc>")
@@ -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, "\<Esc>")
call term_sendkeys(buf, ':vimg /on/ *.txt')
- sleep 100m
call VerifyScreenDump(buf, 'Test_incsearch_vimgrep_02', {})
call term_sendkeys(buf, "\<Esc>")
call term_sendkeys(buf, ':vimgrepadd "\<on')
- sleep 100m
call VerifyScreenDump(buf, 'Test_incsearch_vimgrep_03', {})
call term_sendkeys(buf, "\<Esc>")
call term_sendkeys(buf, ':lv "tha')
- sleep 100m
call VerifyScreenDump(buf, 'Test_incsearch_vimgrep_04', {})
call term_sendkeys(buf, "\<Esc>")
call term_sendkeys(buf, ':lvimgrepa "the" **/*.txt')
- sleep 100m
call VerifyScreenDump(buf, 'Test_incsearch_vimgrep_05', {})
call term_sendkeys(buf, "\<Esc>")
@@ -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, "\<Esc>")
sleep 100m
call term_sendkeys(buf, '/\v')
- sleep 100m
call VerifyScreenDump(buf, 'Test_incsearch_search_02', {})
call term_sendkeys(buf, "\<Esc>")