From c25fd85c2e618535b7780b965a883cb20ab1aa1a Mon Sep 17 00:00:00 2001 From: Luuk van Baal Date: Fri, 28 Apr 2023 12:32:39 +0200 Subject: vim-patch:9.0.0998: "gk" may reset skipcol when not needed Problem: "gk" may reset skipcol when not needed. Solution: Only reset skipcol if the cursor column is less. https://github.com/vim/vim/commit/1b73edd9ee40aec400f3611f59823cec5fd1c489 Co-authored-by: Bram Moolenaar --- src/nvim/move.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/nvim/move.c b/src/nvim/move.c index abe908cfa0..2bae811e6d 100644 --- a/src/nvim/move.c +++ b/src/nvim/move.c @@ -1776,7 +1776,7 @@ void scroll_cursor_top(int min_scroll, int always) scroll_cursor_halfway(false, false); } else { // If "always" is false, only adjust topline to a lower value, higher - // value may happen with wrapping lines + // value may happen with wrapping lines. if (new_topline < curwin->w_topline || always) { curwin->w_topline = new_topline; } @@ -1792,7 +1792,8 @@ void scroll_cursor_top(int min_scroll, int always) } check_topfill(curwin, false); // TODO(vim): if the line doesn't fit may optimize w_skipcol - if (curwin->w_topline == curwin->w_cursor.lnum) { + if (curwin->w_topline == curwin->w_cursor.lnum + && curwin->w_skipcol >= curwin->w_cursor.col) { reset_skipcol(curwin); } if (curwin->w_topline != old_topline -- cgit