patch 7.4.2275
Problem: ":diffoff!" does not remove filler lines.
Solution: Force a redraw and invalidate the cursor. (closes #1014)
diff --git a/src/diff.c b/src/diff.c
index c29e944..35e29fc 100644
--- a/src/diff.c
+++ b/src/diff.c
@@ -1236,10 +1236,14 @@
: wp->w_p_fen_save;
foldUpdateAll(wp);
- /* make sure topline is not halfway a fold */
- changed_window_setting_win(wp);
#endif
}
+ /* remove filler lines */
+ wp->w_topfill = 0;
+
+ /* make sure topline is not halfway a fold and cursor is
+ * invalidated */
+ changed_window_setting_win(wp);
/* Note: 'sbo' is not restored, it's a global option. */
diff_buf_adjust(wp);
diff --git a/src/testdir/test_diffmode.vim b/src/testdir/test_diffmode.vim
index 7666594..5de394d 100644
--- a/src/testdir/test_diffmode.vim
+++ b/src/testdir/test_diffmode.vim
@@ -202,3 +202,19 @@
bwipe!
enew!
endfunc
+
+func Test_diffoff()
+ enew!
+ call setline(1, ['Two', 'Three'])
+ let normattr = screenattr(1, 1)
+ diffthis
+ botright vert new
+ call setline(1, ['One', '', 'Two', 'Three'])
+ diffthis
+ redraw
+ diffoff!
+ redraw
+ call assert_equal(normattr, screenattr(1, 1))
+ bwipe!
+ bwipe!
+endfunc
diff --git a/src/version.c b/src/version.c
index 9987b95..152e7b7 100644
--- a/src/version.c
+++ b/src/version.c
@@ -764,6 +764,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 2275,
+/**/
2274,
/**/
2273,