0
0
mirror of https://github.com/vim/vim.git synced 2025-09-25 03:54:15 -04:00

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) if (eap->skip)
--emsg_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); 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. // After drawing the statusline screen_attr may still be set.
screen_stop_highlight(); screen_stop_highlight();
// Reset msg_didout, so that a message that's there is overwritten. #ifdef HAS_MESSAGE_WINDOW
msg_didout = FALSE; if (!use_message_window()) // append messages in the message window
msg_col = 0; #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. // No need to wait after an intentional redraw.
need_wait_return = FALSE; 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 cmdheight=0
set showmode set showmode
call setline(1, 'some text') call setline(1, 'some text')
func ShowMessages()
echomsg 'some text'
sleep 100m
echomsg 'some more text'
sleep 2500m
echomsg 'even more text'
endfunc
END END
call writefile(lines, 'XtestCmdheight') call writefile(lines, 'XtestCmdheight')
let buf = RunVimInTerminal('-S XtestCmdheight', #{rows: 6}) let buf = RunVimInTerminal('-S XtestCmdheight', #{rows: 6})
@@ -501,6 +508,14 @@ func Test_cmdheight_zero_dump()
call term_sendkeys(buf, ":w XsomeText\<CR>") call term_sendkeys(buf, ":w XsomeText\<CR>")
call VerifyScreenDump(buf, 'Test_cmdheight_zero_5', {}) 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 " clean up
call StopVimInTerminal(buf) call StopVimInTerminal(buf)
call delete('XtestCmdheight') call delete('XtestCmdheight')

View File

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