aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/nvim/move.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/nvim/move.c b/src/nvim/move.c
index 89d2b69f51..55e724f38d 100644
--- a/src/nvim/move.c
+++ b/src/nvim/move.c
@@ -1363,8 +1363,9 @@ bool scrolldown(win_T *wp, linenr_T line_count, int byfold)
}
wp->w_botline -= wp->w_topline - first;
wp->w_topline = first;
+ } else if (decor_conceal_line(wp, wp->w_topline - 1, false)) {
+ todo++;
} else {
- todo += decor_conceal_line(wp, wp->w_topline - 1, false);
if (do_sms) {
int size = linetabsize_eol(wp, wp->w_topline);
if (size > width1) {
@@ -1386,6 +1387,13 @@ bool scrolldown(win_T *wp, linenr_T line_count, int byfold)
wp->w_botline--; // approximate w_botline
invalidate_botline(wp);
}
+
+ // Adjust for concealed lines above w_topline
+ while (wp->w_topline > 1 && decor_conceal_line(wp, wp->w_topline - 2, false)) {
+ wp->w_topline--;
+ hasFolding(wp, wp->w_topline, &wp->w_topline, NULL);
+ }
+
wp->w_wrow += done; // keep w_wrow updated
wp->w_cline_row += done; // keep w_cline_row updated