mirror of
https://github.com/neovim/neovim.git
synced 2026-08-28 18:11:47 +00:00
fix(folds): combined Folded and Visual highlights (#23752)
Also combine high-priority CursorLine with Folded.
This commit is contained in:
@@ -10,6 +10,7 @@ local expect_events = helpers.expect_events
|
||||
local meths = helpers.meths
|
||||
local curbufmeths = helpers.curbufmeths
|
||||
local command = helpers.command
|
||||
local assert_alive = helpers.assert_alive
|
||||
|
||||
describe('decorations providers', function()
|
||||
local screen
|
||||
@@ -80,7 +81,7 @@ describe('decorations providers', function()
|
||||
local ns2 = api.nvim_create_namespace "ns2"
|
||||
api.nvim_set_decoration_provider(ns2, {})
|
||||
]])
|
||||
helpers.assert_alive()
|
||||
assert_alive()
|
||||
end)
|
||||
|
||||
it('leave a trace', function()
|
||||
@@ -1092,7 +1093,7 @@ describe('extmark decorations', function()
|
||||
{1:~ }|
|
||||
|
|
||||
]]}
|
||||
helpers.assert_alive()
|
||||
assert_alive()
|
||||
end)
|
||||
|
||||
it('conceal #19007', function()
|
||||
@@ -1258,6 +1259,9 @@ describe('decorations: inline virtual text', function()
|
||||
[13] = {reverse = true};
|
||||
[14] = {foreground = Screen.colors.SlateBlue, background = Screen.colors.LightMagenta};
|
||||
[15] = {bold = true, reverse = true};
|
||||
[16] = {foreground = Screen.colors.Red};
|
||||
[17] = {background = Screen.colors.LightGrey, foreground = Screen.colors.DarkBlue};
|
||||
[18] = {background = Screen.colors.LightGrey, foreground = Screen.colors.Red};
|
||||
}
|
||||
|
||||
ns = meths.create_namespace 'test'
|
||||
@@ -1971,6 +1975,37 @@ bbbbbbb]])
|
||||
]],
|
||||
})
|
||||
end)
|
||||
|
||||
it('does not crash at column 0 when folded in a wide window', function()
|
||||
screen:try_resize(82, 4)
|
||||
command('hi! CursorLine guibg=NONE guifg=Red gui=NONE')
|
||||
command('set cursorline')
|
||||
insert([[
|
||||
aaaaa
|
||||
bbbbb
|
||||
ccccc]])
|
||||
meths.buf_set_extmark(0, ns, 0, 0, { virt_text = {{'foo'}}, virt_text_pos = 'inline' })
|
||||
screen:expect{grid=[[
|
||||
fooaaaaa |
|
||||
bbbbb |
|
||||
{16:cccc^c }|
|
||||
|
|
||||
]]}
|
||||
command('1,2fold')
|
||||
screen:expect{grid=[[
|
||||
{17:+-- 2 lines: aaaaa·······························································}|
|
||||
{16:cccc^c }|
|
||||
{1:~ }|
|
||||
|
|
||||
]]}
|
||||
feed('k')
|
||||
screen:expect{grid=[[
|
||||
{18:^+-- 2 lines: aaaaa·······························································}|
|
||||
ccccc |
|
||||
{1:~ }|
|
||||
|
|
||||
]]}
|
||||
end)
|
||||
end)
|
||||
|
||||
describe('decorations: virtual lines', function()
|
||||
|
||||
@@ -42,9 +42,10 @@ describe("folded lines", function()
|
||||
[9] = {bold = true, foreground = Screen.colors.Brown},
|
||||
[10] = {background = Screen.colors.LightGrey, underline = true},
|
||||
[11] = {bold=true},
|
||||
[12] = {background = Screen.colors.Grey90, underline = true},
|
||||
[13] = {foreground = Screen.colors.DarkBlue, background = Screen.colors.LightGrey, underline = true},
|
||||
[14] = {background = Screen.colors.LightGray},
|
||||
[12] = {foreground = Screen.colors.Red},
|
||||
[13] = {foreground = Screen.colors.Red, background = Screen.colors.LightGrey},
|
||||
[14] = {background = Screen.colors.Red},
|
||||
[15] = {foreground = Screen.colors.DarkBlue, background = Screen.colors.Red},
|
||||
})
|
||||
end)
|
||||
|
||||
@@ -88,10 +89,9 @@ describe("folded lines", function()
|
||||
end
|
||||
end)
|
||||
|
||||
it("foldcolumn highlighted with CursorLineFold when 'cursorline' is set", function()
|
||||
local function test_folded_cursorline()
|
||||
command("set number cursorline foldcolumn=2")
|
||||
command("hi link CursorLineFold Search")
|
||||
command("hi! CursorLine gui=underline guibg=Grey90")
|
||||
insert(content1)
|
||||
feed("ggzf3jj")
|
||||
if multigrid then
|
||||
@@ -239,6 +239,22 @@ describe("folded lines", function()
|
||||
|
|
||||
]])
|
||||
end
|
||||
end
|
||||
|
||||
describe("when 'cursorline' is set", function()
|
||||
it('with high-priority CursorLine', function()
|
||||
command("hi! CursorLine guibg=NONE guifg=Red gui=NONE")
|
||||
test_folded_cursorline()
|
||||
end)
|
||||
|
||||
it('with low-priority CursorLine', function()
|
||||
command("hi! CursorLine guibg=NONE guifg=NONE gui=underline")
|
||||
local attrs = screen:get_default_attr_ids()
|
||||
attrs[12] = {underline = true}
|
||||
attrs[13] = {foreground = Screen.colors.DarkBlue, background = Screen.colors.LightGrey, underline = true}
|
||||
screen:set_default_attr_ids(attrs)
|
||||
test_folded_cursorline()
|
||||
end)
|
||||
end)
|
||||
|
||||
it("work with spell", function()
|
||||
@@ -2017,7 +2033,8 @@ describe("folded lines", function()
|
||||
end
|
||||
end)
|
||||
|
||||
it('Folded highlight does not disappear in Visual selection #19691', function()
|
||||
it('Folded and Visual highlights are combined #19691', function()
|
||||
command('hi! Visual guibg=Red')
|
||||
insert([[
|
||||
" foo
|
||||
" {{{1
|
||||
@@ -2044,9 +2061,9 @@ describe("folded lines", function()
|
||||
[3:---------------------------------------------]|
|
||||
## grid 2
|
||||
{14:" fo}o |
|
||||
{5:+-- 3 lines: "······························}|
|
||||
{15:+-- }{5: 3 lines: "······························}|
|
||||
{14:" ba}r |
|
||||
{5:+-- 3 lines: "······························}|
|
||||
{15:+-- }{5: 3 lines: "······························}|
|
||||
{14:" b}^az |
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
@@ -2056,9 +2073,9 @@ describe("folded lines", function()
|
||||
else
|
||||
screen:expect([[
|
||||
{14:" fo}o |
|
||||
{5:+-- 3 lines: "······························}|
|
||||
{15:+-- }{5: 3 lines: "······························}|
|
||||
{14:" ba}r |
|
||||
{5:+-- 3 lines: "······························}|
|
||||
{15:+-- }{5: 3 lines: "······························}|
|
||||
{14:" b}^az |
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
|
||||
@@ -196,10 +196,10 @@ describe('statuscolumn', function()
|
||||
[2] = {foreground = Screen.colors.DarkBlue, background = Screen.colors.WebGrey},
|
||||
[3] = {foreground = Screen.colors.DarkBlue, background = Screen.colors.LightGrey},
|
||||
[4] = {bold = true, foreground = Screen.colors.Brown},
|
||||
[5] = {background = Screen.colors.Grey90, underline = true},
|
||||
[6] = {foreground = Screen.colors.DarkBlue, background = Screen.colors.LightGrey, underline = true},
|
||||
[5] = {foreground = Screen.colors.Red},
|
||||
[6] = {foreground = Screen.colors.Red, background = Screen.colors.LightGrey},
|
||||
})
|
||||
command('hi! CursorLine gui=underline guibg=Grey90')
|
||||
command('hi! CursorLine guifg=Red guibg=NONE')
|
||||
screen:expect([[
|
||||
{1: 4│ }aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa|
|
||||
{1: │ }a |
|
||||
|
||||
Reference in New Issue
Block a user