aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2024-04-13 06:18:45 +0800
committerGitHub <noreply@github.com>2024-04-13 06:18:45 +0800
commit64aa0f7d0b7034a5158401cf6b987cb82cc60031 (patch)
tree778ef5c6b82301cb239ae07f1cdf2718e0170421
parent2c5fd3f966193a5a44e0661160c2c7ddf0a96097 (diff)
downloadrneovim-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.c2
-rw-r--r--test/functional/ui/decorations_spec.lua82
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()