diff options
Diffstat (limited to 'archive/.irssi/scripts/autorun/go.pl')
-rw-r--r-- | archive/.irssi/scripts/autorun/go.pl | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/archive/.irssi/scripts/autorun/go.pl b/archive/.irssi/scripts/autorun/go.pl new file mode 100644 index 00000000..b656a0fc --- /dev/null +++ b/archive/.irssi/scripts/autorun/go.pl @@ -0,0 +1,59 @@ +use strict; +use vars qw($VERSION %IRSSI); +use Irssi; +use Irssi::Irc; + +# Usage: +# /script load go.pl +# If you are in #irssi you can type /go #irssi or /go irssi or even /go ir ... +# also try /go ir<tab> and /go <tab> (that's two spaces) + +$VERSION = '1.01'; + +%IRSSI = ( + authors => 'nohar', + contact => 'nohar@freenode', + name => 'go to window', + description => 'Implements /go command that activates a window given a name/partial name. It features a nice completion.', + license => 'GPLv2 or later', + changed => '2014-10-19' +); + +sub signal_complete_go { + my ($complist, $window, $word, $linestart, $want_space) = @_; + my $channel = $window->get_active_name(); + my $k = Irssi::parse_special('$k'); + + return unless ($linestart =~ /^\Q${k}\Ego\b/i); + + @$complist = (); + foreach my $w (Irssi::windows) { + my $name = $w->get_active_name(); + if ($word ne "") { + if ($name =~ /\Q${word}\E/i) { + push(@$complist, $name) + } + } else { + push(@$complist, $name); + } + } + Irssi::signal_stop(); +}; + +sub cmd_go +{ + my($chan,$server,$witem) = @_; + + $chan =~ s/ *//g; + foreach my $w (Irssi::windows) { + my $name = $w->get_active_name(); + if ($name =~ /^#?\Q${chan}\E/) { + $w->set_active(); + return; + } + } +} + +Irssi::command_bind("go", "cmd_go"); +Irssi::signal_add_first('complete word', 'signal_complete_go'); + |