summaryrefslogtreecommitdiffstats
path: root/scripts/il.pl
diff options
context:
space:
mode:
authorAlexander Færøy2014-05-31 13:10:46 +0200
committerAlexander Færøy2014-05-31 13:10:46 +0200
commit2d0759e6ca5767b48bcc85bf38c2c43d5f0b63b1 (patch)
tree1c5e6d817c88e67b46e216a50e0aef5428bf63df /scripts/il.pl
parent2d080422d79d1fd49d6c5528593ccaaff9bfc583 (diff)
downloadscripts.irssi.org-2d0759e6ca5767b48bcc85bf38c2c43d5f0b63b1.tar.bz2
Import scripts from scripts.irssi.org
Diffstat (limited to 'scripts/il.pl')
-rw-r--r--scripts/il.pl104
1 files changed, 104 insertions, 0 deletions
diff --git a/scripts/il.pl b/scripts/il.pl
new file mode 100644
index 0000000..b947c4a
--- /dev/null
+++ b/scripts/il.pl
@@ -0,0 +1,104 @@
+#
+# for all who dont like perl:
+# inputlength = "{sb length: $@L}";
+#
+# with leading spaces: (3 spaces in example)
+# inputlength = "{sb $[-!3]@L}";
+#
+# with leading char "-"
+#
+# inputlength = "{sb $[-!3-]@L}";
+#
+# you cant use numbers here. if you want to use the numbers use the
+# perl script
+#
+#
+# thanks to: Wouter Coekaerts <wouter@coekaerts.be> aka coekie
+#
+# add one of these 2 lines to your config in statusbar items section
+#
+# the perl scripts reacts on every keypress and updates the counter.
+# if you dont need/want this the settings are maybe enough for you.
+# with the settings the item is update with a small delay.
+#
+
+use strict;
+use Irssi 20021105;
+use Irssi::TextUI;
+
+use vars qw($VERSION %IRSSI);
+$VERSION = '0.0.5';
+%IRSSI = (
+ authors => 'Marcus Rueckert',
+ contact => 'darix@irssi.org',
+ name => 'inputlength',
+ description => 'adds a statusbar item which show length of the inputline',
+ license => 'BSD License or something more liberal',
+ url => 'http://www.irssi.de./',
+ changed => '2003-01-13T13:17:44Z'
+);
+
+sub beancounter {
+ my ( $sbItem, $get_size_only ) = @_;
+
+ my ( $width, $padChar, $padNum, $length );
+
+ #
+ # getting settings
+ #
+ $width = Irssi::settings_get_int ( 'inputlength_width' );
+ $padChar = Irssi::settings_get_str ( 'inputlength_padding_char' );
+
+ #
+ # only one char allowed
+ #
+ $padChar =~ s/^(.).*?$/$1/;
+
+ #
+ # do we have to deal wit numbers for padding?
+ #
+ if ( $padChar =~ m/\d/ ) {
+ $padNum = $padChar;
+ $padChar = '-';
+ };
+
+ #
+ # getting formatted lengh
+ #
+ $length = Irssi::parse_special ( "\$[-!$width$padChar]\@L" );
+
+ #
+ # did we have a number?
+ #
+ $length =~ s/$padChar/$padNum/g if ( $padNum ne '' );
+
+ $sbItem->default_handler ( $get_size_only, "{sb $length}", undef, 1 );
+}
+
+Irssi::statusbar_item_register ( 'inputlength', 0, 'beancounter' );
+#
+# ToDo:
+# - statusbar item register doesnt support function references.
+# so we have to stuck to the string and wait for cras.
+#
+
+Irssi::signal_add_last 'gui key pressed' => sub {
+ Irssi::statusbar_items_redraw ( 'inputlength' );
+};
+
+Irssi::settings_add_int ( 'inputlength', 'inputlength_width', 0 );
+#
+# setting:
+#
+# 0 means it resizes automatically
+# greater means it has at least a size of n chars.
+# it will grow if the space is to space is too small
+#
+
+Irssi::settings_add_str ( 'inputlength', 'inputlength_padding_char', " " );
+#
+# char to pad with
+#
+# you can use any char you like here. :) even numbers should work
+#
+