diff options
Diffstat (limited to 'src/nvim/normal.c')
| -rw-r--r-- | src/nvim/normal.c | 10 | 
1 files changed, 6 insertions, 4 deletions
| diff --git a/src/nvim/normal.c b/src/nvim/normal.c index 2e49108028..f6add44f6a 100644 --- a/src/nvim/normal.c +++ b/src/nvim/normal.c @@ -4117,10 +4117,10 @@ void scroll_redraw(int up, long count)    int prev_topfill = curwin->w_topfill;    linenr_T prev_lnum = curwin->w_cursor.lnum; -  if (up) -    scrollup(count, true); -  else +  bool moved = up ? +    scrollup(count, true) :      scrolldown(count, true); +    if (get_scrolloff_value()) {      // Adjust the cursor position for 'scrolloff'.  Mark w_topline as      // valid, otherwise the screen jumps back at the end of the file. @@ -4152,7 +4152,9 @@ void scroll_redraw(int up, long count)    }    if (curwin->w_cursor.lnum != prev_lnum)      coladvance(curwin->w_curswant); -  curwin->w_viewport_invalid = true; +  // XXX: can `moved` be used to prevent other work here? +  if (moved) +    curwin->w_viewport_invalid = true;    redraw_later(VALID);  } | 
