vim-patch:8.2.2797: Search highlight disappears in the Visual area (#17947)

Problem:    Search highlight disappears in the Visual area.
Solution:   Combine the search attributes. (closes vim/vim#8134)
2d5f385cee
This commit is contained in:
zeertzjq 2022-05-13 21:20:15 +08:00 committed by GitHub
parent 2875d45e79
commit c196119acb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 56 additions and 0 deletions

View File

@ -3006,6 +3006,10 @@ static int win_line(win_T *wp, linenr_T lnum, int startrow, int endrow, bool noc
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);
}
} else if (search_attr != 0) {
char_attr = hl_combine_attr(line_attr, search_attr);
}

View File

@ -925,6 +925,26 @@ func Test_hlsearch_block_visual_match()
call delete('Xhlsearch_block')
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, "\<Esc>")
call StopVimInTerminal(buf)
call delete('Xhlvisual_script')
endfunc
func Test_incsearch_substitute()
CheckFunction test_override
CheckOption incsearch

View File

@ -7,6 +7,7 @@ local eval = helpers.eval
local feed = helpers.feed
local funcs = helpers.funcs
local poke_eventloop = helpers.poke_eventloop
local exec = helpers.exec
describe('search cmdline', function()
local screen
@ -640,3 +641,34 @@ describe('search cmdline', function()
feed('<esc>')
end)
end)
describe('Search highlight', function()
before_each(clear)
it('Search highlight is combined with Visual highlight vim-patch:8.2.2797', function()
local screen = Screen.new(40, 6)
screen:set_default_attr_ids({
[1] = {bold = true, foreground = Screen.colors.Blue}, -- NonText
[2] = {bold = true}, -- ModeMsg, Search
[3] = {background = Screen.colors.LightGrey}, -- Visual
[4] = {background = Screen.colors.Yellow, bold = true}, -- Search
[5] = {background = Screen.colors.LightGrey, bold = true}, -- Visual + Search
})
screen:attach()
exec([[
set hlsearch noincsearch
call setline(1, repeat(["xxx yyy zzz"], 3))
hi Search gui=bold
/yyy
call cursor(1, 6)
]])
feed('vjj')
screen:expect([[
xxx {4:y}{5:yy}{3: zzz} |
{3:xxx }{5:yyy}{3: zzz} |
{3:xxx }{5:y}{4:^yy} zzz |
{1:~ }|
{1:~ }|
{2:-- VISUAL --} |
]])
end)
end)