# HG changeset patch # User Bram Moolenaar # Date 1619010904 -7200 # Node ID e3efa11b6a1ee058c2a8e4f055ffb945886b660e # Parent e9bced6898115f999f5e76893b68a80d8a83ba0c patch 8.2.2797: Search highlight disappears in the Visual area Commit: https://github.com/vim/vim/commit/2d5f385cee3668c44089edcb9d60b0b5d751ee5d Author: Bram Moolenaar Date: Wed Apr 21 15:11:42 2021 +0200 patch 8.2.2797: Search highlight disappears in the Visual area Problem: Search highlight disappears in the Visual area. Solution: Combine the search attributes. (closes https://github.com/vim/vim/issues/8134) diff --git a/src/drawline.c b/src/drawline.c --- a/src/drawline.c +++ b/src/drawline.c @@ -1538,6 +1538,9 @@ win_line( if (area_attr != 0) { char_attr = hl_combine_attr(line_attr, area_attr); + if (!highlight_match) + // let search highlight show in Visual area if possible + char_attr = hl_combine_attr(search_attr, char_attr); # ifdef FEAT_SYN_HL char_attr = hl_combine_attr(syntax_attr, char_attr); # endif diff --git a/src/testdir/dumps/Test_hlsearch_visual_1.dump b/src/testdir/dumps/Test_hlsearch_visual_1.dump new file mode 100644 --- /dev/null +++ b/src/testdir/dumps/Test_hlsearch_visual_1.dump @@ -0,0 +1,6 @@ +|x+0&#ffffff0@2| |y+2&#ffff4012|y+2&#e0e0e08@1| +0&&|z@2| | +0&#ffffff0@27 +|x+0&#e0e0e08@2| |y+2&&@2| +0&&|z@2| | +0&#ffffff0@27 +|x+0&#e0e0e08@2| |y+2&&>y+2&#ffff4012@1| +0&#ffffff0|z@2| @28 +|~+0#4040ff13&| @38 +|~| @38 +|-+2#0000000&@1| |V|I|S|U|A|L| |-@1|3+0&&| @8|3|,|6| @10|A|l@1| diff --git a/src/testdir/test_search.vim b/src/testdir/test_search.vim --- a/src/testdir/test_search.vim +++ b/src/testdir/test_search.vim @@ -964,6 +964,26 @@ func Test_hlsearch_dump() call delete('Xhlsearch_script') endfunc +func Test_hlsearch_and_visual() + CheckOption hlsearch + CheckScreendump + + call writefile([ + \ 'set hlsearch', + \ 'call setline(1, repeat(["xxx yyy zzz"], 3))', + \ 'hi Search cterm=bold', + \ '/yyy', + \ 'call cursor(1, 6)', + \ ], 'Xhlvisual_script') + let buf = RunVimInTerminal('-S Xhlvisual_script', {'rows': 6, 'cols': 40}) + call term_sendkeys(buf, "vjj") + call VerifyScreenDump(buf, 'Test_hlsearch_visual_1', {}) + call term_sendkeys(buf, "\") + + call StopVimInTerminal(buf) + call delete('Xhlvisual_script') +endfunc + func Test_incsearch_substitute() CheckOption incsearch diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -751,6 +751,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 2797, +/**/ 2796, /**/ 2795,