summaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorailin-nemui2017-02-21 09:56:07 +0100
committerGitHub2017-02-21 09:56:07 +0100
commit2355300abd14a3bd806658c6dde439266916a76f (patch)
treedbb9cf7781c8886694ff2dc523165d9c7a1d3d1b /scripts
parentb3a8e7731bc5e12822820efc88491e05ffe8f556 (diff)
parent42496f290059fd6e30be380f45b7f5f895ca9beb (diff)
downloadscripts.irssi.org-2355300abd14a3bd806658c6dde439266916a76f.tar.bz2
Merge pull request #352 from aquanight/perlalias.pl+tabcomplete
[perlalias.pl] Add second-level command completion
Diffstat (limited to 'scripts')
-rw-r--r--scripts/perlalias.pl30
1 files changed, 29 insertions, 1 deletions
diff --git a/scripts/perlalias.pl b/scripts/perlalias.pl
index bb3b306..b546688 100644
--- a/scripts/perlalias.pl
+++ b/scripts/perlalias.pl
@@ -75,7 +75,7 @@ use POSIX qw(strftime);
{ package Irssi::Nick; } # Keeps trying to look for this package but for some reason it doesn't get loaded.
-our $VERSION = '1.1';
+our $VERSION = '1.2';
our %IRSSI = (
authors => 'aquanight',
contact => 'aquanight@gmail.com',
@@ -235,6 +235,34 @@ sub sig_setup_reread {
close $fd;
}
+sub sig_complete_perlalias {
+ my ($lst, $win, $word, $line, $want_space) = @_;
+ $word//return;
+ $line//return;
+ $lst//return;
+ if ($line ne '') {
+ my $def = $cmds{$line};
+ $def//return;
+ push @$lst, $def->{textcmd};
+ Irssi::signal_stop();
+ }
+ else {
+ push @$lst, (grep /^\Q$word\E/i, keys %cmds);
+ Irssi::signal_stop();
+ }
+}
+
+sub sig_complete_perlunalias {
+ my ($lst, $win, $word, $line, $want_space) = @_;
+ $lst//return;
+ $word//return;
+ push @$lst, (grep /^\Q$word\E/i, keys %cmds);
+}
+
+Irssi::signal_register({"complete command " => [qw(glistptr_char* Irssi::UI::Window string string intptr)]});
+Irssi::signal_add("complete command perlalias" => \&sig_complete_perlalias);
+Irssi::signal_add("complete command perlunalias" => \&sig_complete_perlunalias);
+
Irssi::signal_add("setup saved" => \&sig_setup_saved);
Irssi::signal_add("setup reread" => \&sig_setup_reread);