aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nvim/move.c37
-rw-r--r--test/functional/ui/decorations_spec.lua2
2 files changed, 18 insertions, 21 deletions
diff --git a/src/nvim/move.c b/src/nvim/move.c
index 4448091b8a..9de86e5aeb 100644
--- a/src/nvim/move.c
+++ b/src/nvim/move.c
@@ -299,7 +299,7 @@ void update_topline(win_T *wp)
// scrolling down is never needed.
if (wp->w_cursor.lnum < wp->w_topline) {
check_topline = true;
- } else if (check_top_offset()) {
+ } else if (check_top_offset(wp)) {
check_topline = true;
} else if (wp->w_skipcol > 0 && wp->w_cursor.lnum == wp->w_topline) {
colnr_T vcol;
@@ -349,7 +349,7 @@ void update_topline(win_T *wp)
if (n >= halfheight) {
scroll_cursor_halfway(wp, false, false);
} else {
- scroll_cursor_top(wp, scrolljump_value(), false);
+ scroll_cursor_top(wp, scrolljump_value(wp), false);
check_botline = true;
}
} else {
@@ -422,7 +422,7 @@ void update_topline(win_T *wp)
line_count = wp->w_cursor.lnum - wp->w_botline + 1 + (int)(*so_ptr);
}
if (line_count <= wp->w_height_inner + 1) {
- scroll_cursor_bot(wp, scrolljump_value(), false);
+ scroll_cursor_bot(wp, scrolljump_value(wp), false);
} else {
scroll_cursor_halfway(wp, false, false);
}
@@ -455,33 +455,30 @@ void update_topline(win_T *wp)
*so_ptr = save_so;
}
-// Return the scrolljump value to use for the current window.
-// When 'scrolljump' is positive use it as-is.
-// When 'scrolljump' is negative use it as a percentage of the window height.
-static int scrolljump_value(void)
+/// Return the scrolljump value to use for the window "wp".
+/// When 'scrolljump' is positive use it as-is.
+/// When 'scrolljump' is negative use it as a percentage of the window height.
+static int scrolljump_value(win_T *wp)
{
- int result = p_sj >= 0 ? (int)p_sj : (curwin->w_height_inner * (int)(-p_sj)) / 100;
+ int result = p_sj >= 0 ? (int)p_sj : (wp->w_height_inner * (int)(-p_sj)) / 100;
return result;
}
-// Return true when there are not 'scrolloff' lines above the cursor for the
-// current window.
-static bool check_top_offset(void)
+/// Return true when there are not 'scrolloff' lines above the cursor for window "wp".
+static bool check_top_offset(win_T *wp)
{
- int so = get_scrolloff_value(curwin);
- if (curwin->w_cursor.lnum < curwin->w_topline + so
- || hasAnyFolding(curwin)) {
+ int so = get_scrolloff_value(wp);
+ if (wp->w_cursor.lnum < wp->w_topline + so || hasAnyFolding(wp)) {
lineoff_T loff;
- loff.lnum = curwin->w_cursor.lnum;
+ loff.lnum = wp->w_cursor.lnum;
loff.fill = 0;
- int n = curwin->w_topfill; // always have this context
+ int n = wp->w_topfill; // always have this context
// Count the visible screen lines above the cursor line.
while (n < so) {
- topline_back(curwin, &loff);
+ topline_back(wp, &loff);
// Stop when included a line above the window.
- if (loff.lnum < curwin->w_topline
- || (loff.lnum == curwin->w_topline
- && loff.fill > 0)) {
+ if (loff.lnum < wp->w_topline
+ || (loff.lnum == wp->w_topline && loff.fill > 0)) {
break;
}
n += loff.height;
diff --git a/test/functional/ui/decorations_spec.lua b/test/functional/ui/decorations_spec.lua
index 843121b45a..eea62140ce 100644
--- a/test/functional/ui/decorations_spec.lua
+++ b/test/functional/ui/decorations_spec.lua
@@ -4895,7 +4895,7 @@ if (h->n_buckets < new_n_buckets) { // expand
]])
end)
- it('works with full page scrolling #28390', function()
+ it('works with full page scrolling #28290', 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'}}} })