# * <string> : space-separated list of windows for which to use
# chanact_filter_windowlist_level instead of
# chanact_filter.
+# The special string @QUERIES matches all queries.
#
# /set chanact_filter_windowlist_level <int>
# like chanact_filter for windows in chanact_filter_windowlist. Defaults to
!ref($active) && next;
my $name = $win->get_active_name;
-
- my $filter_level = Irssi::settings_get_int('chanact_filter');
- if (grep { $_ eq $name } split ' ', $windowlist) {
- # window matches $windowlist, so use
- # chanact_filter_windowlist_level to override
- # chanact_filter
- $filter_level = Irssi::settings_get_int('chanact_filter_windowlist_level');
+ my $type = $active->{type};
+
+ # determine whether we have a match with the windowlist
+ my @windowlist = split ' ', $windowlist;
+ my $match_windowlist = grep { $_ eq $name } @windowlist;
+ if ($type eq 'QUERY') {
+ # if this is a query, also try to match @QUERIES
+ $match_windowlist ||= grep { $_ eq '@QUERIES' } @windowlist;
}
+
+ # choose filter_level according to whether the window is in
+ # the windowlist
+ my $filter_level = $match_windowlist
+ ? Irssi::settings_get_int('chanact_filter_windowlist_level')
+ : Irssi::settings_get_int('chanact_filter');
+
# skip windows with data of level lower than the applicable
# filter setting
next if ($win->{data_level} < $filter_level);
# check if we should show the mode
$mode = "";
- if ($active->{type} eq "CHANNEL") {
+ if ($type eq "CHANNEL") {
my $server = $win->{active_server};
!ref($server) && next;
# 0.5.11
# - added chanact_filter_windowlist, which is a space-separated list of
# windows for which to use chanact_filter_windowlist_level instead of
-# chanact_filter (madduck@madduck.net).
+# chanact_filter. You can use @QUERIES to match all queries
+# (madduck@madduck.net).
#
# 0.5.10
# - fixed irssi crash when using Irssi::print from within remake()