diff --git a/src/nvim/option.c b/src/nvim/option.c index 44a4ec2843..d5a5b6c3dd 100644 --- a/src/nvim/option.c +++ b/src/nvim/option.c @@ -2626,8 +2626,7 @@ static const char *set_num_option(int opt_idx, char *varp, long value, char *err } if ((curwin->w_p_scr <= 0 - || (curwin->w_p_scr > curwin->w_height - && curwin->w_height > 0)) + || (curwin->w_p_scr > curwin->w_height_inner && curwin->w_height_inner > 0)) && full_screen) { if (pp == &(curwin->w_p_scr)) { if (curwin->w_p_scr != 0) { @@ -2637,8 +2636,8 @@ static const char *set_num_option(int opt_idx, char *varp, long value, char *err } else if (curwin->w_p_scr <= 0) { // If 'scroll' became invalid because of a side effect silently adjust it. curwin->w_p_scr = 1; - } else { // curwin->w_p_scr > curwin->w_height - curwin->w_p_scr = curwin->w_height; + } else { // curwin->w_p_scr > curwin->w_height_inner + curwin->w_p_scr = curwin->w_height_inner; } } if ((p_sj < -100 || p_sj >= Rows) && full_screen) { diff --git a/test/functional/ui/multigrid_spec.lua b/test/functional/ui/multigrid_spec.lua index d755bcb76a..26494968b4 100644 --- a/test/functional/ui/multigrid_spec.lua +++ b/test/functional/ui/multigrid_spec.lua @@ -886,6 +886,12 @@ describe('ext_multigrid', function() eq(20, win_info.height) end) + it("'scroll' option works properly", function() + eq(10, meths.get_option_value('scroll', { win = 0 })) + meths.set_option_value('scroll', 15, { win = 0 }) + eq(15, meths.get_option_value('scroll', { win = 0 })) + end) + it('gets written till grid width', function() insert(('a'):rep(60).."\n") screen:expect{grid=[[