summaryrefslogtreecommitdiffstats
path: root/lib/Reply/Plugin/Autocomplete/Methods.pm
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2013-07-10 00:49:28 -0400
committerJesse Luehrs <doy@tozt.net>2013-07-10 00:49:28 -0400
commit9ad70dd68d45203970fed6e7c2bdca13da13d8c4 (patch)
treea425c8eb6af5f36dd48e7c0ca9f6318e66a9fb27 /lib/Reply/Plugin/Autocomplete/Methods.pm
parentd9fed797b987de4e87ee30b9758e2169051356ce (diff)
downloadreply-9ad70dd68d45203970fed6e7c2bdca13da13d8c4.tar.gz
reply-9ad70dd68d45203970fed6e7c2bdca13da13d8c4.zip
factor this out
Diffstat (limited to 'lib/Reply/Plugin/Autocomplete/Methods.pm')
-rw-r--r--lib/Reply/Plugin/Autocomplete/Methods.pm24
1 files changed, 5 insertions, 19 deletions
diff --git a/lib/Reply/Plugin/Autocomplete/Methods.pm b/lib/Reply/Plugin/Autocomplete/Methods.pm
index d4319b2..b643fb2 100644
--- a/lib/Reply/Plugin/Autocomplete/Methods.pm
+++ b/lib/Reply/Plugin/Autocomplete/Methods.pm
@@ -5,11 +5,9 @@ use warnings;
use base 'Reply::Plugin';
-use MRO::Compat;
-use Package::Stash;
use Scalar::Util 'blessed';
-use Reply::Util qw($ident_rx $fq_ident_rx $fq_varname_rx);
+use Reply::Util qw($ident_rx $fq_ident_rx $fq_varname_rx methods);
=head1 SYNOPSIS
@@ -52,12 +50,12 @@ sub tab_handler {
my $self = shift;
my ($line) = @_;
- my ($invocant, $method) = $line =~ /($fq_varname_rx|$fq_ident_rx)->($ident_rx)?$/;
+ my ($invocant, $method_prefix) = $line =~ /($fq_varname_rx|$fq_ident_rx)->($ident_rx)?$/;
return unless $invocant;
# XXX unicode
return unless $invocant =~ /^[\$A-Z_a-z]/;
- $method = '' unless defined $method;
+ $method_prefix = '' unless defined $method_prefix;
my $class;
if ($invocant =~ /^\$/) {
@@ -73,21 +71,9 @@ sub tab_handler {
$class = $invocant;
}
- my @mro = (
- @{ mro::get_linear_isa('UNIVERSAL') },
- @{ mro::get_linear_isa($class) },
- );
-
my @results;
- for my $package (@mro) {
- my $stash = eval { Package::Stash->new($package) };
- next unless $stash;
-
- for my $stash_method ($stash->list_all_symbols('CODE')) {
- next unless index($stash_method, $method) == 0;
-
- push @results, $stash_method;
- }
+ for my $method (methods($class)) {
+ push @results, $method if index($method, $method_prefix) == 0;
}
return sort @results;