aboutsummaryrefslogtreecommitdiff
path: root/test/functional/ui/multigrid_spec.lua
diff options
context:
space:
mode:
authorJosh Rahm <joshuarahm@gmail.com>2024-11-19 22:57:13 +0000
committerJosh Rahm <joshuarahm@gmail.com>2024-11-19 22:57:13 +0000
commit9be89f131f87608f224f0ee06d199fcd09d32176 (patch)
tree11022dcfa9e08cb4ac5581b16734196128688d48 /test/functional/ui/multigrid_spec.lua
parentff7ed8f586589d620a806c3758fac4a47a8e7e15 (diff)
parent88085c2e80a7e3ac29aabb6b5420377eed99b8b6 (diff)
downloadrneovim-9be89f131f87608f224f0ee06d199fcd09d32176.tar.gz
rneovim-9be89f131f87608f224f0ee06d199fcd09d32176.tar.bz2
rneovim-9be89f131f87608f224f0ee06d199fcd09d32176.zip
Merge remote-tracking branch 'upstream/master' into mix_20240309
Diffstat (limited to 'test/functional/ui/multigrid_spec.lua')
-rw-r--r--test/functional/ui/multigrid_spec.lua254
1 files changed, 254 insertions, 0 deletions
diff --git a/test/functional/ui/multigrid_spec.lua b/test/functional/ui/multigrid_spec.lua
index dc48061a6c..e009ed0a29 100644
--- a/test/functional/ui/multigrid_spec.lua
+++ b/test/functional/ui/multigrid_spec.lua
@@ -1095,6 +1095,7 @@ describe('ext_multigrid', function()
end)
it('supports mouse', function()
+ command('autocmd! nvim_popupmenu') -- Delete the default MenuPopup event handler.
insert('some text\nto be clicked')
screen:expect{grid=[[
## grid 1
@@ -2598,4 +2599,257 @@ describe('ext_multigrid', function()
]])
eq(1, api.nvim_get_option_value('cmdheight', {}))
end)
+
+ describe('centered cursorline', function()
+ before_each(function()
+ -- Force a centered cursorline, this caused some redrawing problems described in #30576.
+ -- Most importantly, win_viewport was not received in time, and sum_scroll_delta did not refresh.
+ command('set cursorline scrolloff=9999')
+ end)
+ it('insert line scrolls correctly', function()
+ for i = 1, 11 do
+ insert('line' .. i .. '\n')
+ end
+ screen:expect({
+ grid = [[
+ ## grid 1
+ [2:-----------------------------------------------------]|*12
+ {11:[No Name] [+] }|
+ [3:-----------------------------------------------------]|
+ ## grid 2
+ line1 |
+ line2 |
+ line3 |
+ line4 |
+ line5 |
+ line6 |
+ line7 |
+ line8 |
+ line9 |
+ line10 |
+ line11 |
+ {23:^ }|
+ ## grid 3
+ |
+ ]], win_viewport={
+ [2] = {win = 1000, topline = 0, botline = 12, curline = 11, curcol = 0, linecount = 12, sum_scroll_delta = 0};
+ }, win_viewport_margins={
+ [2] = {
+ bottom = 0,
+ left = 0,
+ right = 0,
+ top = 0,
+ win = 1000
+ }
+ }})
+ insert('line12\n')
+ screen:expect({
+ grid = [[
+ ## grid 1
+ [2:-----------------------------------------------------]|*12
+ {11:[No Name] [+] }|
+ [3:-----------------------------------------------------]|
+ ## grid 2
+ line2 |
+ line3 |
+ line4 |
+ line5 |
+ line6 |
+ line7 |
+ line8 |
+ line9 |
+ line10 |
+ line11 |
+ line12 |
+ {23:^ }|
+ ## grid 3
+ |
+ ]], win_viewport={
+ [2] = {win = 1000, topline = 1, botline = 13, curline = 12, curcol = 0, linecount = 13, sum_scroll_delta = 1};
+ }, win_viewport_margins={
+ [2] = {
+ bottom = 0,
+ left = 0,
+ right = 0,
+ top = 0,
+ win = 1000
+ }
+ }})
+ end)
+
+ it('got to top scrolls correctly', function()
+ for i = 1, 20 do
+ insert('line' .. i .. '\n')
+ end
+ screen:expect({
+ grid = [[
+ ## grid 1
+ [2:-----------------------------------------------------]|*12
+ {11:[No Name] [+] }|
+ [3:-----------------------------------------------------]|
+ ## grid 2
+ line10 |
+ line11 |
+ line12 |
+ line13 |
+ line14 |
+ line15 |
+ line16 |
+ line17 |
+ line18 |
+ line19 |
+ line20 |
+ {23:^ }|
+ ## grid 3
+ |
+ ]], win_viewport={
+ [2] = {win = 1000, topline = 9, botline = 21, curline = 20, curcol = 0, linecount = 21, sum_scroll_delta = 9};
+ }, win_viewport_margins={
+ [2] = {
+ bottom = 0,
+ left = 0,
+ right = 0,
+ top = 0,
+ win = 1000
+ }
+ }})
+ feed('gg')
+ screen:expect({
+ grid = [[
+ ## grid 1
+ [2:-----------------------------------------------------]|*12
+ {11:[No Name] [+] }|
+ [3:-----------------------------------------------------]|
+ ## grid 2
+ {23:^line1 }|
+ line2 |
+ line3 |
+ line4 |
+ line5 |
+ line6 |
+ line7 |
+ line8 |
+ line9 |
+ line10 |
+ line11 |
+ line12 |
+ ## grid 3
+ |
+ ]], win_viewport={
+ [2] = {win = 1000, topline = 0, botline = 13, curline = 0, curcol = 0, linecount = 21, sum_scroll_delta = 0};
+ }, win_viewport_margins={
+ [2] = {
+ bottom = 0,
+ left = 0,
+ right = 0,
+ top = 0,
+ win = 1000
+ }
+ }})
+ end)
+
+ it('scrolls in the middle', function()
+ for i = 1, 20 do
+ insert('line' .. i .. '\n')
+ end
+ screen:expect({
+ grid = [[
+ ## grid 1
+ [2:-----------------------------------------------------]|*12
+ {11:[No Name] [+] }|
+ [3:-----------------------------------------------------]|
+ ## grid 2
+ line10 |
+ line11 |
+ line12 |
+ line13 |
+ line14 |
+ line15 |
+ line16 |
+ line17 |
+ line18 |
+ line19 |
+ line20 |
+ {23:^ }|
+ ## grid 3
+ |
+ ]], win_viewport={
+ [2] = {win = 1000, topline = 9, botline = 21, curline = 20, curcol = 0, linecount = 21, sum_scroll_delta = 9};
+ }, win_viewport_margins={
+ [2] = {
+ bottom = 0,
+ left = 0,
+ right = 0,
+ top = 0,
+ win = 1000
+ }
+ }})
+ feed('M')
+ screen:expect({
+ grid = [[
+ ## grid 1
+ [2:-----------------------------------------------------]|*12
+ {11:[No Name] [+] }|
+ [3:-----------------------------------------------------]|
+ ## grid 2
+ line10 |
+ line11 |
+ line12 |
+ line13 |
+ line14 |
+ {23:^line15 }|
+ line16 |
+ line17 |
+ line18 |
+ line19 |
+ line20 |
+ |
+ ## grid 3
+ |
+ ]], win_viewport={
+ [2] = {win = 1000, topline = 9, botline = 21, curline = 14, curcol = 0, linecount = 21, sum_scroll_delta = 9};
+ }, win_viewport_margins={
+ [2] = {
+ bottom = 0,
+ left = 0,
+ right = 0,
+ top = 0,
+ win = 1000
+ }
+ }})
+ feed('k')
+ screen:expect({
+ grid = [[
+ ## grid 1
+ [2:-----------------------------------------------------]|*12
+ {11:[No Name] [+] }|
+ [3:-----------------------------------------------------]|
+ ## grid 2
+ line9 |
+ line10 |
+ line11 |
+ line12 |
+ line13 |
+ {23:^line14 }|
+ line15 |
+ line16 |
+ line17 |
+ line18 |
+ line19 |
+ line20 |
+ ## grid 3
+ |
+ ]], win_viewport={
+ [2] = {win = 1000, topline = 8, botline = 21, curline = 13, curcol = 0, linecount = 21, sum_scroll_delta = 8};
+ }, win_viewport_margins={
+ [2] = {
+ bottom = 0,
+ left = 0,
+ right = 0,
+ top = 0,
+ win = 1000
+ }
+ }})
+ end)
+ end)
end)