summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2016-08-27 22:40:42 +0200
committerBram Moolenaar <Bram@vim.org>2016-08-27 22:40:42 +0200
commite67d546f3c691139e6d3d33f36724d98aec04c14 (patch)
tree8d990c67d29e4085dcb259b43dad3bf76833b05c
parent818078ddfbb8cc2546f697c5675a251d095722ec (diff)
downloadvim-git-e67d546f3c691139e6d3d33f36724d98aec04c14.tar.gz
patch 7.4.2275v7.4.2275
Problem: ":diffoff!" does not remove filler lines. Solution: Force a redraw and invalidate the cursor. (closes #1014)
-rw-r--r--src/diff.c8
-rw-r--r--src/testdir/test_diffmode.vim16
-rw-r--r--src/version.c2
3 files changed, 24 insertions, 2 deletions
diff --git a/src/diff.c b/src/diff.c
index c29e94437..35e29fcdf 100644
--- a/src/diff.c
+++ b/src/diff.c
@@ -1236,10 +1236,14 @@ ex_diffoff(exarg_T *eap)
: 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 766659486..5de394de8 100644
--- a/src/testdir/test_diffmode.vim
+++ b/src/testdir/test_diffmode.vim
@@ -202,3 +202,19 @@ func Test_diffget_diffput()
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 9987b952d..152e7b74d 100644
--- a/src/version.c
+++ b/src/version.c
@@ -764,6 +764,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 2275,
+/**/
2274,
/**/
2273,