mirror of
https://github.com/irssi/irssi.git
synced 2026-08-16 07:02:12 +02:00
Change NO_ACT so it can be used in addition to other ignores
This results in a more flexible system and is less surprising as it means levels can be used in the way they normally can in an ignore. As an example the current approach to NO_ACT provides no way to let HILIGHTS be shown, with this change /set activity_hide_targets can be recreated with: /ignore #channel NO_ACT /ignore #channel -except -regexp -pattern . NO_ACT HILIGHTS (but obviously this can be configured in many more ways if desired).
This commit is contained in:
parent
2b6bba3fd2
commit
819f9d16c9
5 changed files with 62 additions and 13 deletions
|
|
@ -118,7 +118,7 @@ static void cmd_ignore(const char *data)
|
|||
char *patternarg, *chanarg, *mask, *levels, *timestr, *servertag;
|
||||
char **channels;
|
||||
void *free_arg;
|
||||
int new_ignore, msecs;
|
||||
int new_ignore, msecs, level;
|
||||
|
||||
if (*data == '\0') {
|
||||
cmd_ignore_show();
|
||||
|
|
@ -138,6 +138,7 @@ static void cmd_ignore(const char *data)
|
|||
|
||||
if (*mask == '\0') cmd_param_error(CMDERR_NOT_ENOUGH_PARAMS);
|
||||
if (*levels == '\0') levels = "ALL";
|
||||
level = level2bits(levels, NULL);
|
||||
|
||||
msecs = 0;
|
||||
timestr = g_hash_table_lookup(optlist, "time");
|
||||
|
|
@ -154,7 +155,8 @@ static void cmd_ignore(const char *data)
|
|||
channels = (chanarg == NULL || *chanarg == '\0') ? NULL :
|
||||
g_strsplit(chanarg, ",", -1);
|
||||
|
||||
rec = patternarg != NULL ? NULL: ignore_find(servertag, mask, channels);
|
||||
rec = patternarg != NULL ? NULL: ignore_find_noact(servertag, mask, channels,
|
||||
(level & MSGLEVEL_NO_ACT));
|
||||
new_ignore = rec == NULL;
|
||||
|
||||
if (rec == NULL) {
|
||||
|
|
@ -170,6 +172,12 @@ static void cmd_ignore(const char *data)
|
|||
|
||||
rec->level = combine_level(rec->level, levels);
|
||||
|
||||
if (rec->level == MSGLEVEL_NO_ACT) {
|
||||
/* If only NO_ACT was specified add all levels; it makes no
|
||||
* sense on its own. */
|
||||
rec->level |= MSGLEVEL_ALL;
|
||||
}
|
||||
|
||||
if (new_ignore && rec->level == 0) {
|
||||
/* tried to unignore levels from nonexisting ignore */
|
||||
printformat(NULL, NULL, MSGLEVEL_CLIENTNOTICE,
|
||||
|
|
@ -226,7 +234,10 @@ static void cmd_unignore(const char *data)
|
|||
chans[0] = mask;
|
||||
mask = NULL;
|
||||
}
|
||||
rec = ignore_find("*", mask, (char **) chans);
|
||||
rec = ignore_find_noact("*", mask, (char **) chans, 0);
|
||||
if (rec == NULL) {
|
||||
rec = ignore_find_noact("*", mask, (char **) chans, 1);
|
||||
}
|
||||
}
|
||||
|
||||
if (rec != NULL) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue