changeset 29702:c43738957bee v9.0.0191

patch 9.0.0191: messages test fails; window size incorrect Commit: https://github.com/vim/vim/commit/d4cf9fc53e0b1d36e84d28ecd5595a6f102f325e Author: Bram Moolenaar <Bram@vim.org> Date: Thu Aug 11 14:13:37 2022 +0100 patch 9.0.0191: messages test fails; window size incorrect Problem: Messages test fails; window size incorrect when 'cmdheight' is made smaller. Solution: Properly cleanup after test with cmdheight zero. Resize windows correctly when 'cmdheight' gets smaller.
author Bram Moolenaar <Bram@vim.org>
date Thu, 11 Aug 2022 15:15:03 +0200
parents fb297eb5987b
children 0e09dde486f6
files src/testdir/dumps/Test_changing_cmdheight_5.dump src/testdir/test_cmdline.vim src/testdir/test_messages.vim src/version.c src/window.c
diffstat 5 files changed, 26 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/src/testdir/dumps/Test_changing_cmdheight_5.dump
@@ -0,0 +1,8 @@
+> +0&#ffffff0@74
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|[+3#0000000&|N|o| |N|a|m|e|]| @47|0|,|0|-|1| @9|A|l@1
+| +0&&@74
--- a/src/testdir/test_cmdline.vim
+++ b/src/testdir/test_cmdline.vim
@@ -239,6 +239,11 @@ func Test_changing_cmdheight()
   call term_sendkeys(buf, ":set cmdheight-=2\<CR>")
   call VerifyScreenDump(buf, 'Test_changing_cmdheight_4', {})
 
+  " reducing window size and then setting cmdheight 
+  call term_sendkeys(buf, ":resize -1\<CR>")
+  call term_sendkeys(buf, ":set cmdheight=1\<CR>")
+  call VerifyScreenDump(buf, 'Test_changing_cmdheight_5', {})
+
   " clean up
   call StopVimInTerminal(buf)
   call delete('XTest_cmdheight')
--- a/src/testdir/test_messages.vim
+++ b/src/testdir/test_messages.vim
@@ -388,6 +388,7 @@ func Test_fileinfo_after_echo()
 endfunc
 
 func Test_cmdheight_zero()
+  enew
   set cmdheight=0
   set showcmd
   redraw!
@@ -437,10 +438,13 @@ func Test_cmdheight_zero()
   7
   call feedkeys(":\"\<C-R>=line('w0')\<CR>\<CR>", "xt")
   call assert_equal('"1', @:)
+
   bwipe!
-
+  bwipe!
   set cmdheight&
   set showcmd&
+  tabnew
+  tabonly
 endfunc
 
 " vim: shiftwidth=2 sts=2 expandtab
--- a/src/version.c
+++ b/src/version.c
@@ -736,6 +736,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    191,
+/**/
     190,
 /**/
     189,
--- a/src/window.c
+++ b/src/window.c
@@ -6555,6 +6555,12 @@ command_height(void)
     if (p_ch > old_p_ch && cmdline_row <= Rows - p_ch)
 	return;
 
+    // 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
+    // properly for the new value.
+    if (cmdline_row < Rows - p_ch)
+	old_p_ch = Rows - cmdline_row;
+
     // Find bottom frame with width of screen.
     frp = lastwin->w_frame;
     while (frp->fr_width != Columns && frp->fr_parent != NULL)