use vars qw($VERSION %IRSSI);
-$VERSION = "0.5.10";
+$VERSION = "0.5.11";
%IRSSI = (
authors => 'BC-bd, Veli',
contact => 'bd@bc-bd.org, veli@piipiip.net',
# qrczak@knm.org.pl chanact_abbreviate_names
# qerub@home.se Extra chanact_show_mode and chanact_chop_status
# madduck@madduck.net Better channel aliasing (case-sensitive, cross-network)
+# chanact_filter_windowlist
# Jan 'jast' Krueger <jast@heapsort.de>, 2004-06-22
# Ivo Timmermans <ivo@o2w.nl> win->{hilight} patch
#
# * 3 : hide channels with text messages
# * 4 : hide all channels (now why would you want to do that)
#
+# /set chanact_filter_windowlist <string>
+# * <string> : space-separated list of windows for which to use
+# chanact_filter_windowlist_level instead of
+# chanact_filter.
+#
+# /set chanact_filter_windowlist_level <int>
+# like chanact_filter for windows in chanact_filter_windowlist. Defaults to
+# chanact_filter<4 ? 4 : 2, making chanact_filter_windowlist a list of
+# windows never to show if chanact_filter<4, and a list of windows to show
+# when there is reasonable activity if all channels would be hidden.
+#
#########
# HINTS
#########
my $abbrev = Irssi::settings_get_int('chanact_abbreviate_names');
my $remove_prefix = Irssi::settings_get_str('chanact_remove_prefix');
my $remove_hash = Irssi::settings_get_bool('chanact_remove_hash');
+ my $windowlist = Irssi::settings_get_str('chanact_filter_windowlist');
if (Irssi::settings_get_bool('chanact_sort_by_activity')) {
@windows = sort { ($b->{last_line} <=> $a->{last_line}) }
my $name = $win->get_active_name;
- # skip windows that have only activity below the filter setting
- next if (Irssi::settings_get_int('chanact_filter') > $win->{data_level});
+ 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');
+ }
+ # skip windows with data of level lower than the applicable
+ # filter setting
+ next if ($win->{data_level} < $filter_level);
# (status) is an awfull long name, so make it short to 'S'
# some people don't like it, so make it configurable
Irssi::settings_add_bool('chanact', 'chanact_chop_status', 1);
Irssi::settings_add_bool('chanact', 'chanact_sort_by_activity', 1);
Irssi::settings_add_int('chanact', 'chanact_filter', 0);
+Irssi::settings_add_str('chanact', 'chanact_filter_windowlist', "");
+Irssi::settings_add_int('chanact', 'chanact_filter_windowlist_level',
+ Irssi::settings_get_int('chanact_filter') < 4 ? 4 : 2);
# register the statusbar item
Irssi::statusbar_item_register('chanact', '$0', 'chanact');
###
#
# Changelog
-#
+#
+# 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).
+#
# 0.5.10
# - fixed irssi crash when using Irssi::print from within remake()
# - added option to filter out some data levels, based on a patch by