patch 9.1.0855: setting 'cmdheight' may cause hit-enter-prompt
Problem: setting 'cmdheight' may cause hit-enter-prompt and echo output
to be missing
Solution: Before cleaning the cmdline, check the need_wait_return flag
(nwounkn)
closes: #13432
Signed-off-by: nwounkn <nwounkn@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/src/testdir/dumps/Test_changing_cmdheight_7.dump b/src/testdir/dumps/Test_changing_cmdheight_7.dump
new file mode 100644
index 0000000..a3ba88e
--- /dev/null
+++ b/src/testdir/dumps/Test_changing_cmdheight_7.dump
@@ -0,0 +1,8 @@
+|~+0#4040ff13#ffffff0| @73
+|~| @73
+|~| @73
+|~| @73
+|[+3#0000000&|N|o| |N|a|m|e|]| @47|0|,|0|-|1| @9|A|l@1
+|f+0&&|o@1| @71
+|b|a|r| @71
+|P+0#00e0003&|r|e|s@1| |E|N|T|E|R| |o|r| |t|y|p|e| |c|o|m@1|a|n|d| |t|o| |c|o|n|t|i|n|u|e> +0#0000000&@35
diff --git a/src/testdir/test_cmdline.vim b/src/testdir/test_cmdline.vim
index 30ded35..110be65 100644
--- a/src/testdir/test_cmdline.vim
+++ b/src/testdir/test_cmdline.vim
@@ -270,6 +270,12 @@
let lines =<< trim END
set cmdheight=1 laststatus=2
+ func EchoOne()
+ set laststatus=2 cmdheight=1
+ echo 'foo'
+ echo 'bar'
+ set cmdheight=2
+ endfunc
func EchoTwo()
set laststatus=2
set cmdheight=5
@@ -305,6 +311,10 @@
call term_sendkeys(buf, ":call EchoTwo()\<CR>")
call VerifyScreenDump(buf, 'Test_changing_cmdheight_6', {})
+ " increasing 'cmdheight' doesn't clear the messages that need hit-enter
+ call term_sendkeys(buf, ":call EchoOne()\<CR>")
+ call VerifyScreenDump(buf, 'Test_changing_cmdheight_7', {})
+
" clean up
call StopVimInTerminal(buf)
endfunc
diff --git a/src/version.c b/src/version.c
index 5337b1a..22473eb 100644
--- a/src/version.c
+++ b/src/version.c
@@ -705,6 +705,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 855,
+/**/
854,
/**/
853,
diff --git a/src/window.c b/src/window.c
index 7c8f4fb..f8a6907 100644
--- a/src/window.c
+++ b/src/window.c
@@ -7343,11 +7343,14 @@
// Recompute window positions.
(void)win_comp_pos();
- // clear the lines added to cmdline
- if (full_screen)
- screen_fill(cmdline_row, (int)Rows, 0,
- (int)Columns, ' ', ' ', 0);
- msg_row = cmdline_row;
+ if (!need_wait_return)
+ {
+ // clear the lines added to cmdline
+ if (full_screen)
+ screen_fill(cmdline_row, (int)Rows, 0,
+ (int)Columns, ' ', ' ', 0);
+ msg_row = cmdline_row;
+ }
redraw_cmdline = TRUE;
return;
}