diff options
author | Tom Feist <shabble@metavore.org> | 2011-01-18 00:17:09 +0000 |
---|---|---|
committer | Tom Feist <shabble@metavore.org> | 2011-01-18 00:17:09 +0000 |
commit | d8aa70c8814e73213f108bbe3cf7e3db3a905959 (patch) | |
tree | bd3baac851b222e8e87a90ee40a3fa44038891ea /feature-tests/easy_exec.pl | |
parent | signal_logger: an test to determine how signals are fired, and if they are (diff) | |
download | irssi-scripts-d8aa70c8814e73213f108bbe3cf7e3db3a905959.tar.gz irssi-scripts-d8aa70c8814e73213f108bbe3cf7e3db3a905959.zip |
mroe changes to easy_exec to try to get tab-completion of function names. Works,
but still a bit dumb.
Diffstat (limited to '')
-rw-r--r-- | feature-tests/easy_exec.pl | 59 |
1 files changed, 32 insertions, 27 deletions
diff --git a/feature-tests/easy_exec.pl b/feature-tests/easy_exec.pl index 669a00b..d342516 100644 --- a/feature-tests/easy_exec.pl +++ b/feature-tests/easy_exec.pl @@ -2,7 +2,7 @@ use strict; use warnings; # export everything. -use Irssi; #(@Irssi::EXPORT_OK); +use Irssi; use Irssi::Irc; use Irssi::TextUI; @@ -18,33 +18,38 @@ our %IRSSI = ( license => 'Public Domain', ); -#Irssi::signal_add_first 'command script exec', \&better_exec; -Irssi::command_bind('script exec', \&better_exec); - -sub better_exec { - my ($args, $serv, $witem) = @_; - # todo: handle permanent arg? - my $perm = 0; - print "Args: $args"; - if ($args =~ s/^\s*-permanent\s*(.*)$/$1/) { - $perm = 1; - } - print "Args now: $args"; - -# eval $args; - my $str = "//script exec " . - ($perm ? '-permanent' : '') - . 'use Irssi (@Irssi::EXPORT_OK); ' . $args; - print "Running: $str"; - -# Irssi::command($str); - Irssi::signal_continue($str, @_[1..$#_]); -} +# TODO: make this more tab-complete friendly +init(); + +sub init { + Irssi::command('/alias se script exec use Data::Dumper\;' + .' use Irssi (@Irssi::EXPORT_OK)\; $0-'); + Irssi::command('/alias sep script exec -permanent ' + . 'use Data::Dumper\; use Irssi (@Irssi::EXPORT_OK)\; $0-'); -sub Dump { - print Dumper(\@_); + Irssi::signal_add_last ('complete word', 'sig_complete_word'); } -sub test() { - print "This is a test"; +sub sig_complete_word { + my ($strings, $window, $word, $linestart, $want_space) = @_; + # only provide these completions if the input line is otherwise empty. + my $cmdchars = Irssi::settings_get_str('cmdchars'); + my $quoted = quotemeta($cmdchars); + #print "Linestart: $linestart"; + return unless ($linestart =~ /^${quoted}(?:se|sep)/); + + my $clean_word = $word; + $clean_word =~ s/^"//g; + $clean_word =~ s/"$//g; + $clean_word =~ s/->$//g; + + + + my @expansions = @Irssi::EXPORT_OK; + push @$strings, grep { $_ =~ m/^\Q$clean_word\E/ } @expansions; + print "Sebug: " . join(", ", @$strings); + $$want_space = 0; + + + Irssi::signal_stop() if (@$strings); } |