diff options
author | lonerover <pathfinder1644@yahoo.com> | 2017-01-17 15:36:00 +0800 |
---|---|---|
committer | lonerover <pathfinder1644@yahoo.com> | 2017-01-19 10:11:53 +0800 |
commit | 1a06a3948861b11a9bae0b044f0342fc2190584d (patch) | |
tree | 9bce1f43e4cf4ff3d25604d008377e504e765477 /src/nvim/message.c | |
parent | d3b4764dc137e0f6f2c219244e00fba92a64a384 (diff) | |
download | rneovim-1a06a3948861b11a9bae0b044f0342fc2190584d.tar.gz rneovim-1a06a3948861b11a9bae0b044f0342fc2190584d.tar.bz2 rneovim-1a06a3948861b11a9bae0b044f0342fc2190584d.zip |
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
Diffstat (limited to 'src/nvim/message.c')
-rw-r--r-- | src/nvim/message.c | 21 |
1 files changed, 18 insertions, 3 deletions
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; } } |