aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nvim/message.c2
-rw-r--r--test/functional/legacy/messages_spec.lua23
-rw-r--r--test/old/testdir/test_messages.vim9
3 files changed, 29 insertions, 5 deletions
diff --git a/src/nvim/message.c b/src/nvim/message.c
index d0b128c568..0064f0358b 100644
--- a/src/nvim/message.c
+++ b/src/nvim/message.c
@@ -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;
}
diff --git a/test/functional/legacy/messages_spec.lua b/test/functional/legacy/messages_spec.lua
index 0a4d418e9c..a604e68822 100644
--- a/test/functional/legacy/messages_spec.lua
+++ b/test/functional/legacy/messages_spec.lua
@@ -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()
diff --git a/test/old/testdir/test_messages.vim b/test/old/testdir/test_messages.vim
index 766b04d154..31c8b9942b 100644
--- a/test/old/testdir/test_messages.vim
+++ b/test/old/testdir/test_messages.vim
@@ -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