vim-patch:9.0.1635: error message is cleared when removing mode message

Problem:    Error message is cleared when removing mode message.
Solution:   Also reset flags when the message is further down.

da51ad51bf

Co-authored-by: Bram Moolenaar <Bram@vim.org>
This commit is contained in:
zeertzjq
2023-06-16 08:13:42 +08:00
parent cba07dad49
commit 11060793d6
3 changed files with 29 additions and 5 deletions

View File

@@ -1562,7 +1562,7 @@ int msg_outtrans_len_attr(const char *msgstr, int len, int attr)
// When drawing over the command line no need to clear it later or remove
// the mode message.
if (msg_row == cmdline_row && msg_col == 0) {
if (msg_row >= cmdline_row && msg_col == 0) {
clear_cmdline = false;
mode_displayed = false;
}

View File

@@ -54,6 +54,7 @@ describe('messages', function()
screen = Screen.new(60, 10)
screen:set_default_attr_ids({
[0] = {bold = true, foreground = Screen.colors.Blue}, -- NonText
[1] = {background = Screen.colors.Red, foreground = Screen.colors.White}, -- ErrorMsg
})
screen:attach()
exec([[
@@ -64,13 +65,13 @@ describe('messages', function()
endfunction
set showmode
set cmdheight=1
call setline(1, ['one', 'two', 'three'])
call setline(1, ['one', 'NoSuchFile', 'three'])
]])
feed('gx')
screen:expect([[
^one |
two |
NoSuchFile |
three |
{0:~ }|
{0:~ }|
@@ -85,7 +86,7 @@ describe('messages', function()
feed('vEgx')
screen:expect([[
^one |
two |
NoSuchFile |
three |
{0:~ }|
{0:~ }|
@@ -95,6 +96,22 @@ describe('messages', function()
{0:~ }|
from DebugSilent visual |
]])
-- removing the mode message used to also clear the error message
command('set cmdheight=2')
feed('2GvEgf')
screen:expect([[
one |
NoSuchFil^e |
three |
{0:~ }|
{0:~ }|
{0:~ }|
{0:~ }|
{0:~ }|
from DebugSilent visual |
{1:E447: Can't find file "NoSuchFile" in path} |
]])
end)
describe('more prompt', function()

View File

@@ -352,7 +352,8 @@ func Test_message_not_cleared_after_mode()
endfunction
set showmode
set cmdheight=1
call setline(1, ['one', 'two', 'three'])
call test_settime(1)
call setline(1, ['one', 'NoSuchFile', 'three'])
END
call writefile(lines, 'XmessageMode', 'D')
let buf = RunVimInTerminal('-S XmessageMode', {'rows': 10})
@@ -366,6 +367,12 @@ func Test_message_not_cleared_after_mode()
call TermWait(buf)
call VerifyScreenDump(buf, 'Test_message_not_cleared_after_mode_2', {})
" removing the mode message used to also clear the error message
call term_sendkeys(buf, ":set cmdheight=2\<CR>")
call term_sendkeys(buf, '2GvEgf')
call TermWait(buf)
call VerifyScreenDump(buf, 'Test_message_not_cleared_after_mode_3', {})
call StopVimInTerminal(buf)
endfunc