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:
11
src/eval.c
11
src/eval.c
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -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();
|
||||||
|
|
||||||
|
#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.
|
// Reset msg_didout, so that a message that's there is overwritten.
|
||||||
msg_didout = FALSE;
|
msg_didout = FALSE;
|
||||||
msg_col = 0;
|
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;
|
||||||
|
6
src/testdir/dumps/Test_cmdheight_zero_6.dump
Normal file
6
src/testdir/dumps/Test_cmdheight_zero_6.dump
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
|s+0&#ffffff0|o|m|e| >t|e|x|t| @65
|
||||||
|
|~+0#4040ff13&| @73
|
||||||
|
|~| @73
|
||||||
|
|~| @73
|
||||||
|
|~| @73
|
||||||
|
|~| @73
|
6
src/testdir/dumps/Test_cmdheight_zero_7.dump
Normal file
6
src/testdir/dumps/Test_cmdheight_zero_7.dump
Normal 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
|
6
src/testdir/dumps/Test_cmdheight_zero_8.dump
Normal file
6
src/testdir/dumps/Test_cmdheight_zero_8.dump
Normal 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
|
@@ -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')
|
||||||
|
@@ -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,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user