summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--format.c13
-rw-r--r--ui.c8
2 files changed, 10 insertions, 11 deletions
diff --git a/format.c b/format.c
index a2aaf4b..02406e3 100644
--- a/format.c
+++ b/format.c
@@ -79,10 +79,8 @@ static void parseColor(struct Format *format) {
format->str = &format->str[1 + len];
}
-static const wchar_t Stops[] = {
- L' ',
- IRCBold, IRCColor, IRCReverse, IRCReset, IRCItalic, IRCUnderline,
- L'\0',
+static const wchar_t Codes[] = {
+ IRCBold, IRCColor, IRCReverse, IRCReset, IRCItalic, IRCUnderline, L'\0',
};
bool formatParse(struct Format *format, const wchar_t *split) {
@@ -110,11 +108,7 @@ bool formatParse(struct Format *format, const wchar_t *split) {
}
format->split = (split >= init && split <= format->str);
- if (format->str[0] == L' ') {
- format->len = 1 + wcscspn(&format->str[1], Stops);
- } else {
- format->len = wcscspn(format->str, Stops);
- }
+ format->len = wcscspn(format->str, Codes);
if (split > format->str && split < &format->str[format->len]) {
format->len = split - format->str;
}
@@ -172,6 +166,7 @@ int main() {
assert(testColor(L"\00316,16a", IRCDefault, IRCDefault, 6));
assert(testColor(L"\00399,99a", IRCDefault, IRCDefault, 6));
+ assert(testSplits(L""));
assert(testSplits(L"ab"));
assert(testSplits(L"\002"));
assert(testSplits(L"\002ab"));
diff --git a/ui.c b/ui.c
index e1e006d..b1e56c7 100644
--- a/ui.c
+++ b/ui.c
@@ -194,11 +194,14 @@ static void addFormat(WINDOW *win, const struct Format *format) {
}
static int addWrap(WINDOW *win, const wchar_t *str) {
+ int lines = 0;
+
struct Format format = { .str = str };
formatReset(&format);
-
- int lines = 0;
while (formatParse(&format, NULL)) {
+ size_t word = 1 + wcscspn(&format.str[1], L" ");
+ if (word < format.len) format.len = word;
+
int _, x, xMax;
getyx(win, _, x);
getmaxyx(win, _, xMax);
@@ -210,6 +213,7 @@ static int addWrap(WINDOW *win, const wchar_t *str) {
waddch(win, '\n');
lines++;
}
+
addFormat(win, &format);
}
return lines;