From: martin f. krafft Date: Tue, 26 May 2009 13:53:58 +0000 (+0200) Subject: Allow windowlist to match all queries X-Git-Url: https://git.madduck.net/code/irssi/scripts-bc-bd.git/commitdiff_plain/937124e9ebb4be4ae0543fe74487eb0de76d0489 Allow windowlist to match all queries Added special windowlist keyword @QUERIES to match all query windows, so that you can either promote queries to a different filter level by window name, or altogether. Signed-off-by: martin f. krafft Cc: 530588@bugs.debian.org --- diff --git a/chanact.pl b/chanact.pl index 10e1c83..3d44b94 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,10 +247,19 @@ sub remake() { !ref($active) && next; my $name = $win->get_active_name; + 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; + } my $filter_level = Irssi::settings_get_int('chanact_filter'); - if (grep { $_ eq $name } split ' ', $windowlist) { - # window matches $windowlist, so use + if ($match_windowlist) { + # window matches windowlist so use # chanact_filter_windowlist_level to override # chanact_filter $filter_level = Irssi::settings_get_int('chanact_filter_windowlist_level'); @@ -267,7 +277,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 +502,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()