X-Git-Url: https://git.madduck.net/code/irssi/scripts-bc-bd.git/blobdiff_plain/f2e70652ea852b3fb35087e66a7eaf30db6b9d11..596b9f613b12751a949f361da959d0e64ad5db21:/chanact.pl diff --git a/chanact.pl b/chanact.pl index 10e1c83..44b071a 100644 --- a/chanact.pl +++ b/chanact.pl @@ -165,6 +165,7 @@ $VERSION = "0.5.11"; # * : 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 # like chanact_filter for windows in chanact_filter_windowlist. Defaults to @@ -246,14 +247,22 @@ sub remake() { !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); @@ -267,7 +276,7 @@ sub remake() { # 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; @@ -492,7 +501,8 @@ Irssi::signal_add_last('window refnum changed', 'refnum_changed'); # 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()