diff options
author | Bram Moolenaar <Bram@vim.org> | 2022-10-06 11:39:06 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2022-10-06 11:39:06 +0100 |
commit | c9f5f73206272ccad0aa536854debc5f9781978a (patch) | |
tree | 2d1976965b9052140b4ad929e3f0227721c9c862 | |
parent | db77cb3c08784e6038dd029271b2080c1b2d9acb (diff) |
patch 9.0.0670: no space for command line when there is a tablinev9.0.0670
Problem: No space for command line when there is a tabline.
Solution: Correct computation of where the command line should be.
(closes #11295)
-rw-r--r-- | src/option.c | 3 | ||||
-rw-r--r-- | src/testdir/dumps/Test_cmdheight_tabline_1.dump | 6 | ||||
-rw-r--r-- | src/testdir/test_cmdline.vim | 10 | ||||
-rw-r--r-- | src/version.c | 2 | ||||
-rw-r--r-- | src/window.c | 4 |
5 files changed, 22 insertions, 3 deletions
diff --git a/src/option.c b/src/option.c index 1b8c3eae8c..3cd1d4019f 100644 --- a/src/option.c +++ b/src/option.c @@ -3577,7 +3577,8 @@ set_num_option( // Only compute the new window layout when startup has been // completed. Otherwise the frame sizes may be wrong. - if ((p_ch != old_value || topframe->fr_height != Rows - p_ch) + if ((p_ch != old_value + || tabline_height() + topframe->fr_height != Rows - p_ch) && full_screen #ifdef FEAT_GUI && !gui.starting diff --git a/src/testdir/dumps/Test_cmdheight_tabline_1.dump b/src/testdir/dumps/Test_cmdheight_tabline_1.dump new file mode 100644 index 0000000000..7260309e7f --- /dev/null +++ b/src/testdir/dumps/Test_cmdheight_tabline_1.dump @@ -0,0 +1,6 @@ +| +2&#ffffff0|[|N|o| |N|a|m|e|]| | +1&&@63 +> +0&&@74 +|~+0#4040ff13&| @73 +|~| @73 +|[+3#0000000&|N|o| |N|a|m|e|]| @47|0|,|0|-|1| @9|A|l@1 +| +0&&@74 diff --git a/src/testdir/test_cmdline.vim b/src/testdir/test_cmdline.vim index 3cfdd76480..f27b0918cc 100644 --- a/src/testdir/test_cmdline.vim +++ b/src/testdir/test_cmdline.vim @@ -287,6 +287,16 @@ func Test_changing_cmdheight() call StopVimInTerminal(buf) endfunc +func Test_cmdheight_tabline() + CheckScreendump + + let buf = RunVimInTerminal('-c "set ls=2" -c "set stal=2" -c "set cmdheight=1"', {'rows': 6}) + call VerifyScreenDump(buf, 'Test_cmdheight_tabline_1', {}) + + " clean up + call StopVimInTerminal(buf) +endfunc + func Test_map_completion() call feedkeys(":map <unique> <si\<Tab>\<Home>\"\<CR>", 'xt') call assert_equal('"map <unique> <silent>', getreg(':')) diff --git a/src/version.c b/src/version.c index fa22ae540c..a52b70791b 100644 --- a/src/version.c +++ b/src/version.c @@ -700,6 +700,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 670, +/**/ 669, /**/ 668, diff --git a/src/window.c b/src/window.c index 1f3f9ad668..f63b8564fb 100644 --- a/src/window.c +++ b/src/window.c @@ -4332,7 +4332,7 @@ enter_tabpage( // When cmdheight is changed in a tab page with '<C-w>-', cmdline_row is // changed but p_ch and tp_ch_used are not changed. Thus we also need to // check cmdline_row. - if ((row < cmdline_row) && (cmdline_row <= Rows - p_ch)) + if (row < cmdline_row && cmdline_row <= Rows - p_ch) clear_cmdline = TRUE; // The tabpage line may have appeared or disappeared, may need to resize @@ -6665,7 +6665,7 @@ command_height(void) return; // Update cmdline_row to what it should be: just below the last window. - cmdline_row = topframe->fr_height; + cmdline_row = topframe->fr_height + tabline_height(); // If cmdline_row is smaller than what it is supposed to be for 'cmdheight' // then set old_p_ch to what it would be, so that the windows get resized |