summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--buffer.c23
1 files changed, 18 insertions, 5 deletions
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';
plain: use cgit_print_error_page() instead of html_status()John Keeping 2015-08-14clone: use cgit_print_error_page() instead of html_status()John Keeping 2015-08-14cgit: use cgit_print_error_page() where appropriateJohn Keeping 2015-08-14ui-shared: add cgit_print_error_page() functionJohn Keeping 2015-08-14ui-patch: make sure to send http headersChristian Hesse 2015-08-13Makefile: make "git/config.mak.uname" inclusion optionalJohn Keeping 2015-08-13ui-shared: show full date in tooltip if longer ago than max_relativeJohn Keeping 2015-08-13ui-shared: use common function in print_rel_date()John Keeping 2015-08-13ui-shared: extract date formatting to a functionJohn Keeping 2015-08-13filter: don't use dlsym unnecessarilyJohn Keeping 2015-08-13ui-tree: use "sane" isgraph()John Keeping 2015-08-13cgit.h: move stdbool.h from ui-shared.hJohn Keeping 2015-08-13cache.c: fix header orderJohn Keeping 2015-08-13configfile.c: don't include system headers directlyJohn Keeping 2015-08-13Remove redundant includesJohn Keeping 2015-08-13Makefile: include Git's config.mak.unameJohn Keeping 2015-08-13tests: allow shell to be overriddenJohn Keeping 2015-08-13redirect: cleanlinessJason A. Donenfeld 2015-08-13redirect: be more careful for different cgi setupsJason A. Donenfeld 2015-08-12ui-log: fix double countingJohn Keeping 2015-08-12log: allow users to follow a fileJohn Keeping 2015-08-12shared: make cgit_diff_tree_cb publicJohn Keeping 2015-08-12t0110: Chain together using &&Jason A. Donenfeld 2015-08-12about: always ensure page has a trailing slashJason A. Donenfeld 2015-08-12filters: apply HTML escapingLazaros Koromilas 2015-08-12git: update to v2.5.0Christian Hesse 2015-08-12Fix processing of repo.hide and repo.ignoreDaniel Reichelt