changeset 11207:e6140f3d2be7 v8.0.0490

patch 8.0.0490: vertical split makes 'winfixwidth' window smaller commit https://github.com/vim/vim/commit/38e3483637c16e018f88c07b1dcff97cdb821a29 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Mar 19 20:22:36 2017 +0100 patch 8.0.0490: vertical split makes 'winfixwidth' window smaller Problem: Splitting a 'winfixwidth' window vertically makes it one column smaller. (Dominique Pelle) Solution: Add one to the width for the separator.
author Christian Brabandt <cb@256bit.org>
date Sun, 19 Mar 2017 20:30:04 +0100
parents 7f0df640e94e
children eee711594493
files src/testdir/test_window_cmd.vim src/version.c src/window.c
diffstat 3 files changed, 7 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/src/testdir/test_window_cmd.vim
+++ b/src/testdir/test_window_cmd.vim
@@ -294,20 +294,14 @@ func Test_window_width()
   set winfixwidth
   vsplit Xc
   let [ww1, ww2, ww3] = [winwidth(1), winwidth(2), winwidth(3)]
-  " FIXME: commented out: I would expect the width of 2nd window to 
-  " remain 2 but it's actually 1?!
-  "call assert_equal(2, winwidth(2))
+  call assert_equal(2, winwidth(2))
   call assert_inrange(ww3, ww3 + 1, ww1)
   3wincmd >
-  " FIXME: commented out: I would expect the width of 2nd window to 
-  " remain 2 but it's actually 1?!
-  "call assert_equal(2,       winwidth(2))
+  call assert_equal(2,       winwidth(2))
   call assert_equal(ww1 + 3, winwidth(1))
   call assert_equal(ww3 - 3, winwidth(3))
   wincmd =
-  " FIXME: commented out: I would expect the width of 2nd window to 
-  " remain 2 but it's actually 1?!
-  "call assert_equal(2,   winwidth(2))
+  call assert_equal(2,   winwidth(2))
   call assert_equal(ww1, winwidth(1))
   call assert_equal(ww3, winwidth(3))
 
--- a/src/version.c
+++ b/src/version.c
@@ -765,6 +765,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    490,
+/**/
     489,
 /**/
     488,
--- a/src/window.c
+++ b/src/window.c
@@ -870,9 +870,9 @@ win_split_ins(
 
 	/* We don't like to take lines for the new window from a
 	 * 'winfixwidth' window.  Take them from a window to the left or right
-	 * instead, if possible. */
+	 * instead, if possible. Add one for the separator. */
 	if (oldwin->w_p_wfw)
-	    win_setwidth_win(oldwin->w_width + new_size, oldwin);
+	    win_setwidth_win(oldwin->w_width + new_size + 1, oldwin);
 
 	/* Only make all windows the same width if one of them (except oldwin)
 	 * is wider than one of the split windows. */