mirror of
https://github.com/irssi/irssi.git
synced 2026-08-10 12:23:37 +02:00
/HILIGHT changed. -nick option now tells to hilight only the nick, not
the whole line. -mask option matches the text for nick mask (it didn't even work before). git-svn-id: http://svn.irssi.org/repos/irssi/trunk@391 dbcabf3a-b0e7-0310-adc4-f8d773084564
This commit is contained in:
parent
dc22d8830d
commit
95b74de316
6 changed files with 64 additions and 56 deletions
|
|
@ -53,7 +53,9 @@ static void msg_beep_check(IRC_SERVER_REC *server, int level)
|
|||
}
|
||||
}
|
||||
|
||||
static void print_channel_msg(IRC_SERVER_REC *server, const char *msg, const char *nick, const char *addr, const char *target)
|
||||
static void print_channel_msg(IRC_SERVER_REC *server, const char *msg,
|
||||
const char *nick, const char *addr,
|
||||
const char *target)
|
||||
{
|
||||
CHANNEL_REC *chanrec;
|
||||
NICK_REC *nickrec;
|
||||
|
|
@ -62,7 +64,7 @@ static void print_channel_msg(IRC_SERVER_REC *server, const char *msg, const cha
|
|||
|
||||
chanrec = channel_find(server, target);
|
||||
for_me = irc_nick_match(server->nick, msg);
|
||||
color = irc_hilight_find_nick(target, nick, addr);
|
||||
color = irc_hilight_find_nick(target, nick, addr, MSGLEVEL_PUBLIC, msg);
|
||||
|
||||
nickrec = chanrec == NULL ? NULL : nicklist_find(chanrec, nick);
|
||||
nickmode = (!settings_get_bool("show_nickmode") || nickrec == NULL) ? "" :
|
||||
|
|
|
|||
|
|
@ -19,36 +19,19 @@
|
|||
*/
|
||||
|
||||
#include "module.h"
|
||||
#include "settings.h"
|
||||
|
||||
#include "hilight-text.h"
|
||||
|
||||
char *irc_hilight_find_nick(const char *channel, const char *nick, const char *address)
|
||||
char *irc_hilight_find_nick(const char *channel, const char *nick,
|
||||
const char *address, int level, const char *msg)
|
||||
{
|
||||
GSList *tmp;
|
||||
char *color;
|
||||
int len, best_match;
|
||||
char *color, *mask;
|
||||
|
||||
g_return_val_if_fail(channel != NULL, NULL);
|
||||
g_return_val_if_fail(nick != NULL, NULL);
|
||||
g_return_val_if_fail(address != NULL, NULL);
|
||||
mask = g_strdup_printf("%s!%s", nick, address);
|
||||
color = hilight_match(channel, mask, level, msg);
|
||||
g_free(mask);
|
||||
|
||||
color = NULL; best_match = 0;
|
||||
for (tmp = hilights; tmp != NULL; tmp = tmp->next) {
|
||||
HILIGHT_REC *rec = tmp->data;
|
||||
|
||||
if (!rec->nickmask)
|
||||
continue;
|
||||
|
||||
len = strlen(rec->text);
|
||||
if (best_match < len) {
|
||||
best_match = len;
|
||||
color = rec->color;
|
||||
}
|
||||
}
|
||||
|
||||
if (best_match == 0)
|
||||
return NULL;
|
||||
|
||||
if (color == NULL) color = "\00316";
|
||||
return g_strconcat(isdigit(*color) ? "\003" : "", color, NULL);
|
||||
return color;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
#ifndef __IRC_HILIGHT_TEXT_H
|
||||
#define __IRC_HILIGHT_TEXT_H
|
||||
|
||||
char *irc_hilight_find_nick(const char *channel, const char *nick, const char *address);
|
||||
char *irc_hilight_find_nick(const char *channel, const char *nick,
|
||||
const char *address, int level, const char *msg);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue