fix(messages): single event for multi-expr :echo (#34393)

Problem:  Separate "msg_show" event for each expression in a multi-expr
          :echo(n) command.
Solution: Only set the kind when `atstart == true`.
This commit is contained in:
luukvbaal
2025-06-09 18:58:31 +02:00
committed by GitHub
parent e876a739ee
commit a5f236291c
2 changed files with 26 additions and 1 deletions

View File

@@ -7846,6 +7846,7 @@ void ex_echo(exarg_T *eap)
if (!eap->skip) {
if (atstart) {
atstart = false;
msg_ext_set_kind("echo");
// Call msg_start() after eval1(), evaluating the expression
// may cause a message to appear.
if (eap->cmdidx == CMD_echo) {
@@ -7862,7 +7863,6 @@ void ex_echo(exarg_T *eap)
}
char *tofree = encode_tv2echo(&rettv, NULL);
if (*tofree != NUL) {
msg_ext_set_kind("echo");
msg_ext_append = eap->cmdidx == CMD_echon;
msg_multiline(cstr_as_string(tofree), echo_hl_id, true, false, &need_clear);
}