| tlbuf: when the last line lacks eol, append it - neatvi - [fork] simple vi-type… | |
| git clone git://src.adamsgaard.dk/neatvi | |
| Log | |
| Files | |
| Refs | |
| README | |
| --- | |
| commit d2e6b8054daf567c687f0cb4b526b4a6f439d7d5 | |
| parent 20cc8817475554d8448632970ff7c8d84ed2f9e2 | |
| Author: Ali Gholami Rudi <[email protected]> | |
| Date: Mon, 6 Jun 2016 23:40:14 +0430 | |
| lbuf: when the last line lacks eol, append it | |
| Diffstat: | |
| M lbuf.c | 14 +++++++++----- | |
| 1 file changed, 9 insertions(+), 5 deletions(-) | |
| --- | |
| diff --git a/lbuf.c b/lbuf.c | |
| t@@ -133,7 +133,7 @@ static void lbuf_insertline(struct lbuf *lb, int pos, char… | |
| /* low-level replacement */ | |
| static void lbuf_replace(struct lbuf *lb, char *s, int pos, int n_del) | |
| { | |
| - char *r; | |
| + char *r, *n; | |
| int n_ins = 0; | |
| int i; | |
| for (i = 0; i < n_del; i++) | |
| t@@ -141,12 +141,16 @@ static void lbuf_replace(struct lbuf *lb, char *s, int p… | |
| memmove(lb->ln + pos, lb->ln + pos + n_del, | |
| (lb->ln_n - pos - n_del) * sizeof(lb->ln[0])); | |
| lb->ln_n -= n_del; | |
| - while (s && (r = strchr(s, '\n'))) { | |
| - char *n = malloc(r - s + 2); | |
| - memcpy(n, s, r - s + 1); | |
| + while (s && *s) { | |
| + r = strchr(s, '\n'); | |
| + if (!r) /* no eol */ | |
| + r = strchr(s, '\0'); | |
| + n = malloc(r - s + 2); | |
| + memcpy(n, s, r - s); | |
| + n[r - s + 0] = '\n'; | |
| n[r - s + 1] = '\0'; | |
| lbuf_insertline(lb, pos + n_ins++, n); | |
| - s = r + 1; | |
| + s = *r ? r + 1 : r; | |
| } | |
| for (i = 0; i < LEN(lb->mark); i++) { /* updating marks */ | |
| if (!s && lb->mark[i] >= pos && lb->mark[i] < pos + n_del) |