diff options
author | Bram Moolenaar <Bram@vim.org> | 2022-08-28 21:36:43 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2022-08-28 21:36:43 +0100 |
commit | 134b86553c12c46e0ae7d534f6fe65e8ba2d50bc (patch) | |
tree | 11fffb0e3c9fccdd446276d1414c508d1bc98e3f /src | |
parent | f2fb54f641aa0e8a64356e4d0053f89b52c78229 (diff) |
patch 9.0.0307: :echomsg doesn't work properly with cmdheight=0v9.0.0307
Problem: :echomsg doesn't work properly with cmdheight=0.
Solution: Improve scrolling and displaying.
Diffstat (limited to 'src')
-rw-r--r-- | src/eval.c | 11 | ||||
-rw-r--r-- | src/ex_docmd.c | 11 | ||||
-rw-r--r-- | src/testdir/dumps/Test_cmdheight_zero_6.dump | 6 | ||||
-rw-r--r-- | src/testdir/dumps/Test_cmdheight_zero_7.dump | 6 | ||||
-rw-r--r-- | src/testdir/dumps/Test_cmdheight_zero_8.dump | 6 | ||||
-rw-r--r-- | src/testdir/test_messages.vim | 15 | ||||
-rw-r--r-- | src/version.c | 2 |
7 files changed, 54 insertions, 3 deletions
diff --git a/src/eval.c b/src/eval.c index 3d6d84c2bb..8cd2716406 100644 --- a/src/eval.c +++ b/src/eval.c @@ -6824,7 +6824,18 @@ ex_execute(exarg_T *eap) if (eap->skip) --emsg_skip; +#ifdef HAS_MESSAGE_WINDOW + if (use_message_window() && eap->cmdidx != CMD_execute) + { + // show the message window now + ex_redraw(eap); + // do not overwrite messages + msg_didout = TRUE; + if (msg_col == 0) + msg_col = 1; + } +#endif set_nextcmd(eap, arg); } diff --git a/src/ex_docmd.c b/src/ex_docmd.c index 89c9d26b0f..598c6b7c32 100644 --- a/src/ex_docmd.c +++ b/src/ex_docmd.c @@ -8370,9 +8370,14 @@ ex_redraw(exarg_T *eap) // After drawing the statusline screen_attr may still be set. screen_stop_highlight(); - // Reset msg_didout, so that a message that's there is overwritten. - msg_didout = FALSE; - msg_col = 0; +#ifdef HAS_MESSAGE_WINDOW + if (!use_message_window()) // append messages in the message window +#endif + { + // Reset msg_didout, so that a message that's there is overwritten. + msg_didout = FALSE; + msg_col = 0; + } // No need to wait after an intentional redraw. need_wait_return = FALSE; diff --git a/src/testdir/dumps/Test_cmdheight_zero_6.dump b/src/testdir/dumps/Test_cmdheight_zero_6.dump new file mode 100644 index 0000000000..7af84c9216 --- /dev/null +++ b/src/testdir/dumps/Test_cmdheight_zero_6.dump @@ -0,0 +1,6 @@ +|s+0&#ffffff0|o|m|e| >t|e|x|t| @65 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 diff --git a/src/testdir/dumps/Test_cmdheight_zero_7.dump b/src/testdir/dumps/Test_cmdheight_zero_7.dump new file mode 100644 index 0000000000..3c57623a65 --- /dev/null +++ b/src/testdir/dumps/Test_cmdheight_zero_7.dump @@ -0,0 +1,6 @@ +|s+0&#ffffff0|o|m|e| >t|e|x|t| @65 +|~+0#4040ff13&| @73 +|~| @73 +|═+0#e000002&@74 +|s|o|m|e| |t|e|x|t| @65 +|s|o|m|e| |m|o|r|e| |t|e|x|t| @60 diff --git a/src/testdir/dumps/Test_cmdheight_zero_8.dump b/src/testdir/dumps/Test_cmdheight_zero_8.dump new file mode 100644 index 0000000000..6dbd42c5d1 --- /dev/null +++ b/src/testdir/dumps/Test_cmdheight_zero_8.dump @@ -0,0 +1,6 @@ +|s+0&#ffffff0|o|m|e| >t|e|x|t| @65 +|~+0#4040ff13&| @73 +|═+0#e000002&@74 +|s|o|m|e| |t|e|x|t| @65 +|s|o|m|e| |m|o|r|e| |t|e|x|t| @60 +|e|v|e|n| |m|o|r|e| |t|e|x|t| @60 diff --git a/src/testdir/test_messages.vim b/src/testdir/test_messages.vim index f714478efc..8683adcf97 100644 --- a/src/testdir/test_messages.vim +++ b/src/testdir/test_messages.vim @@ -478,6 +478,13 @@ func Test_cmdheight_zero_dump() set cmdheight=0 set showmode call setline(1, 'some text') + func ShowMessages() + echomsg 'some text' + sleep 100m + echomsg 'some more text' + sleep 2500m + echomsg 'even more text' + endfunc END call writefile(lines, 'XtestCmdheight') let buf = RunVimInTerminal('-S XtestCmdheight', #{rows: 6}) @@ -501,6 +508,14 @@ func Test_cmdheight_zero_dump() call term_sendkeys(buf, ":w XsomeText\<CR>") call VerifyScreenDump(buf, 'Test_cmdheight_zero_5', {}) + call term_sendkeys(buf, ":call popup_clear()\<CR>") + call VerifyScreenDump(buf, 'Test_cmdheight_zero_6', {}) + + call term_sendkeys(buf, ":call ShowMessages()\<CR>") + call VerifyScreenDump(buf, 'Test_cmdheight_zero_7', {}) + sleep 2 + call VerifyScreenDump(buf, 'Test_cmdheight_zero_8', {}) + " clean up call StopVimInTerminal(buf) call delete('XtestCmdheight') diff --git a/src/version.c b/src/version.c index b69b74ad89..80ce6fedea 100644 --- a/src/version.c +++ b/src/version.c @@ -708,6 +708,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 307, +/**/ 306, /**/ 305, |