had to cut a new release, missing some M::I files (how?) from the previous
[p5sagit/Devel-REPL.git] / lib / Devel / REPL / Plugin / CompletionDriver / Turtles.pm
CommitLineData
20377446 1package Devel::REPL::Plugin::CompletionDriver::Turtles;
2use Devel::REPL::Plugin;
c015ad3b 3use namespace::clean -except => [ "meta" ];
4
75a08365 5sub BEFORE_PLUGIN {
6 my $self = shift;
7 $self->load_plugin('Completion');
8}
9
20377446 10around complete => sub {
11 my $orig = shift;
12 my ($self, $text, $document) = @_;
13
14 my $prefix = $self->default_command_prefix;
15 my $line_re = qr/^($prefix)(\w+)/;
16
17 my @orig = $self->$orig($text, $document);
18
19 if ( my ( $pre, $method ) = ( $text =~ $line_re ) ) {
20 my $filter = qr/^\Q$method/;
21 return (
22 @orig,
23 (
24 map { "$pre$_" }
25 grep { $_ =~ $filter }
26 map { /^expr?_command_(\w+)/ ? $1 : () }
27 map { $_->{name} }
28 $self->meta->compute_all_applicable_methods
29 ),
30 );
31 } else {
32 return @orig;
33 }
34};
35
36__PACKAGE__
37
38__END__
39
cfd1094b 40=head1 NAME
41
42Devel::REPL::Plugin::CompletionDriver::Turtles - Complete Turtles-based commands
43
30b459d4 44=head1 AUTHOR
45
46Yuval Kogman E<lt>nothingmuch@woobling.orgE<gt>
47
cfd1094b 48=cut
20377446 49