diff options
author | Shawn M Moore <code@sartak.org> | 2013-06-27 13:55:54 -0400 |
---|---|---|
committer | Shawn M Moore <code@sartak.org> | 2013-06-27 13:55:54 -0400 |
commit | c437b3ded1a8a0700cab205c3801a854969c77c9 (patch) | |
tree | 6f2fe3cc9b6615a838b49748230de15320670ac8 | |
parent | bf09193613e1130f3e02ace7bc2acb09f6685714 (diff) | |
download | reply-c437b3ded1a8a0700cab205c3801a854969c77c9.tar.gz reply-c437b3ded1a8a0700cab205c3801a854969c77c9.zip |
First cut of Autocomplete: completes Perl keywords
-rw-r--r-- | dist.ini | 1 | ||||
-rw-r--r-- | lib/Reply/Plugin/Autocomplete.pm | 40 |
2 files changed, 41 insertions, 0 deletions
@@ -35,6 +35,7 @@ Data::Dump = 0 Data::Printer = 0 Proc::InvokeEditor = 0 Term::ReadLine::Gnu = 0 +B::Keywords = 0 ; XXX it'd be nice if we could make this recommended instead of required [OSPrereqs / MSWin32] diff --git a/lib/Reply/Plugin/Autocomplete.pm b/lib/Reply/Plugin/Autocomplete.pm new file mode 100644 index 0000000..621a832 --- /dev/null +++ b/lib/Reply/Plugin/Autocomplete.pm @@ -0,0 +1,40 @@ +package Reply::Plugin::Autocomplete; +use strict; +use warnings; +# ABSTRACT: tab complete your input + +use base 'Reply::Plugin'; + +use B::Keywords qw/@Functions @Barewords/; + +=head1 SYNOPSIS + + ; .replyrc + [Autocomplete] + +=head1 DESCRIPTION + +This plugin registers a tab key handler to autocomplete Perl code. + +=cut + +sub tab_handler { + my ($self, $line) = @_; + + return ( + $self->_tab_keyword($line), + ); +} + +sub _tab_keyword { + my ($self, $line) = @_; + + my ($last_word) = $line =~ /(\w+)$/; + return unless $last_word; + + my $re = qr/^\Q$last_word/; + + return grep { $_ =~ $re } @Functions, @Barewords; +} + +1; |