]> jfr.im git - irc/irssi/irssi.git/commitdiff
keep track of address in text_dest for hilight purposes
authorailin-nemui <redacted>
Sun, 27 Dec 2015 23:07:42 +0000 (00:07 +0100)
committerailin-nemui <redacted>
Sun, 27 Dec 2015 23:07:42 +0000 (00:07 +0100)
src/fe-common/core/fe-messages.c
src/fe-common/core/formats.c
src/fe-common/core/formats.h
src/fe-common/core/hilight-text.c

index e06a4571ae051326625d101c494bce55f0627102..3240fd10803acaf360923550d4e49493800ad45c 100644 (file)
@@ -175,7 +175,6 @@ static void sig_message_public(SERVER_REC *server, const char *msg,
        int for_me, print_channel, level;
        char *nickmode, *color, *freemsg = NULL;
        HILIGHT_REC *hilight;
-       int match_beg = 0, match_end = 0;
 
        /* NOTE: this may return NULL if some channel is just closed with
           /WINDOW CLOSE and server still sends the few last messages */
@@ -188,8 +187,8 @@ static void sig_message_public(SERVER_REC *server, const char *msg,
                nick_match_msg(chanrec, msg, server->nick) :
                nick_match_msg_everywhere(chanrec, msg, server->nick);
        hilight = for_me ? NULL :
-               hilight_match(server, target, nick, address, MSGLEVEL_PUBLIC, msg, &match_beg, &match_end);
-       color = (hilight == NULL || !hilight->nick) ? NULL : hilight_get_color(hilight);
+               hilight_match_nick(server, target, nick, address, MSGLEVEL_PUBLIC, msg);
+       color = (hilight == NULL) ? NULL : hilight_get_color(hilight);
 
        print_channel = chanrec == NULL ||
                !window_item_is_active((WI_ITEM_REC *) chanrec);
@@ -217,9 +216,8 @@ static void sig_message_public(SERVER_REC *server, const char *msg,
 
        TEXT_DEST_REC dest;
        format_create_dest(&dest, server, target, level, NULL);
-       dest.hilight = hilight;
-       dest.match_beg = match_beg;
-       dest.match_end = match_end;
+       dest.address = address;
+       dest.nick = nick;
        if (color != NULL) {
                /* highlighted nick */
                hilight_update_text_dest(&dest,hilight);
index b95b3966bf601fde25a729208e9fe808723ee849..ccf48394458bb3b65610b10604182cbf9c584105 100644 (file)
@@ -416,8 +416,6 @@ void format_create_dest_tag(TEXT_DEST_REC *dest, void *server,
        dest->server_tag = server != NULL ? SERVER(server)->tag : server_tag;
        dest->target = target;
        dest->level = level;
-       dest->match_beg = 0;
-       dest->match_end = 0;
        dest->window = window != NULL ? window :
                window_find_closest(server, target, level);
 }
index a4b2685279f9fb024150452fdf06c8e30a45dc8a..8efd204cff0f7797fca19ad99602f587ce6cb4da 100644 (file)
@@ -52,11 +52,10 @@ typedef struct _TEXT_DEST_REC {
        SERVER_REC *server;
         const char *server_tag; /* if server is non-NULL, must be server->tag */
        const char *target;
+       const char *nick;
+       const char *address;
        int level;
 
-       HILIGHT_REC *hilight;
-       int match_beg;
-       int match_end;
        int hilight_priority;
        char *hilight_color;
         int flags;
index 2c0075ec8ee73de629b66f09e299db7dc11bf2bc..b746f63639aa4112bec8b94eb5e4333b718633d0 100644 (file)
@@ -325,9 +325,10 @@ static void sig_print_text(TEXT_DEST_REC *dest, const char *text,
        if (dest->level & MSGLEVEL_NOHILIGHT)
                return;
 
-       hilight_start = dest->match_beg;
-       hilight_end = dest->match_end;
-       hilight = dest->hilight;
+       hilight_start = hilight_end = 0;
+       hilight = hilight_match(dest->server, dest->target, dest->nick,
+                               dest->address, dest->level, stripped,
+                               &hilight_start, &hilight_end);
 
        if (hilight == NULL)
                return;