fix(mouse): handle folded lines with virt_lines attached to line above

This commit is contained in:
zeertzjq
2023-06-05 17:11:58 +08:00
parent 69f11f6d26
commit ada9443999
3 changed files with 162 additions and 9 deletions

View File

@@ -42,6 +42,7 @@ describe("folded lines", function()
[10] = {background = Screen.colors.LightGrey, underline = true},
[11] = {bold=true},
[12] = {background = Screen.colors.Grey90},
[16] = {background = Screen.colors.LightGrey},
})
end)
@@ -2010,6 +2011,17 @@ describe("folded lines", function()
]])
end
meths.input_mouse('left', 'press', '', multigrid and 2 or 0, 4, 0)
eq({
column = 1,
line = 3,
screencol = 1,
screenrow = 5,
wincol = 1,
winid = 1000,
winrow = 5,
}, funcs.getmousepos())
meths.buf_set_extmark(0, ns, 1, 0, { virt_lines = {{{"more virt_line below line 2", ""}}} })
feed('G<C-E>')
if multigrid then
@@ -2226,6 +2238,150 @@ describe("folded lines", function()
|
]])
end
feed('3<C-Y>')
if multigrid then
screen:expect([[
## grid 1
[2:---------------------------------------------]|
[2:---------------------------------------------]|
[2:---------------------------------------------]|
[2:---------------------------------------------]|
[2:---------------------------------------------]|
[2:---------------------------------------------]|
[2:---------------------------------------------]|
[3:---------------------------------------------]|
## grid 2
virt_line below line 2 |
more virt_line below line 2 |
{5:+-- 2 lines: line 3·························}|
^line 5 |
{1:~ }|
{1:~ }|
{1:~ }|
## grid 3
|
]])
else
screen:expect([[
virt_line below line 2 |
more virt_line below line 2 |
{5:+-- 2 lines: line 3·························}|
^line 5 |
{1:~ }|
{1:~ }|
{1:~ }|
|
]])
end
meths.input_mouse('left', 'press', '3', multigrid and 2 or 0, 3, 0)
if multigrid then
screen:expect([[
## grid 1
[2:---------------------------------------------]|
[2:---------------------------------------------]|
[2:---------------------------------------------]|
[2:---------------------------------------------]|
[2:---------------------------------------------]|
[2:---------------------------------------------]|
[2:---------------------------------------------]|
[3:---------------------------------------------]|
## grid 2
virt_line below line 2 |
more virt_line below line 2 |
{5:+-- 2 lines: line 3·························}|
^l{16:ine 5} |
{1:~ }|
{1:~ }|
{1:~ }|
## grid 3
{11:-- VISUAL LINE --} |
]])
else
screen:expect([[
virt_line below line 2 |
more virt_line below line 2 |
{5:+-- 2 lines: line 3·························}|
^l{16:ine 5} |
{1:~ }|
{1:~ }|
{1:~ }|
{11:-- VISUAL LINE --} |
]])
end
meths.input_mouse('left', 'drag', '3', multigrid and 2 or 0, 7, 0)
if multigrid then
screen:expect([[
## grid 1
[2:---------------------------------------------]|
[2:---------------------------------------------]|
[2:---------------------------------------------]|
[2:---------------------------------------------]|
[2:---------------------------------------------]|
[2:---------------------------------------------]|
[2:---------------------------------------------]|
[3:---------------------------------------------]|
## grid 2
more virt_line below line 2 |
{5:+-- 2 lines: line 3·························}|
^l{16:ine 5} |
{1:~ }|
{1:~ }|
{1:~ }|
{1:~ }|
## grid 3
{11:-- VISUAL LINE --} |
]])
else
screen:expect([[
more virt_line below line 2 |
{5:+-- 2 lines: line 3·························}|
^l{16:ine 5} |
{1:~ }|
{1:~ }|
{1:~ }|
{1:~ }|
{11:-- VISUAL LINE --} |
]])
end
meths.input_mouse('left', 'drag', '3', multigrid and 2 or 0, 7, 5)
if multigrid then
screen:expect([[
## grid 1
[2:---------------------------------------------]|
[2:---------------------------------------------]|
[2:---------------------------------------------]|
[2:---------------------------------------------]|
[2:---------------------------------------------]|
[2:---------------------------------------------]|
[2:---------------------------------------------]|
[3:---------------------------------------------]|
## grid 2
{5:+-- 2 lines: line 3·························}|
{16:line }^5 |
{1:~ }|
{1:~ }|
{1:~ }|
{1:~ }|
{1:~ }|
## grid 3
{11:-- VISUAL LINE --} |
]])
else
screen:expect([[
{5:+-- 2 lines: line 3·························}|
{16:line }^5 |
{1:~ }|
{1:~ }|
{1:~ }|
{1:~ }|
{1:~ }|
{11:-- VISUAL LINE --} |
]])
end
end)
end