From f2fb05238ad55586e26289a27f2af519e24f94f5 Mon Sep 17 00:00:00 2001 From: luukvbaal Date: Sun, 29 Oct 2023 00:05:29 +0200 Subject: vim-patch:9.0.2081: smoothscroll may result in wrong cursor position (#25815) Problem: With 'smoothscroll' set, "w_skipcol" is not reset when unsetting 'wrap'. Resulting in incorrect calculation of the cursor position. Solution: Reset "w_skipcol" when unsetting 'wrap'. fixes: vim/vim#12970 closes: vim/vim#13439 https://github.com/vim/vim/commit/1bf1bf569b96d2f9b28e0cce0968ffbf2fb80aac --- src/nvim/option.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/nvim/option.c b/src/nvim/option.c index a9916dc28c..2582e77662 100644 --- a/src/nvim/option.c +++ b/src/nvim/option.c @@ -2534,12 +2534,10 @@ static const char *did_set_showtabline(optset_T *args FUNC_ATTR_UNUSED) static const char *did_set_smoothscroll(optset_T *args FUNC_ATTR_UNUSED) { win_T *win = (win_T *)args->os_win; - if (win->w_p_sms) { - return NULL; + if (!win->w_p_sms) { + win->w_skipcol = 0; } - win->w_skipcol = 0; - changed_line_abv_curs_win(win); return NULL; } @@ -2746,11 +2744,13 @@ static const char *did_set_winwidth(optset_T *args) static const char *did_set_wrap(optset_T *args) { win_T *win = (win_T *)args->os_win; - - // If 'wrap' is set, set w_leftcol to zero. + // Set w_leftcol or w_skipcol to zero. if (win->w_p_wrap) { win->w_leftcol = 0; + } else { + win->w_skipcol = 0; } + return NULL; } /// Check the bounds of numeric options. -- cgit