From 6fd7e3bea4c38e79c77fe506a45781ffd17ebe4f Mon Sep 17 00:00:00 2001 From: Luuk van Baal Date: Fri, 28 Apr 2023 12:36:11 +0200 Subject: [PATCH] vim-patch:9.0.1000: with 'smoothscroll' skipcol may be reset unnecessarily Problem: With 'smoothscroll' skipcol may be reset unnecessarily. Solution: Check the line does actually fit in the window. https://github.com/vim/vim/commit/b21b8e9ed081a6ef6b6745fe65d219b3ac046c3b Co-authored-by: Bram Moolenaar --- src/nvim/move.c | 5 ++++- test/functional/legacy/scroll_opt_spec.lua | 9 +-------- test/old/testdir/test_scroll_opt.vim | 7 +++++++ 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/nvim/move.c b/src/nvim/move.c index 2bae811e6d..a6c87b641a 100644 --- a/src/nvim/move.c +++ b/src/nvim/move.c @@ -1465,7 +1465,10 @@ void adjust_skipcol(void) bool scrolled = false; validate_cheight(); - if (curwin->w_cline_height == curwin->w_height) { + if (curwin->w_cline_height == curwin->w_height + // w_cline_height may be capped at w_height, check there aren't + // actually more lines. + && plines_win(curwin, curwin->w_cursor.lnum, false) <= curwin->w_height) { // the line just fits in the window, don't scroll reset_skipcol(curwin); return; diff --git a/test/functional/legacy/scroll_opt_spec.lua b/test/functional/legacy/scroll_opt_spec.lua index 6c8ca2cf97..31d851f571 100644 --- a/test/functional/legacy/scroll_opt_spec.lua +++ b/test/functional/legacy/scroll_opt_spec.lua @@ -494,14 +494,7 @@ describe('smoothscroll', function() ]]) -- 'scrolloff' set to 2, scrolling down, cursor moves screen line up feed('gj') - screen:expect([[ - <<