mirror of
https://github.com/neovim/neovim.git
synced 2025-09-06 11:28:22 +00:00
fix(folds): show Folded highlight in Visual selection (#23741)
Note: CursorLine highlight is now combined with Folded.
This commit is contained in:
@@ -1807,8 +1807,8 @@ int win_line(win_T *wp, linenr_T lnum, int startrow, int endrow, bool nochange,
|
|||||||
}
|
}
|
||||||
|
|
||||||
int extmark_attr = 0;
|
int extmark_attr = 0;
|
||||||
if (wlv.draw_state == WL_LINE
|
if (wlv.draw_state == WL_LINE && !has_fold
|
||||||
&& (area_highlighting || has_spell || (extra_check && !has_fold))) {
|
&& (area_highlighting || has_spell || extra_check)) {
|
||||||
// handle Visual or match highlighting in this line
|
// handle Visual or match highlighting in this line
|
||||||
if (wlv.vcol == wlv.fromcol
|
if (wlv.vcol == wlv.fromcol
|
||||||
|| (wlv.vcol + 1 == wlv.fromcol && wlv.n_extra == 0
|
|| (wlv.vcol + 1 == wlv.fromcol && wlv.n_extra == 0
|
||||||
|
@@ -42,7 +42,9 @@ describe("folded lines", function()
|
|||||||
[9] = {bold = true, foreground = Screen.colors.Brown},
|
[9] = {bold = true, foreground = Screen.colors.Brown},
|
||||||
[10] = {background = Screen.colors.LightGrey, underline = true},
|
[10] = {background = Screen.colors.LightGrey, underline = true},
|
||||||
[11] = {bold=true},
|
[11] = {bold=true},
|
||||||
[12] = {background = Screen.colors.Grey90},
|
[12] = {background = Screen.colors.Grey90, underline = true},
|
||||||
|
[13] = {foreground = Screen.colors.DarkBlue, background = Screen.colors.LightGrey, underline = true},
|
||||||
|
[14] = {background = Screen.colors.LightGray},
|
||||||
})
|
})
|
||||||
end)
|
end)
|
||||||
|
|
||||||
@@ -86,9 +88,10 @@ describe("folded lines", function()
|
|||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
it("highlights with CursorLineFold when 'cursorline' is set", function()
|
it("foldcolumn highlighted with CursorLineFold when 'cursorline' is set", function()
|
||||||
command("set number cursorline foldcolumn=2")
|
command("set number cursorline foldcolumn=2")
|
||||||
command("hi link CursorLineFold Search")
|
command("hi link CursorLineFold Search")
|
||||||
|
command("hi! CursorLine gui=underline guibg=Grey90")
|
||||||
insert(content1)
|
insert(content1)
|
||||||
feed("ggzf3jj")
|
feed("ggzf3jj")
|
||||||
if multigrid then
|
if multigrid then
|
||||||
@@ -138,7 +141,7 @@ describe("folded lines", function()
|
|||||||
[2:---------------------------------------------]|
|
[2:---------------------------------------------]|
|
||||||
[3:---------------------------------------------]|
|
[3:---------------------------------------------]|
|
||||||
## grid 2
|
## grid 2
|
||||||
{6:+ }{9: 1 }{12:^+-- 4 lines: This is a················}|
|
{6:+ }{9: 1 }{13:^+-- 4 lines: This is a················}|
|
||||||
{7: }{8: 5 }in his cave. |
|
{7: }{8: 5 }in his cave. |
|
||||||
{7: }{8: 6 } |
|
{7: }{8: 6 } |
|
||||||
{1:~ }|
|
{1:~ }|
|
||||||
@@ -150,7 +153,7 @@ describe("folded lines", function()
|
|||||||
]])
|
]])
|
||||||
else
|
else
|
||||||
screen:expect([[
|
screen:expect([[
|
||||||
{6:+ }{9: 1 }{12:^+-- 4 lines: This is a················}|
|
{6:+ }{9: 1 }{13:^+-- 4 lines: This is a················}|
|
||||||
{7: }{8: 5 }in his cave. |
|
{7: }{8: 5 }in his cave. |
|
||||||
{7: }{8: 6 } |
|
{7: }{8: 6 } |
|
||||||
{1:~ }|
|
{1:~ }|
|
||||||
@@ -179,7 +182,7 @@ describe("folded lines", function()
|
|||||||
[2:---------------------------------------------]|
|
[2:---------------------------------------------]|
|
||||||
[3:---------------------------------------------]|
|
[3:---------------------------------------------]|
|
||||||
## grid 2
|
## grid 2
|
||||||
{7:+ }{8: 1 }{12:^+-- 4 lines: This is a················}|
|
{7:+ }{8: 1 }{13:^+-- 4 lines: This is a················}|
|
||||||
{7: }{8: 5 }in his cave. |
|
{7: }{8: 5 }in his cave. |
|
||||||
{7: }{8: 6 } |
|
{7: }{8: 6 } |
|
||||||
{1:~ }|
|
{1:~ }|
|
||||||
@@ -191,7 +194,7 @@ describe("folded lines", function()
|
|||||||
]])
|
]])
|
||||||
else
|
else
|
||||||
screen:expect([[
|
screen:expect([[
|
||||||
{7:+ }{8: 1 }{12:^+-- 4 lines: This is a················}|
|
{7:+ }{8: 1 }{13:^+-- 4 lines: This is a················}|
|
||||||
{7: }{8: 5 }in his cave. |
|
{7: }{8: 5 }in his cave. |
|
||||||
{7: }{8: 6 } |
|
{7: }{8: 6 } |
|
||||||
{1:~ }|
|
{1:~ }|
|
||||||
@@ -2013,6 +2016,56 @@ describe("folded lines", function()
|
|||||||
]])
|
]])
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
it('Folded highlight does not disappear in Visual selection #19691', function()
|
||||||
|
insert([[
|
||||||
|
" foo
|
||||||
|
" {{{1
|
||||||
|
set nocp
|
||||||
|
" }}}1
|
||||||
|
" bar
|
||||||
|
" {{{1
|
||||||
|
set foldmethod=marker
|
||||||
|
" }}}1
|
||||||
|
" baz]])
|
||||||
|
feed('gg')
|
||||||
|
command('source')
|
||||||
|
feed('<C-V>G3l')
|
||||||
|
if multigrid then
|
||||||
|
screen:expect([[
|
||||||
|
## grid 1
|
||||||
|
[2:---------------------------------------------]|
|
||||||
|
[2:---------------------------------------------]|
|
||||||
|
[2:---------------------------------------------]|
|
||||||
|
[2:---------------------------------------------]|
|
||||||
|
[2:---------------------------------------------]|
|
||||||
|
[2:---------------------------------------------]|
|
||||||
|
[2:---------------------------------------------]|
|
||||||
|
[3:---------------------------------------------]|
|
||||||
|
## grid 2
|
||||||
|
{14:" fo}o |
|
||||||
|
{5:+-- 3 lines: "······························}|
|
||||||
|
{14:" ba}r |
|
||||||
|
{5:+-- 3 lines: "······························}|
|
||||||
|
{14:" b}^az |
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
## grid 3
|
||||||
|
{11:-- VISUAL BLOCK --} |
|
||||||
|
]])
|
||||||
|
else
|
||||||
|
screen:expect([[
|
||||||
|
{14:" fo}o |
|
||||||
|
{5:+-- 3 lines: "······························}|
|
||||||
|
{14:" ba}r |
|
||||||
|
{5:+-- 3 lines: "······························}|
|
||||||
|
{14:" b}^az |
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{11:-- VISUAL BLOCK --} |
|
||||||
|
]])
|
||||||
|
end
|
||||||
|
end)
|
||||||
end
|
end
|
||||||
|
|
||||||
describe("with ext_multigrid", function()
|
describe("with ext_multigrid", function()
|
||||||
|
@@ -196,8 +196,10 @@ describe('statuscolumn', function()
|
|||||||
[2] = {foreground = Screen.colors.DarkBlue, background = Screen.colors.WebGrey},
|
[2] = {foreground = Screen.colors.DarkBlue, background = Screen.colors.WebGrey},
|
||||||
[3] = {foreground = Screen.colors.DarkBlue, background = Screen.colors.LightGrey},
|
[3] = {foreground = Screen.colors.DarkBlue, background = Screen.colors.LightGrey},
|
||||||
[4] = {bold = true, foreground = Screen.colors.Brown},
|
[4] = {bold = true, foreground = Screen.colors.Brown},
|
||||||
[5] = {background = Screen.colors.Grey90},
|
[5] = {background = Screen.colors.Grey90, underline = true},
|
||||||
|
[6] = {foreground = Screen.colors.DarkBlue, background = Screen.colors.LightGrey, underline = true},
|
||||||
})
|
})
|
||||||
|
command('hi! CursorLine gui=underline guibg=Grey90')
|
||||||
screen:expect([[
|
screen:expect([[
|
||||||
{1: 4│ }aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa|
|
{1: 4│ }aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa|
|
||||||
{1: │ }a |
|
{1: │ }a |
|
||||||
@@ -214,7 +216,7 @@ describe('statuscolumn', function()
|
|||||||
{1:10│ }aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa{0:@@@}|
|
{1:10│ }aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa{0:@@@}|
|
||||||
|
|
|
|
||||||
]])
|
]])
|
||||||
command("set stc=%C%s%=%l│\\ ")
|
command([[set stc=%C%s%=%l│\ ]])
|
||||||
screen:expect_unchanged()
|
screen:expect_unchanged()
|
||||||
command('set signcolumn=auto:2 foldcolumn=auto')
|
command('set signcolumn=auto:2 foldcolumn=auto')
|
||||||
command('sign define piet1 text=>> texthl=LineNr')
|
command('sign define piet1 text=>> texthl=LineNr')
|
||||||
@@ -268,7 +270,7 @@ describe('statuscolumn', function()
|
|||||||
{2: }{1: │}{2: }{1: }aaaaaa |
|
{2: }{1: │}{2: }{1: }aaaaaa |
|
||||||
{2: }{1: 7│}{2: }{1: }aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa|
|
{2: }{1: 7│}{2: }{1: }aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa|
|
||||||
{2: }{1: │}{2: }{1: }aaaaaa |
|
{2: }{1: │}{2: }{1: }aaaaaa |
|
||||||
{2:+}{4: 8│}{2: }{4: }{5:^+-- 1 line: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa}|
|
{2:+}{4: 8│}{2: }{4: }{6:^+-- 1 line: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa}|
|
||||||
{2: }{1: 9│}{2: }{1: }aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa|
|
{2: }{1: 9│}{2: }{1: }aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa|
|
||||||
{2: }{1: │}{2: }{1: }aaaaaa |
|
{2: }{1: │}{2: }{1: }aaaaaa |
|
||||||
{2: }{1:10│}{2: }{1: }aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa|
|
{2: }{1:10│}{2: }{1: }aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa|
|
||||||
@@ -286,7 +288,7 @@ describe('statuscolumn', function()
|
|||||||
{2: }{1: 6│}{2: }{1: }aaaaaa |
|
{2: }{1: 6│}{2: }{1: }aaaaaa |
|
||||||
{2: }{1: 7│}{2: }{1: }aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa|
|
{2: }{1: 7│}{2: }{1: }aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa|
|
||||||
{2: }{1: 7│}{2: }{1: }aaaaaa |
|
{2: }{1: 7│}{2: }{1: }aaaaaa |
|
||||||
{2:+}{4: 8│}{2: }{4: }{5:^+-- 1 line: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa}|
|
{2:+}{4: 8│}{2: }{4: }{6:^+-- 1 line: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa}|
|
||||||
{2: }{1: 9│}{2: }{1: }aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa|
|
{2: }{1: 9│}{2: }{1: }aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa|
|
||||||
{2: }{1: 9│}{2: }{1: }aaaaaa |
|
{2: }{1: 9│}{2: }{1: }aaaaaa |
|
||||||
{2: }{1:10│}{2: }{1: }aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa|
|
{2: }{1:10│}{2: }{1: }aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa|
|
||||||
@@ -304,7 +306,7 @@ describe('statuscolumn', function()
|
|||||||
{2: }{1: 2│}{2: }{1: }aaaaaa |
|
{2: }{1: 2│}{2: }{1: }aaaaaa |
|
||||||
{2: }{1: 1│}{2: }{1: }aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa|
|
{2: }{1: 1│}{2: }{1: }aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa|
|
||||||
{2: }{1: 1│}{2: }{1: }aaaaaa |
|
{2: }{1: 1│}{2: }{1: }aaaaaa |
|
||||||
{2:+}{4: 0│}{2: }{4: }{5:^+-- 1 line: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa}|
|
{2:+}{4: 0│}{2: }{4: }{6:^+-- 1 line: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa}|
|
||||||
{2: }{1: 1│}{2: }{1: }aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa|
|
{2: }{1: 1│}{2: }{1: }aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa|
|
||||||
{2: }{1: 1│}{2: }{1: }aaaaaa |
|
{2: }{1: 1│}{2: }{1: }aaaaaa |
|
||||||
{2: }{1: 2│}{2: }{1: }aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa|
|
{2: }{1: 2│}{2: }{1: }aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa|
|
||||||
@@ -321,7 +323,7 @@ describe('statuscolumn', function()
|
|||||||
{2: }{1: │}{2: }{1: }aaaaaa |
|
{2: }{1: │}{2: }{1: }aaaaaa |
|
||||||
{2: }{1: 1│}{2: }{1: }aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa|
|
{2: }{1: 1│}{2: }{1: }aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa|
|
||||||
{2: }{1: │}{2: }{1: }aaaaaa |
|
{2: }{1: │}{2: }{1: }aaaaaa |
|
||||||
{2:+}{4: 0│}{2: }{4: }{5:^+-- 1 line: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa}|
|
{2:+}{4: 0│}{2: }{4: }{6:^+-- 1 line: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa}|
|
||||||
{2: }{1: 1│}{2: }{1: }aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa|
|
{2: }{1: 1│}{2: }{1: }aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa|
|
||||||
{2: }{1: │}{2: }{1: }aaaaaa |
|
{2: }{1: │}{2: }{1: }aaaaaa |
|
||||||
{2: }{1: 2│}{2: }{1: }aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa|
|
{2: }{1: 2│}{2: }{1: }aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa|
|
||||||
@@ -346,7 +348,7 @@ describe('statuscolumn', function()
|
|||||||
{2: }{1: │}{2: }{1: }aaaaaaaaaaaaaaaaaaaa |
|
{2: }{1: │}{2: }{1: }aaaaaaaaaaaaaaaaaaaa |
|
||||||
{2: }{1: 1│}{2: }{1: }aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa|
|
{2: }{1: 1│}{2: }{1: }aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa|
|
||||||
{2: }{1: │}{2: }{1: }aaaaaaaaaaaaaaaaaaaa |
|
{2: }{1: │}{2: }{1: }aaaaaaaaaaaaaaaaaaaa |
|
||||||
{2:+}{4: 0│}{2: }{4: }{5:^+-- 1 line: aaaaaaaaaaaaaaaaa}|
|
{2:+}{4: 0│}{2: }{4: }{6:^+-- 1 line: aaaaaaaaaaaaaaaaa}|
|
||||||
{2: }{1: 1│}{2: }{1: }aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa|
|
{2: }{1: 1│}{2: }{1: }aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa|
|
||||||
{2: }{1: │}{2: }{1: }aaaaaaaaaaaaaaaaaaaa |
|
{2: }{1: │}{2: }{1: }aaaaaaaaaaaaaaaaaaaa |
|
||||||
{2: }{1: 2│}{2: }{1: }aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa|
|
{2: }{1: 2│}{2: }{1: }aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa|
|
||||||
@@ -372,7 +374,7 @@ describe('statuscolumn', function()
|
|||||||
{1:wrapped 1 6}aaaaaaaa |
|
{1:wrapped 1 6}aaaaaaaa |
|
||||||
{1:buffer 0 7}aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa|
|
{1:buffer 0 7}aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa|
|
||||||
{1:wrapped 1 7}aaaaaaaa |
|
{1:wrapped 1 7}aaaaaaaa |
|
||||||
{4:buffer 0 8}{5:^+-- 1 line: aaaaaaaaaaaaaaaaaaaaaaaaaaaaa}|
|
{4:buffer 0 8}{6:^+-- 1 line: aaaaaaaaaaaaaaaaaaaaaaaaaaaaa}|
|
||||||
{1:buffer 0 9}aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa|
|
{1:buffer 0 9}aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa|
|
||||||
{1:wrapped 1 9}aaaaaaaa |
|
{1:wrapped 1 9}aaaaaaaa |
|
||||||
|
|
|
|
||||||
|
Reference in New Issue
Block a user