about summary refs log tree commit diff
path: root/chat.c
diff options
context:
space:
mode:
Diffstat (limited to 'chat.c')
-rw-r--r--chat.c24
1 files changed, 22 insertions, 2 deletions
diff --git a/chat.c b/chat.c
index cea0f11..ae084ea 100644
--- a/chat.c
+++ b/chat.c
@@ -75,15 +75,35 @@ static void uiDraw(void) {
 	doupdate();
 }
 
+static void uiAdd(WINDOW *win, const char *str) {
+	attr_t attrs = A_NORMAL;
+	short pair = 0;
+	for (;;) {
+		size_t cc = strcspn(str, "\x02\x03\x1D\x1F");
+		wattr_set(win, attrs, pair, NULL);
+		waddnstr(win, str, cc);
+
+		if (!str[cc]) break;
+		switch (str[cc]) {
+			break; case 0x02: attrs ^= A_BOLD;
+			break; case 0x03: // TODO
+			break; case 0x1D: attrs ^= A_ITALIC;
+			break; case 0x1F: attrs ^= A_UNDERLINE;
+		}
+		str = &str[cc + 1];
+	}
+}
+
 static void uiTopic(const char *topic) {
 	wmove(ui.topic, 0, 0);
 	wclrtoeol(ui.topic);
-	waddnstr(ui.topic, topic, COLS);
+	uiAdd(ui.topic, topic);
 }
 static void uiChat(const char *line) {
 	waddch(ui.chat, '\n');
-	waddstr(ui.chat, line);
+	uiAdd(ui.chat, line);
 }
+
 static void uiFmt(const char *format, ...) {
 	char *buf;
 	va_list ap;
b961&follow=1'>shared.c: use die_errno() where appropriateJohn Keeping 2013-05-22html.c: die when write failsJohn Keeping 2013-05-22ui-log: add <span/> around commit decorationsJohn Keeping 2013-05-22Makefile: fix parallel "make test"John Keeping 2013-05-18cache.c: fix cache_lsJohn Keeping 2013-05-13t0109: "function" is a bash-ismJohn Keeping 2013-05-13New mailing list.Jason A. Donenfeld 2013-04-30ui-snapshot: do not access $HOMEJason A. Donenfeld 2013-04-27t0001: validate Git -rcN version numbers correctlyJohn Keeping 2013-04-27git: update to 1.8.2.2John Keeping 2013-04-17scan-tree: fix regression in section-from-path=-1John Keeping 2013-04-15t0001: ignore ".dirty" suffix on Git versionJohn Keeping 2013-04-15tests: set TEST_OUTPUT_DIRECTORY to the CGit test directoryJohn Keeping 2013-04-15t0109: test more URLsJohn Keeping 2013-04-10cgitrc.5.txt: Specify when scan-path must be defined before.Jason A. Donenfeld 2013-04-10ui-snapshot.c: Prepend "V" when guessing ref namesLukas Fleischer 2013-04-10t0107: Skip ZIP tests if unzip(1) isn't availableLukas Fleischer 2013-04-10tests/: Do not use `sed -i`Lukas Fleischer 2013-04-10Add branch-sort and repo.branch-sort options.Jason A. Donenfeld 2013-04-10t0109: chain operations with &&John Keeping 2013-04-10cgit.c: Do not restore unset environment variablesLukas Fleischer 2013-04-09t0107: Use `tar -z` for gzip'ed archivesLukas Fleischer