summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--_data/scripts.yaml11
-rw-r--r--scripts/levelclear.pl36
2 files changed, 47 insertions, 0 deletions
diff --git a/_data/scripts.yaml b/_data/scripts.yaml
index 32f90aa..afbfb9e 100644
--- a/_data/scripts.yaml
+++ b/_data/scripts.yaml
@@ -2248,6 +2248,17 @@
url: "http://irssi.org/scripts/"
version: "20040515"
+- authors: "Nico R. Wohlgemuth"
+ commands: "levelclear"
+ contact: "nico@lifeisabug.com"
+ description: "Similar to crapbuster.pl but uses irssis internal scrollback levelclear functionality and is able to clear the previous window automatically after having switched to a new one when levelclear_autoclear is set to true."
+ filename: "levelclear.pl"
+ modified: "2014-06-15 17:07:00"
+ license: "WTFPL"
+ name: "levelclear"
+ url: "http://scripts.irssi.org/"
+ version: "1.1"
+
- authors: "Jari Matilainen"
contact: "jmn98015@student.mdh.se"
description: "Licq statusbar thingy"
diff --git a/scripts/levelclear.pl b/scripts/levelclear.pl
new file mode 100644
index 0000000..5bccd85
--- /dev/null
+++ b/scripts/levelclear.pl
@@ -0,0 +1,36 @@
+use strict;
+use warnings;
+
+use Irssi;
+use vars qw($VERSION %IRSSI);
+
+$VERSION = "1.1";
+%IRSSI = (
+ authors => 'Nico R. Wohlgemuth',
+ contact => 'nico@lifeisabug.com',
+ name => 'levelclear',
+ description => 'Similar to crapbuster.pl but uses irssis internal scrollback levelclear functionality and is able to clear the previous window automatically after having switched to a new one when levelclear_autoclear is set to true.',
+ license => 'WTFPL',
+ url => 'http://scripts.irssi.org/',
+ changed => '2014-06-15 17:07:00'
+);
+
+Irssi::settings_add_str('levelclear', 'levelclear_levels', 'CLIENTCRAP,CLIENTERROR,CLIENTNOTICE,CRAP,JOINS,KICKS,MODES,NICKS,PARTS,QUITS,TOPICS');
+Irssi::settings_add_bool('levelclear', 'levelclear_autoclear', 0);
+
+my $levelclearcmd = 'SCROLLBACK LEVELCLEAR -level ' . Irssi::settings_get_str('levelclear_levels');
+
+sub levelclear {
+ Irssi::command($levelclearcmd);
+}
+
+Irssi::signal_add(
+ 'window changed' => sub {
+ my (undef, $oldwin) = @_;
+ if (Irssi::settings_get_bool('levelclear_autoclear') && $oldwin) {
+ $oldwin->command($levelclearcmd) if ($oldwin->{name} ne '(status)');
+ }
+ }
+);
+
+Irssi::command_bind('levelclear', 'levelclear');