vim-patch:8.2.2595: setting 'winminheight' may cause 'lines' to change

Problem:    Setting 'winminheight' may cause 'lines' to change.
Solution:   Also take minimal height of other tabpages into account. (vim/vim#7899)
9e813b3dea
This commit is contained in:
Jan Edmund Lazo 2021-03-13 10:09:09 -05:00
parent 60670c1fd3
commit a1cdb6ca6a
No known key found for this signature in database
GPG Key ID: 64915E6E9F735B15
3 changed files with 38 additions and 2 deletions

View File

@ -634,6 +634,28 @@ func Test_opt_winminheight_term()
call delete('Xwinminheight')
endfunc
func Test_opt_winminheight_term_tabs()
" See test/functional/legacy/options_spec.lua
CheckRunVimInTerminal
" The tabline should be taken into account.
let lines =<< trim END
set wmh=0 stal=2
split
split
split
split
tabnew
END
call writefile(lines, 'Xwinminheight')
let buf = RunVimInTerminal('-S Xwinminheight', #{rows: 11})
call term_sendkeys(buf, ":set wmh=1\n")
call WaitForAssert({-> assert_match('E36: Not enough room', term_getline(buf, 11))})
call StopVimInTerminal(buf)
call delete('Xwinminheight')
endfunc
" Test for setting option value containing spaces with isfname+=32
func Test_isfname_with_options()
set isfname+=32

View File

@ -5501,8 +5501,8 @@ void win_setminheight(void)
// loop until there is a 'winminheight' that is possible
while (p_wmh > 0) {
const int room = Rows - p_ch - tabline_height();
const int needed = frame_minheight(topframe, NULL);
const int room = Rows - p_ch;
const int needed = min_rows() - 1; // 1 was added for the cmdline
if (room >= needed) {
break;
}

View File

@ -42,6 +42,20 @@ describe('set', function()
matches('E36: Not enough room', exc_exec('set wmh=1'))
end)
it('winminheight works with tabline', function()
local screen = Screen.new(20, 11)
screen:attach()
source([[
set wmh=0 stal=2
split
split
split
split
tabnew
]])
matches('E36: Not enough room', exc_exec('set wmh=1'))
end)
it('scroll works', function()
local screen = Screen.new(42, 16)
screen:attach()