aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/message.c
diff options
context:
space:
mode:
authorlonerover <pathfinder1644@yahoo.com>2017-01-17 15:36:00 +0800
committerlonerover <pathfinder1644@yahoo.com>2017-01-19 10:11:53 +0800
commit1a06a3948861b11a9bae0b044f0342fc2190584d (patch)
tree9bce1f43e4cf4ff3d25604d008377e504e765477 /src/nvim/message.c
parentd3b4764dc137e0f6f2c219244e00fba92a64a384 (diff)
downloadrneovim-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.c21
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;
}
}