aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nvim/eval.c19
-rw-r--r--src/nvim/message.c35
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();