Align word wrapping with tab character
Also fixes handling whitespace directly after control codes.master
parent
f3fb466a31
commit
d57df09511
2
handle.c
2
handle.c
|
@ -212,7 +212,7 @@ static void handlePrivmsg(struct Message *msg) {
|
|||
if (query && !network) idColors[id] = hash(msg->user);
|
||||
uiFormat(
|
||||
id, Warm, tagTime(msg),
|
||||
"\3%d%s%s%s\3 %s",
|
||||
"\3%d%s%s%s\3\t%s",
|
||||
hash(msg->user),
|
||||
(action ? "* " : notice ? "-" : "<"),
|
||||
msg->nick,
|
||||
|
|
2
irc.c
2
irc.c
|
@ -105,7 +105,7 @@ static void debug(char dir, const char *line) {
|
|||
if (!self.debug) return;
|
||||
size_t len = strcspn(line, "\r\n");
|
||||
uiFormat(
|
||||
Debug, Cold, NULL, "\3%d%c%c\3 %.*s",
|
||||
Debug, Cold, NULL, "\3%d%c%c\3\t%.*s",
|
||||
Gray, dir, dir, (int)len, line
|
||||
);
|
||||
if (!isatty(STDERR_FILENO)) {
|
||||
|
|
17
ui.c
17
ui.c
|
@ -287,14 +287,24 @@ static void styleAdd(WINDOW *win, const char *str, bool show) {
|
|||
getmaxyx(win, y, width);
|
||||
|
||||
size_t len;
|
||||
int align = 0;
|
||||
struct Style style = Reset;
|
||||
while (*str) {
|
||||
if (*str == ' ') {
|
||||
if (*str == '\t') {
|
||||
waddch(win, ' ');
|
||||
getyx(win, y, align);
|
||||
str++;
|
||||
} else if (*str == ' ') {
|
||||
getyx(win, y, x);
|
||||
const char *word = &str[strspn(str, " ")];
|
||||
if (width - x - 1 <= wordWidth(word)) {
|
||||
waddch(win, '\n');
|
||||
getyx(win, y, x);
|
||||
wmove(win, y, align);
|
||||
str = word;
|
||||
} else {
|
||||
waddch(win, ' ');
|
||||
str++;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -313,9 +323,8 @@ static void styleAdd(WINDOW *win, const char *str, bool show) {
|
|||
if (str - code > 1) waddnstr(win, &code[1], str - &code[1]);
|
||||
}
|
||||
|
||||
size_t sp = strspn(str, " ");
|
||||
sp += strcspn(&str[sp], " ");
|
||||
if (sp < len) len = sp;
|
||||
size_t ws = strcspn(str, "\t ");
|
||||
if (ws < len) len = ws;
|
||||
|
||||
wattr_set(
|
||||
win,
|
||||
|
|
Loading…
Reference in New Issue