From 1a06a3948861b11a9bae0b044f0342fc2190584d Mon Sep 17 00:00:00 2001 From: lonerover Date: Tue, 17 Jan 2017 15:36:00 +0800 Subject: vim-patch:7.4.2049 Problem: There is no way to get a list of the error lists. Solution: Add ":chistory" and ":lhistory". https://github.com/vim/vim/commit/f6acffbe83e622542d9fdf3066f51933e46e4954 --- src/nvim/message.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) (limited to 'src/nvim/message.c') diff --git a/src/nvim/message.c b/src/nvim/message.c index 2f8feda6ec..749fa8a706 100644 --- a/src/nvim/message.c +++ b/src/nvim/message.c @@ -297,8 +297,22 @@ void trunc_string(char_u *s, char_u *buf, int room, int buflen) len += n; } - /* Set the middle and copy the last part. */ - if (e + 3 < buflen) { + if (i <= e + 3) { + // text fits without truncating + if (s != buf) { + len = STRLEN(s); + if (len >= buflen) { + len = buflen - 1; + } + len = len - e + 1; + if (len < 1) { + buf[e - 1] = NUL; + } else { + memmove(buf + e, s + e, len); + } + } + } else if (e + 3 < buflen) { + // set the middle and copy the last part memmove(buf + e, "...", (size_t)3); len = (int)STRLEN(s + i) + 1; if (len >= buflen - e - 3) @@ -306,7 +320,8 @@ void trunc_string(char_u *s, char_u *buf, int room, int buflen) memmove(buf + e + 3, s + i, len); buf[e + 3 + len - 1] = NUL; } else { - buf[e - 1] = NUL; /* make sure it is truncated */ + // can't fit in the "...", just truncate it + buf[e - 1] = NUL; } } -- cgit