Align word wrapping with tab character
Also fixes handling whitespace directly after control codes.weechat-hashes
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);
|
if (query && !network) idColors[id] = hash(msg->user);
|
||||||
uiFormat(
|
uiFormat(
|
||||||
id, Warm, tagTime(msg),
|
id, Warm, tagTime(msg),
|
||||||
"\3%d%s%s%s\3 %s",
|
"\3%d%s%s%s\3\t%s",
|
||||||
hash(msg->user),
|
hash(msg->user),
|
||||||
(action ? "* " : notice ? "-" : "<"),
|
(action ? "* " : notice ? "-" : "<"),
|
||||||
msg->nick,
|
msg->nick,
|
||||||
|
|
2
irc.c
2
irc.c
|
@ -105,7 +105,7 @@ static void debug(char dir, const char *line) {
|
||||||
if (!self.debug) return;
|
if (!self.debug) return;
|
||||||
size_t len = strcspn(line, "\r\n");
|
size_t len = strcspn(line, "\r\n");
|
||||||
uiFormat(
|
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
|
Gray, dir, dir, (int)len, line
|
||||||
);
|
);
|
||||||
if (!isatty(STDERR_FILENO)) {
|
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);
|
getmaxyx(win, y, width);
|
||||||
|
|
||||||
size_t len;
|
size_t len;
|
||||||
|
int align = 0;
|
||||||
struct Style style = Reset;
|
struct Style style = Reset;
|
||||||
while (*str) {
|
while (*str) {
|
||||||
if (*str == ' ') {
|
if (*str == '\t') {
|
||||||
|
waddch(win, ' ');
|
||||||
|
getyx(win, y, align);
|
||||||
|
str++;
|
||||||
|
} else if (*str == ' ') {
|
||||||
getyx(win, y, x);
|
getyx(win, y, x);
|
||||||
const char *word = &str[strspn(str, " ")];
|
const char *word = &str[strspn(str, " ")];
|
||||||
if (width - x - 1 <= wordWidth(word)) {
|
if (width - x - 1 <= wordWidth(word)) {
|
||||||
waddch(win, '\n');
|
waddch(win, '\n');
|
||||||
|
getyx(win, y, x);
|
||||||
|
wmove(win, y, align);
|
||||||
str = word;
|
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]);
|
if (str - code > 1) waddnstr(win, &code[1], str - &code[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t sp = strspn(str, " ");
|
size_t ws = strcspn(str, "\t ");
|
||||||
sp += strcspn(&str[sp], " ");
|
if (ws < len) len = ws;
|
||||||
if (sp < len) len = sp;
|
|
||||||
|
|
||||||
wattr_set(
|
wattr_set(
|
||||||
win,
|
win,
|
||||||
|
|
Loading…
Reference in New Issue