]> granicus.if.org Git - vim/commitdiff
patch 7.4.2275 v7.4.2275
authorBram Moolenaar <Bram@vim.org>
Sat, 27 Aug 2016 20:40:42 +0000 (22:40 +0200)
committerBram Moolenaar <Bram@vim.org>
Sat, 27 Aug 2016 20:40:42 +0000 (22:40 +0200)
Problem:    ":diffoff!" does not remove filler lines.
Solution:   Force a redraw and invalidate the cursor. (closes #1014)

src/diff.c
src/testdir/test_diffmode.vim
src/version.c

index c29e94437631864809829578871364d9000b3126..35e29fcdf916b20098b2f18df27b8a891e8f9d8f 100644 (file)
@@ -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);
index 766659486268c7ba6ab8003a8e53f37478296bf2..5de394de8ef7aeaec359dd1d6c58d5f865efd70f 100644 (file)
@@ -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
index 9987b952d05f9cccb22566b1347a4b1880481d46..152e7b74d628d5604d7c0e0b93e670a57235d2db 100644 (file)
@@ -763,6 +763,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    2275,
 /**/
     2274,
 /**/