summary refs log tree commit diff
path: root/chat.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-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;
2020-02-11Define ColorCap instead of hardcoding 100June McEnroe 2020-02-11Move hash to top of chat.hJune McEnroe 2020-02-11Move base64 out of chat.hJune McEnroe 2020-02-11Move XDG_SUBDIR out of chat.hJune McEnroe 2020-02-11Fix whois idle unit calculationJune McEnroe 2020-02-11Cast towupper to wchar_tJune McEnroe 2020-02-11Cast set but unused variables to voidJune McEnroe 2020-02-11Declare strlcatJune McEnroe 2020-02-11Check if VDSUSP existsJune McEnroe 2020-02-11Fix completeReplace iterationJune McEnroe 2020-02-11Use pkg(8) to configure on FreeBSDJune McEnroe 2020-02-11Remove legacy codeJune McEnroe 2020-02-11Add INSTALLING section to READMEJune McEnroe