From 2bc8e3368c0b842f1fe6fad069915a4bb90b1fa2 Mon Sep 17 00:00:00 2001 From: ailin-nemui Date: Mon, 16 Nov 2015 19:32:11 -0300 Subject: Add all of nei's scripts from nei's website --- scripts/complete_at.pl | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 scripts/complete_at.pl (limited to 'scripts/complete_at.pl') 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'); -- cgit v1.2.3