From b2de129e3f48136bd56a5f0f1d9028c2ecef0bc2 Mon Sep 17 00:00:00 2001 From: "C. McEnroe" Date: Fri, 11 Sep 2020 19:12:42 -0400 Subject: Copy style from wrapping point This fixes a bug when wrapping on a word with style changes inside it, where the copied style would be different depending on the width of the terminal. --- buffer.c | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) (limited to 'buffer.c') diff --git a/buffer.c b/buffer.c index 91fe6b4..6a7fe6e 100644 --- a/buffer.c +++ b/buffer.c @@ -111,6 +111,7 @@ static int flow(struct Lines *hard, int cols, const struct Line *soft) { int align = 0; char *wrap = NULL; struct Style style = StyleDefault; + struct Style wrapStyle = StyleDefault; for (char *str = line->str; *str;) { size_t len = styleParse(&style, (const char **)&str); if (!len) continue; @@ -138,15 +139,26 @@ static int flow(struct Lines *hard, int cols, const struct Line *soft) { width += wcwidth(wc); } - if (tab && width < cols) align = width; - if (iswspace(wc) && !tab) wrap = str; + if (tab && width < cols) { + align = width; + } + if (iswspace(wc) && !tab) { + wrap = str; + wrapStyle = style; + } + if (wc == L'-' && width <= cols) { + wrap = &str[n]; + wrapStyle = style; + } + if (width <= cols) { - if (wc == L'-') wrap = &str[n]; str += n; continue; + } else if (!wrap) { + wrap = str; + wrapStyle = style; } - if (!wrap) wrap = str; n = mbtowc(&wc, wrap, strlen(wrap)); if (n < 0) { n = 1; @@ -165,8 +177,9 @@ static int flow(struct Lines *hard, int cols, const struct Line *soft) { struct Cat cat = { line->str, cap, 0 }; catf(&cat, "%*s%n", align, "", &width); - styleCat(&cat, style); + styleCat(&cat, wrapStyle); str = &line->str[cat.len]; + style = wrapStyle; catf(&cat, "%s", &wrap[n]); *wrap = '\0'; -- cgit 1.4.0 value='committer'>committer
path: root/www/causal.agency/alpha.html (unfollow)
Commit message (Collapse)Author
11 daysAdd photos from August 23June McEnroe
Note I renamed these because they were scanned in reverse order!
12 daysAdd photos from August 22June McEnroe
2024-08-16Add first roll through Zenit-122June McEnroe
2024-08-16Add ability to specify camera bodyJune McEnroe
2024-08-14Add photos from August 2June McEnroe
2024-08-13Add photos from July 30 (actually 29 evening)June McEnroe
2024-08-09Add photos from July 29June McEnroe
2024-08-08Add photos from July 27June McEnroe
2024-07-26Add photos from July 14June McEnroe
2024-07-16Add photos from July 9June McEnroe
2024-07-15Add photos from July 6June McEnroe
2024-07-10Add the end of the Harman Phoenix rollJune McEnroe
2024-07-08Add photos from July 3, the hikeJune McEnroe
2024-07-07Add photos from July 1June McEnroe
2024-07-07Add photos from June 25-30June McEnroe
2024-06-30Add photos from June 22 (and the few days after that)June McEnroe
2024-06-30Accommodate lower-case .jpg filesJune McEnroe
2024-06-23Add another BACKXWASH showJune McEnroe
It was good!
2024-06-16Update bioJune McEnroe
2024-06-15Add photo descriptions from June 12June McEnroe
2024-06-10Add first roll of film from June 8June McEnroe
2024-06-10Cope with not having an EXIF infoJune McEnroe
2024-06-10Resize using target pixel counts for consistencyJune McEnroe
This will resize film scans to about the same size as for the digital photos.
2024-06-10Add The Girl Who Was Convinced...June McEnroe
Not much there. The illustrations are very nice though.
2024-06-09Add photos from May 31June McEnroe
2024-06-09Use monospace on photo pagesJune McEnroe
2024-06-09Put lens and (future) film at the tops of photo pagesJune McEnroe
2024-05-22Remove use of sysexits.hJune McEnroe
2024-05-22Add photo descriptions from 05-03 and 05-06June McEnroe
2024-05-21Fix = precedence in whenJune McEnroe