From 2d5f385cee3668c44089edcb9d60b0b5d751ee5d Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Wed, 21 Apr 2021 15:11:42 +0200 Subject: 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 #8134) --- src/drawline.c | 3 +++ src/testdir/dumps/Test_hlsearch_visual_1.dump | 6 ++++++ src/testdir/test_search.vim | 20 ++++++++++++++++++++ src/version.c | 2 ++ 4 files changed, 31 insertions(+) create mode 100644 src/testdir/dumps/Test_hlsearch_visual_1.dump diff --git a/src/drawline.c b/src/drawline.c index fcb996b4b..13be022a9 100644 --- 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 index 000000000..99150dbe3 --- /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 index 5fed81c90..e7c9ac474 100644 --- 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 index a72385929..3547ef437 100644 --- a/src/version.c +++ b/src/version.c @@ -750,6 +750,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 2797, /**/ 2796, /**/ -- cgit v1.2.1