changeset 10005:4b4ba6589a98 v7.4.2275

commit https://github.com/vim/vim/commit/e67d546f3c691139e6d3d33f36724d98aec04c14 Author: Bram Moolenaar <Bram@vim.org> Date: Sat Aug 27 22:40:42 2016 +0200 patch 7.4.2275 Problem: ":diffoff!" does not remove filler lines. Solution: Force a redraw and invalidate the cursor. (closes https://github.com/vim/vim/issues/1014)
author Christian Brabandt <cb@256bit.org>
date Sat, 27 Aug 2016 22:45:06 +0200
parents 8061455d9179
children 1908a21d91b2
files src/diff.c src/testdir/test_diffmode.vim src/version.c
diffstat 3 files changed, 24 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- 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);
--- 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
--- 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,