Mercurial > vim
diff src/message.c @ 9538:26da1efa9e46 v7.4.2049
commit https://github.com/vim/vim/commit/f6acffbe83e622542d9fdf3066f51933e46e4954
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Jul 16 16:54:24 2016 +0200
patch 7.4.2049
Problem: There is no way to get a list of the error lists.
Solution: Add ":chistory" and ":lhistory".
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sat, 16 Jul 2016 17:00:06 +0200 |
parents | d18d71ae21e5 |
children | 00ee8d8c2e0c |
line wrap: on
line diff
--- a/src/message.c +++ b/src/message.c @@ -313,9 +313,25 @@ trunc_string( 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 + mch_memmove(buf + e, s + e, len); + } + } + else if (e + 3 < buflen) + { + /* set the middle and copy the last part */ mch_memmove(buf + e, "...", (size_t)3); len = (int)STRLEN(s + i) + 1; if (len >= buflen - e - 3) @@ -325,7 +341,8 @@ trunc_string( } else { - buf[e - 1] = NUL; /* make sure it is truncated */ + /* can't fit in the "...", just truncate it */ + buf[e - 1] = NUL; } }