From 3b54425ec178a1ece9214cf2d862c105ad01247c Mon Sep 17 00:00:00 2001 From: "C. McEnroe" Date: Mon, 4 Jan 2021 14:25:41 -0500 Subject: Collapse whitespace while wrapping and discard trailing space The latter avoids an extra blank line when a message ends with whitespace that hits the edge of the window. --- buffer.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/buffer.c b/buffer.c index 740e598..15d89f8 100644 --- a/buffer.c +++ b/buffer.c @@ -160,11 +160,18 @@ static int flow(struct Lines *hard, int cols, const struct Line *soft) { wrapStyle = style; } - n = mbtowc(&wc, wrap, strlen(wrap)); - if (n < 0) { - n = 1; - } else if (!iswspace(wc)) { - n = 0; + n = 0; + len = strlen(wrap); + for (int m; wrap[n] && (m = mbtowc(&wc, &wrap[n], len - n)); n += m) { + if (m < 0) { + m = 1; + } else if (!iswspace(wc)) { + break; + } + } + if (!wrap[n]) { + *wrap = '\0'; + break; } flowed++; -- cgit 1.4.1