diff options
author | zeertzjq <zeertzjq@outlook.com> | 2024-04-13 06:18:45 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-13 06:18:45 +0800 |
commit | 64aa0f7d0b7034a5158401cf6b987cb82cc60031 (patch) | |
tree | 778ef5c6b82301cb239ae07f1cdf2718e0170421 | |
parent | 2c5fd3f966193a5a44e0661160c2c7ddf0a96097 (diff) | |
download | rneovim-64aa0f7d0b7034a5158401cf6b987cb82cc60031.tar.gz rneovim-64aa0f7d0b7034a5158401cf6b987cb82cc60031.tar.bz2 rneovim-64aa0f7d0b7034a5158401cf6b987cb82cc60031.zip |
fix(move): check for filler lines properly (#28307)
vim-patch:9.1.0310: Filler lines not checked properly in get_scroll_overlap()
-rw-r--r-- | src/nvim/move.c | 2 | ||||
-rw-r--r-- | test/functional/ui/decorations_spec.lua | 82 |
2 files changed, 83 insertions, 1 deletions
diff --git a/src/nvim/move.c b/src/nvim/move.c index c055f6baad..4448091b8a 100644 --- a/src/nvim/move.c +++ b/src/nvim/move.c @@ -2362,7 +2362,7 @@ static int get_scroll_overlap(Direction dir) } loff.lnum = dir == FORWARD ? curwin->w_botline : curwin->w_topline - 1; - loff.fill = win_get_fill(curwin, loff.lnum + dir == BACKWARD) + loff.fill = win_get_fill(curwin, loff.lnum + (dir == BACKWARD)) - (dir == FORWARD ? curwin->w_filler_rows : curwin->w_topfill); loff.height = loff.fill > 0 ? 1 : plines_win_nofill(curwin, loff.lnum, true); diff --git a/test/functional/ui/decorations_spec.lua b/test/functional/ui/decorations_spec.lua index 66747057e7..843121b45a 100644 --- a/test/functional/ui/decorations_spec.lua +++ b/test/functional/ui/decorations_spec.lua @@ -4894,6 +4894,88 @@ if (h->n_buckets < new_n_buckets) { // expand | ]]) end) + + it('works with full page scrolling #28390', function() + screen:try_resize(20, 8) + command('call setline(1, range(20))') + api.nvim_buf_set_extmark(0, ns, 10, 0, { virt_lines = {{{'VIRT1'}}, {{'VIRT2'}}} }) + screen:expect([[ + ^0 | + 1 | + 2 | + 3 | + 4 | + 5 | + 6 | + | + ]]) + feed('<C-F>') + screen:expect([[ + ^5 | + 6 | + 7 | + 8 | + 9 | + 10 | + VIRT1 | + | + ]]) + feed('<C-F>') + screen:expect([[ + ^10 | + VIRT1 | + VIRT2 | + 11 | + 12 | + 13 | + 14 | + | + ]]) + feed('<C-F>') + screen:expect([[ + ^13 | + 14 | + 15 | + 16 | + 17 | + 18 | + 19 | + | + ]]) + feed('<C-B>') + screen:expect([[ + 10 | + VIRT1 | + VIRT2 | + 11 | + 12 | + ^13 | + 14 | + | + ]]) + feed('<C-B>') + screen:expect([[ + 5 | + 6 | + 7 | + 8 | + 9 | + ^10 | + VIRT1 | + | + ]]) + feed('<C-B>') + screen:expect([[ + 0 | + 1 | + 2 | + 3 | + 4 | + 5 | + ^6 | + | + ]]) + end) end) describe('decorations: signs', function() |