1
0
forked from aniani/vim

patch 9.0.0307: :echomsg doesn't work properly with cmdheight=0

Problem:    :echomsg doesn't work properly with cmdheight=0.
Solution:   Improve scrolling and displaying.
This commit is contained in:
Bram Moolenaar
2022-08-28 21:36:43 +01:00
parent f2fb54f641
commit 134b86553c
7 changed files with 54 additions and 3 deletions

View File

@@ -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);
}

View File

@@ -8370,9 +8370,14 @@ ex_redraw(exarg_T *eap)
// After drawing the statusline screen_attr may still be set.
screen_stop_highlight();
#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;

View File

@@ -0,0 +1,6 @@
|s+0&#ffffff0|o|m|e| >t|e|x|t| @65
|~+0#4040ff13&| @73
|~| @73
|~| @73
|~| @73
|~| @73

View File

@@ -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

View File

@@ -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

View File

@@ -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')

View File

@@ -707,6 +707,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
307,
/**/
306,
/**/