diff options
| author | Alexander Færøy | 2014-05-31 13:10:46 +0200 | 
|---|---|---|
| committer | Alexander Færøy | 2014-05-31 13:10:46 +0200 | 
| commit | 2d0759e6ca5767b48bcc85bf38c2c43d5f0b63b1 (patch) | |
| tree | 1c5e6d817c88e67b46e216a50e0aef5428bf63df /scripts/il.pl | |
| parent | 2d080422d79d1fd49d6c5528593ccaaff9bfc583 (diff) | |
| download | scripts.irssi.org-2d0759e6ca5767b48bcc85bf38c2c43d5f0b63b1.tar.bz2 | |
Import scripts from scripts.irssi.org
Diffstat (limited to 'scripts/il.pl')
| -rw-r--r-- | scripts/il.pl | 104 | 
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 +# + | 
