degesch: fix highlight detection in colored text
This commit is contained in:
parent
92a4d4b5a7
commit
4cefa5ab1b
18
degesch.c
18
degesch.c
|
@ -5916,10 +5916,26 @@ irc_is_highlight (struct server *s, const char *message)
|
||||||
if (!s->irc_user)
|
if (!s->irc_user)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
// Strip formatting from the message so that it doesn't interfere
|
||||||
|
// with nickname detection (color sequences in particular)
|
||||||
|
struct formatter f;
|
||||||
|
formatter_init (&f, s->ctx, NULL);
|
||||||
|
formatter_parse_mirc (&f, message);
|
||||||
|
|
||||||
|
struct str stripped;
|
||||||
|
str_init (&stripped);
|
||||||
|
for (size_t i = 0; i < f.items_len; i++)
|
||||||
|
{
|
||||||
|
if (f.items[i].type == FORMATTER_ITEM_TEXT)
|
||||||
|
str_append (&stripped, f.items[i].text);
|
||||||
|
}
|
||||||
|
formatter_free (&f);
|
||||||
|
|
||||||
// Well, this is rather crude but it should make most users happy.
|
// Well, this is rather crude but it should make most users happy.
|
||||||
// Ideally we could do this at least in proper Unicode.
|
// Ideally we could do this at least in proper Unicode.
|
||||||
char *copy = xstrdup (message);
|
char *copy = irc_to_utf8 (stripped.str);
|
||||||
cstr_transform (copy, s->irc_tolower);
|
cstr_transform (copy, s->irc_tolower);
|
||||||
|
str_free (&stripped);
|
||||||
|
|
||||||
char *nick = xstrdup (s->irc_user->nickname);
|
char *nick = xstrdup (s->irc_user->nickname);
|
||||||
cstr_transform (nick, s->irc_tolower);
|
cstr_transform (nick, s->irc_tolower);
|
||||||
|
|
Loading…
Reference in New Issue