mirror of
https://github.com/irssi/irssi.git
synced 2024-11-03 04:27:19 -05:00
Merge pull request #15 from ailin-nemui/hilights-network-tag
FS#155 hilight -tag
This commit is contained in:
commit
a9ff985a91
@ -14,6 +14,7 @@
|
|||||||
-color: The color the display the highlight in.
|
-color: The color the display the highlight in.
|
||||||
-actcolor: The color to mark the highlight activity in the statusbar.
|
-actcolor: The color to mark the highlight activity in the statusbar.
|
||||||
-level: Matches only on the given message level.
|
-level: Matches only on the given message level.
|
||||||
|
-network: Matches only on the given network.
|
||||||
-channels: Matches only on the given channels.
|
-channels: Matches only on the given channels.
|
||||||
-priority: The priority to use when multiple highlights match.
|
-priority: The priority to use when multiple highlights match.
|
||||||
|
|
||||||
|
@ -78,6 +78,7 @@ static void hilight_add_config(HILIGHT_REC *rec)
|
|||||||
if (rec->nickmask) iconfig_node_set_bool(node, "mask", TRUE);
|
if (rec->nickmask) iconfig_node_set_bool(node, "mask", TRUE);
|
||||||
if (rec->fullword) iconfig_node_set_bool(node, "fullword", TRUE);
|
if (rec->fullword) iconfig_node_set_bool(node, "fullword", TRUE);
|
||||||
if (rec->regexp) iconfig_node_set_bool(node, "regexp", TRUE);
|
if (rec->regexp) iconfig_node_set_bool(node, "regexp", TRUE);
|
||||||
|
if (rec->servertag) iconfig_node_set_str(node, "servertag", rec->servertag);
|
||||||
|
|
||||||
if (rec->channels != NULL && *rec->channels != NULL) {
|
if (rec->channels != NULL && *rec->channels != NULL) {
|
||||||
node = config_node_section(node, "channels", NODE_TYPE_LIST);
|
node = config_node_section(node, "channels", NODE_TYPE_LIST);
|
||||||
@ -267,6 +268,8 @@ HILIGHT_REC *hilight_match(SERVER_REC *server, const char *channel,
|
|||||||
|
|
||||||
if (!rec->nickmask && hilight_match_level(rec, level) &&
|
if (!rec->nickmask && hilight_match_level(rec, level) &&
|
||||||
hilight_match_channel(rec, channel) &&
|
hilight_match_channel(rec, channel) &&
|
||||||
|
(rec->servertag == NULL ||
|
||||||
|
(server != NULL && g_ascii_strcasecmp(rec->servertag, server->tag) == 0)) &&
|
||||||
hilight_match_text(rec, str, match_beg, match_end))
|
hilight_match_text(rec, str, match_beg, match_end))
|
||||||
return rec;
|
return rec;
|
||||||
}
|
}
|
||||||
@ -465,7 +468,7 @@ static void read_hilight_config(void)
|
|||||||
rec->nickmask = config_node_get_bool(node, "mask", FALSE);
|
rec->nickmask = config_node_get_bool(node, "mask", FALSE);
|
||||||
rec->fullword = config_node_get_bool(node, "fullword", FALSE);
|
rec->fullword = config_node_get_bool(node, "fullword", FALSE);
|
||||||
rec->regexp = config_node_get_bool(node, "regexp", FALSE);
|
rec->regexp = config_node_get_bool(node, "regexp", FALSE);
|
||||||
|
rec->servertag = config_node_get_str(node, "servertag", NULL);
|
||||||
hilight_init_rec(rec);
|
hilight_init_rec(rec);
|
||||||
|
|
||||||
node = config_node_section(node, "channels", -1);
|
node = config_node_section(node, "channels", -1);
|
||||||
@ -498,6 +501,8 @@ static void hilight_print(int index, HILIGHT_REC *rec)
|
|||||||
|
|
||||||
if (rec->priority != 0)
|
if (rec->priority != 0)
|
||||||
g_string_append_printf(options, "-priority %d ", rec->priority);
|
g_string_append_printf(options, "-priority %d ", rec->priority);
|
||||||
|
if (rec->servertag != NULL)
|
||||||
|
g_string_append_printf(options, "-network %s ", rec->servertag);
|
||||||
if (rec->color != NULL)
|
if (rec->color != NULL)
|
||||||
g_string_append_printf(options, "-color %s ", rec->color);
|
g_string_append_printf(options, "-color %s ", rec->color);
|
||||||
if (rec->act_color != NULL)
|
if (rec->act_color != NULL)
|
||||||
@ -536,12 +541,12 @@ static void cmd_hilight_show(void)
|
|||||||
|
|
||||||
/* SYNTAX: HILIGHT [-nick | -word | -line] [-mask | -full | -regexp]
|
/* SYNTAX: HILIGHT [-nick | -word | -line] [-mask | -full | -regexp]
|
||||||
[-color <color>] [-actcolor <color>] [-level <level>]
|
[-color <color>] [-actcolor <color>] [-level <level>]
|
||||||
[-channels <channels>] <text> */
|
[-network <network>] [-channels <channels>] <text> */
|
||||||
static void cmd_hilight(const char *data)
|
static void cmd_hilight(const char *data)
|
||||||
{
|
{
|
||||||
GHashTable *optlist;
|
GHashTable *optlist;
|
||||||
HILIGHT_REC *rec;
|
HILIGHT_REC *rec;
|
||||||
char *colorarg, *actcolorarg, *levelarg, *priorityarg, *chanarg, *text;
|
char *colorarg, *actcolorarg, *levelarg, *priorityarg, *chanarg, *text, *servertag;
|
||||||
char **channels;
|
char **channels;
|
||||||
void *free_arg;
|
void *free_arg;
|
||||||
|
|
||||||
@ -561,6 +566,7 @@ static void cmd_hilight(const char *data)
|
|||||||
priorityarg = g_hash_table_lookup(optlist, "priority");
|
priorityarg = g_hash_table_lookup(optlist, "priority");
|
||||||
colorarg = g_hash_table_lookup(optlist, "color");
|
colorarg = g_hash_table_lookup(optlist, "color");
|
||||||
actcolorarg = g_hash_table_lookup(optlist, "actcolor");
|
actcolorarg = g_hash_table_lookup(optlist, "actcolor");
|
||||||
|
servertag = g_hash_table_lookup(optlist, "network");
|
||||||
|
|
||||||
if (*text == '\0') cmd_param_error(CMDERR_NOT_ENOUGH_PARAMS);
|
if (*text == '\0') cmd_param_error(CMDERR_NOT_ENOUGH_PARAMS);
|
||||||
|
|
||||||
@ -612,6 +618,11 @@ static void cmd_hilight(const char *data)
|
|||||||
if (*actcolorarg != '\0')
|
if (*actcolorarg != '\0')
|
||||||
rec->act_color = g_strdup(actcolorarg);
|
rec->act_color = g_strdup(actcolorarg);
|
||||||
}
|
}
|
||||||
|
if (servertag != NULL) {
|
||||||
|
g_free_and_null(rec->servertag);
|
||||||
|
if (*servertag != '\0')
|
||||||
|
rec->servertag = g_strdup(servertag);
|
||||||
|
}
|
||||||
|
|
||||||
hilight_create(rec);
|
hilight_create(rec);
|
||||||
|
|
||||||
@ -702,7 +713,7 @@ void hilight_text_init(void)
|
|||||||
|
|
||||||
command_bind("hilight", NULL, (SIGNAL_FUNC) cmd_hilight);
|
command_bind("hilight", NULL, (SIGNAL_FUNC) cmd_hilight);
|
||||||
command_bind("dehilight", NULL, (SIGNAL_FUNC) cmd_dehilight);
|
command_bind("dehilight", NULL, (SIGNAL_FUNC) cmd_dehilight);
|
||||||
command_set_options("hilight", "-color -actcolor -level -priority -channels nick word line mask full regexp");
|
command_set_options("hilight", "-color -actcolor -level -priority -network -channels nick word line mask full regexp");
|
||||||
}
|
}
|
||||||
|
|
||||||
void hilight_text_deinit(void)
|
void hilight_text_deinit(void)
|
||||||
|
@ -29,6 +29,7 @@ struct _HILIGHT_REC {
|
|||||||
unsigned int regexp_compiled:1; /* should always be TRUE, unless regexp is invalid */
|
unsigned int regexp_compiled:1; /* should always be TRUE, unless regexp is invalid */
|
||||||
regex_t preg;
|
regex_t preg;
|
||||||
#endif
|
#endif
|
||||||
|
char *servertag;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern GSList *hilights;
|
extern GSList *hilights;
|
||||||
|
Loading…
Reference in New Issue
Block a user