aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nvim/eval.c2
-rw-r--r--test/functional/ui/messages_spec.lua30
2 files changed, 31 insertions, 1 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c
index f9b32d758d..74b1dbfb72 100644
--- a/src/nvim/eval.c
+++ b/src/nvim/eval.c
@@ -8106,7 +8106,7 @@ void ex_execute(exarg_T *eap)
// We don't want to abort following commands, restore did_emsg.
int save_did_emsg = did_emsg;
msg_ext_set_kind("echoerr");
- emsg(ga.ga_data);
+ emsg_multiline(ga.ga_data, true);
if (!force_abort) {
did_emsg = save_did_emsg;
}
diff --git a/test/functional/ui/messages_spec.lua b/test/functional/ui/messages_spec.lua
index 8a13796c04..ca2bf67220 100644
--- a/test/functional/ui/messages_spec.lua
+++ b/test/functional/ui/messages_spec.lua
@@ -333,6 +333,36 @@ describe('ui/ext_messages', function()
]]}
end)
+ it(':echoerr multiline', function()
+ exec_lua([[vim.g.multi = table.concat({ "bork", "fail" }, "\n")]])
+ feed(':echoerr g:multi<cr>')
+ screen:expect{grid=[[
+ ^ |
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ ]], messages={{
+ content = {{ "bork\nfail", 2 }},
+ kind = "echoerr"
+ }}}
+
+ feed(':messages<cr>')
+ screen:expect{grid=[[
+ ^ |
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ ]], messages={{
+ content = {{ "Press ENTER or type command to continue", 4 }},
+ kind = "return_prompt"
+ }}, msg_history={{
+ content = {{ "bork\nfail", 2 }},
+ kind = "echoerr"
+ }}}
+ end)
+
it('shortmess-=S', function()
command('set shortmess-=S')
feed('iline 1\nline 2<esc>')