diff options
-rw-r--r-- | src/nvim/eval.c | 19 | ||||
-rw-r--r-- | src/nvim/message.c | 35 |
2 files changed, 21 insertions, 33 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c index 596eff5b79..3a18a9492f 100644 --- a/src/nvim/eval.c +++ b/src/nvim/eval.c @@ -19593,24 +19593,7 @@ void ex_echo(exarg_T *eap) msg_puts_attr(" ", echo_attr); } char *tofree = encode_tv2echo(&rettv, NULL); - const char *p = tofree; - if (p != NULL) { - for (; *p != NUL && !got_int; ++p) { - if (*p == '\n' || *p == '\r' || *p == TAB) { - if (*p != TAB && needclr) { - /* remove any text still there from the command */ - msg_clr_eos(); - needclr = false; - } - msg_putchar_attr((uint8_t)(*p), echo_attr); - } else { - int i = (*mb_ptr2len)((const char_u *)p); - - (void)msg_outtrans_len_attr((char_u *)p, i, echo_attr); - p += i - 1; - } - } - } + msg_echo_show(tofree, echo_attr); xfree(tofree); } tv_clear(&rettv); diff --git a/src/nvim/message.c b/src/nvim/message.c index 7544048434..feb894e4ea 100644 --- a/src/nvim/message.c +++ b/src/nvim/message.c @@ -173,23 +173,9 @@ bool msg_attr_skip(const char *s, const int attr, int *const call) return false; } - -bool msg_echo_attr_keep(const char *s, const int attr, const int keep) +void msg_echo_show(const char *s, int attr) FUNC_ATTR_NONNULL_ALL { - static int entered = 0; - - if (msg_attr_skip(s, attr, &entered)) { - return true; - } - - msg_start(); - - char *const buf = (char *)msg_strtrunc((char_u *)s, false); - if (buf != NULL) { - s = buf; - } - const char *next_spec = s; while (next_spec != NULL) { @@ -212,6 +198,25 @@ bool msg_echo_attr_keep(const char *s, const int attr, const int keep) if (*s != NUL) { msg_outtrans_attr((char_u *)s, attr); } +} + +bool msg_echo_attr_keep(const char *s, const int attr, const int keep) + FUNC_ATTR_NONNULL_ALL +{ + static int entered = 0; + + if (msg_attr_skip(s, attr, &entered)) { + return true; + } + + msg_start(); + + char *const buf = (char *)msg_strtrunc((char_u *)s, false); + if (buf != NULL) { + s = buf; + } + + msg_echo_show(s, attr); msg_clr_eos(); const bool retval = msg_end(); |