diff options
Diffstat (limited to 'src/nvim/move.c')
-rw-r--r-- | src/nvim/move.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/nvim/move.c b/src/nvim/move.c index ead2b3b0d3..9e8abbcd96 100644 --- a/src/nvim/move.c +++ b/src/nvim/move.c @@ -248,7 +248,6 @@ void update_topline(win_T *wp) } linenr_T old_topline = wp->w_topline; - colnr_T old_skipcol = wp->w_skipcol; int old_topfill = wp->w_topfill; // If the buffer is empty, always set topline to 1. @@ -413,9 +412,11 @@ void update_topline(win_T *wp) dollar_vcol = -1; redraw_later(wp, UPD_VALID); - // Only reset w_skipcol if it was not just set to make cursor visible. - if (wp->w_skipcol == old_skipcol) { + // When 'smoothscroll' is not set, should reset w_skipcol. + if (!wp->w_p_sms) { reset_skipcol(wp); + } else if (wp->w_skipcol != 0) { + redraw_later(wp, UPD_SOME_VALID); } // May need to set w_skipcol when cursor in w_topline. @@ -660,7 +661,7 @@ static void curs_rows(win_T *wp) i--; // hold at inserted lines } } - if (valid && (lnum != wp->w_topline || !win_may_fill(wp))) { + if (valid && (lnum != wp->w_topline || (wp->w_skipcol == 0 && !win_may_fill(wp)))) { lnum = wp->w_lines[i].wl_lastlnum + 1; // Cursor inside folded lines, don't count this row if (lnum > wp->w_cursor.lnum) { |