diff options
Diffstat (limited to 'src/diff.c')
-rw-r--r-- | src/diff.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/diff.c b/src/diff.c index 7bdfa4819..b59a12510 100644 --- a/src/diff.c +++ b/src/diff.c @@ -655,6 +655,8 @@ diff_redraw( int dofold) // also recompute the folds { win_T *wp; + win_T *wp_other = NULL; + int used_max_fill = FALSE; int n; need_diff_redraw = FALSE; @@ -662,6 +664,8 @@ diff_redraw( if (wp->w_p_diff) { redraw_win_later(wp, SOME_VALID); + if (wp != curwin) + wp_other = wp; #ifdef FEAT_FOLDING if (dofold && foldmethodIsDiff(wp)) foldUpdateAll(wp); @@ -674,10 +678,19 @@ diff_redraw( if (wp->w_topfill > n) wp->w_topfill = (n < 0 ? 0 : n); else if (n > 0 && n > wp->w_topfill) + { wp->w_topfill = n; + if (wp == curwin) + used_max_fill = TRUE; + } check_topfill(wp, FALSE); } } + + if (wp_other != NULL && used_max_fill && curwin->w_p_scb) + // The current window was set to used the maximum number of filler + // lines, may need to reduce them. + diff_set_topline(wp_other, curwin); } static void |