Permalink
Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
47 lines (37 sloc) 1.29 KB
use strict;
use vars qw($VERSION %IRSSI);
use Irssi;
$VERSION = '2.1';
%IRSSI = (
authors => 'Daenyth',
contact => 'Daenyth /at/ gmail /dot/ com',
name => 'Complete Last-Spoke',
description => 'When using tab completion on an empty input buffer, complete to the nick of the person who spoke most recently.',
license => 'GPL2',
);
my %list_of_speakers;
sub complete_to_last_nick {
my ($strings, $window, $word, $linestart, $want_space) = @_;
return unless ($linestart eq '' && $word eq '');
my $last_speaker = get_last_speaker($window);
return unless defined $last_speaker;
my $suffix = Irssi::settings_get_str('completion_char');
@$strings = $last_speaker . $suffix;
$$want_space = 1;
Irssi::signal_stop();
}
sub get_last_speaker {
my $window = shift;
return $list_of_speakers{$window->{active}->{name}};
}
sub store_last_speaker {
my ($server, $message, $speaker, $address, $target) = @_;
$list_of_speakers{$target} = $speaker;
}
sub store_last_actor {
my ($server, $args, $actor, $address, $target) = @_;
$list_of_speakers{$target} = $actor;
}
Irssi::signal_add_first( 'complete word', \&complete_to_last_nick );
Irssi::signal_add_last ( 'message public', \&store_last_speaker );
Irssi::signal_add_last ( 'ctcp action', \&store_last_actor );