summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorManuel Leiner <satmd@lain.at>2014-01-11 15:38:25 +0100
committerAilin Nemui <ailin@esf51.localdomain>2014-07-07 00:42:50 +0200
commit669add63e866b11c47f94f750dcdbc8631a81218 (patch)
tree9056a0872a9dd947bed7136968f558feff90fdbc
parentfc00b9e6f07379f09ea13fa42d9feed377d2d762 (diff)
downloadirssi-669add63e866b11c47f94f750dcdbc8631a81218.zip
FS#155 hilight -tag
-rw-r--r--src/fe-common/core/hilight-text.c16
-rw-r--r--src/fe-common/core/hilight-text.h1
2 files changed, 14 insertions, 3 deletions
diff --git a/src/fe-common/core/hilight-text.c b/src/fe-common/core/hilight-text.c
index d4eeb1f3..0caf2ca2 100644
--- a/src/fe-common/core/hilight-text.c
+++ b/src/fe-common/core/hilight-text.c
@@ -78,6 +78,7 @@ static void hilight_add_config(HILIGHT_REC *rec)
if (rec->nickmask) iconfig_node_set_bool(node, "mask", TRUE);
if (rec->fullword) iconfig_node_set_bool(node, "fullword", TRUE);
if (rec->regexp) iconfig_node_set_bool(node, "regexp", TRUE);
+ if (rec->tag) iconfig_node_set_str(node,"tag",rec->tag);
if (rec->channels != NULL && *rec->channels != NULL) {
node = config_node_section(node, "channels", NODE_TYPE_LIST);
@@ -267,6 +268,7 @@ HILIGHT_REC *hilight_match(SERVER_REC *server, const char *channel,
if (!rec->nickmask && hilight_match_level(rec, level) &&
hilight_match_channel(rec, channel) &&
+ (rec->tag == NULL || (server != NULL && rec->tag != NULL && server->tag !=NULL && strcmp(rec->tag,server->tag) == 0)) &&
hilight_match_text(rec, str, match_beg, match_end))
return rec;
}
@@ -465,7 +467,7 @@ static void read_hilight_config(void)
rec->nickmask = config_node_get_bool(node, "mask", FALSE);
rec->fullword = config_node_get_bool(node, "fullword", FALSE);
rec->regexp = config_node_get_bool(node, "regexp", FALSE);
-
+ rec->tag = config_node_get_str(node,"tag",NULL);
hilight_init_rec(rec);
node = config_node_section(node, "channels", -1);
@@ -498,6 +500,8 @@ static void hilight_print(int index, HILIGHT_REC *rec)
if (rec->priority != 0)
g_string_append_printf(options, "-priority %d ", rec->priority);
+ if (rec->tag != NULL)
+ g_string_append_printf(options, "-tag %s ", rec->tag);
if (rec->color != NULL)
g_string_append_printf(options, "-color %s ", rec->color);
if (rec->act_color != NULL)
@@ -541,7 +545,7 @@ static void cmd_hilight(const char *data)
{
GHashTable *optlist;
HILIGHT_REC *rec;
- char *colorarg, *actcolorarg, *levelarg, *priorityarg, *chanarg, *text;
+ char *colorarg, *actcolorarg, *levelarg, *priorityarg, *chanarg, *text, *tagarg=NULL;
char **channels;
void *free_arg;
@@ -561,6 +565,7 @@ static void cmd_hilight(const char *data)
priorityarg = g_hash_table_lookup(optlist, "priority");
colorarg = g_hash_table_lookup(optlist, "color");
actcolorarg = g_hash_table_lookup(optlist, "actcolor");
+ tagarg = g_hash_table_lookup(optlist,"tag");
if (*text == '\0') cmd_param_error(CMDERR_NOT_ENOUGH_PARAMS);
@@ -612,6 +617,11 @@ static void cmd_hilight(const char *data)
if (*actcolorarg != '\0')
rec->act_color = g_strdup(actcolorarg);
}
+ if (tagarg != NULL) {
+ g_free_and_null(rec->tag);
+ if (*tagarg != '\0')
+ rec->tag = g_strdup(tagarg);
+ }
hilight_create(rec);
@@ -702,7 +712,7 @@ void hilight_text_init(void)
command_bind("hilight", NULL, (SIGNAL_FUNC) cmd_hilight);
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 -tag -channels nick word line mask full regexp");
}
void hilight_text_deinit(void)
diff --git a/src/fe-common/core/hilight-text.h b/src/fe-common/core/hilight-text.h
index 74c58780..058efbc6 100644
--- a/src/fe-common/core/hilight-text.h
+++ b/src/fe-common/core/hilight-text.h
@@ -29,6 +29,7 @@ struct _HILIGHT_REC {
unsigned int regexp_compiled:1; /* should always be TRUE, unless regexp is invalid */
regex_t preg;
#endif
+ char *tag;
};
extern GSList *hilights;