diff options
-rw-r--r-- | src/nvim/eval.c | 2 | ||||
-rw-r--r-- | test/functional/ui/messages_spec.lua | 30 |
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>') |