diff options
| author | ailin-nemui | 2015-11-16 19:32:11 -0300 | 
|---|---|---|
| committer | dequis | 2015-11-16 19:34:05 -0300 | 
| commit | 2bc8e3368c0b842f1fe6fad069915a4bb90b1fa2 (patch) | |
| tree | cafd9a0ee1dace65772f70f6147598227c38a35b /scripts/complete_at.pl | |
| parent | b8965d1651f89ebcd395de3309c1255542ad4c78 (diff) | |
| download | scripts.irssi.org-2bc8e3368c0b842f1fe6fad069915a4bb90b1fa2.tar.bz2 | |
Add all of nei's scripts from nei's website
Diffstat (limited to 'scripts/complete_at.pl')
| -rw-r--r-- | scripts/complete_at.pl | 40 | 
1 files changed, 40 insertions, 0 deletions
| diff --git a/scripts/complete_at.pl b/scripts/complete_at.pl new file mode 100644 index 0000000..597e81e --- /dev/null +++ b/scripts/complete_at.pl @@ -0,0 +1,40 @@ +use strict; +use warnings; + +our $VERSION = '0.2'; # 49f841075725906 +our %IRSSI = ( +    authors     => 'Nei', +    contact     => 'Nei @ anti@conference.jabber.teamidiot.de', +    url         => "http://anti.teamidiot.de/", +    name        => 'complete_at', +    description => 'Complete nicks after @ (twitter-style)', +    license     => 'ISC', +   ); + +# Usage +# ===== +# write @ and type on the Tab key to complete nicks + +{ package Irssi::Nick } + +my $complete_char = '@'; + +sub complete_at { +    my ($cl, $win, $word, $start, $ws) = @_; +    if ($cl && !@$cl +	    && $win && $win->{active} +	    && $win->{active}->isa('Irssi::Channel')) { +	if ((my $pos = rindex $word, $complete_char) > -1) { +	    my ($pre, $post) = ((substr $word, 0, $pos), (substr $word, $pos + 1)); +	    my $pre2 = length $start ? "$start $pre" : $pre; +	    my $pre3 = length $pre2 ? "$pre2$complete_char" : ""; +	    Irssi::signal_emit('complete word', $cl, $win, $post, $pre3, $ws); +	    unless (@$cl) { +		push @$cl, grep { /^\Q$post/i } map { $_->{nick} } $win->{active}->nicks(); +	    } +	    map { $_ = "$pre$complete_char$_" } @$cl; +	} +    } +} + +Irssi::signal_add_last('complete word' => 'complete_at'); | 
