summaryrefslogtreecommitdiffstats
path: root/scripts/complete_at.pl
diff options
context:
space:
mode:
authorailin-nemui2015-11-16 19:32:11 -0300
committerdequis2015-11-16 19:34:05 -0300
commit2bc8e3368c0b842f1fe6fad069915a4bb90b1fa2 (patch)
treecafd9a0ee1dace65772f70f6147598227c38a35b /scripts/complete_at.pl
parentb8965d1651f89ebcd395de3309c1255542ad4c78 (diff)
downloadscripts.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.pl40
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');