vim-patch:8.0.0490: vertical split makes 'winfixwidth' window smaller (#7990)

Problem:    Splitting a 'winfixwidth' window vertically makes it one column
            smaller. (Dominique Pelle)
Solution:   Add one to the width for the separator.
38e3483637
This commit is contained in:
KunMing Xie 2018-02-12 07:00:24 +08:00 committed by Justin M. Keyes
parent f389196a34
commit 6bcee20806
2 changed files with 9 additions and 14 deletions

View File

@ -306,20 +306,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))

View File

@ -641,11 +641,12 @@ int win_split_ins(int size, int flags, win_T *new_wp, int dir)
if (oldwin->w_width - new_size - 1 < p_wmw)
do_equal = TRUE;
/* 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. */
if (oldwin->w_p_wfw)
win_setwidth_win(oldwin->w_width + new_size, oldwin);
// 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. Add one for the separator.
if (oldwin->w_p_wfw) {
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. */