From 3e19fb26f62ce9fa02e417c015f6668989d1eaad Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Wed, 7 Aug 2013 22:28:04 -0400 Subject: convert all of the plugins --- lib/Reply/Plugin/Autocomplete/Globals.pm | 101 ++++++++++++++----------------- 1 file changed, 46 insertions(+), 55 deletions(-) (limited to 'lib/Reply/Plugin/Autocomplete/Globals.pm') diff --git a/lib/Reply/Plugin/Autocomplete/Globals.pm b/lib/Reply/Plugin/Autocomplete/Globals.pm index ac2ca3e..2bdd673 100644 --- a/lib/Reply/Plugin/Autocomplete/Globals.pm +++ b/lib/Reply/Plugin/Autocomplete/Globals.pm @@ -1,9 +1,9 @@ -package Reply::Plugin::Autocomplete::Globals; +package main; use strict; use warnings; # ABSTRACT: tab completion for global variables -use base 'Reply::Plugin'; +use mop; use Package::Stash; @@ -22,61 +22,52 @@ Perl code. =cut -sub new { - my $class = shift; - - my $self = $class->SUPER::new(@_); - - return $self; -} - -sub tab_handler { - my $self = shift; - my ($line) = @_; - - my ($maybe_var) = $line =~ /($fq_varname_rx)$/; - return unless $maybe_var; - $maybe_var =~ s/\s+//g; - - my ($sigil, $rest) = $maybe_var =~ /(.)(.*)/; - - my @parts = split '::', $rest, -1; - return if grep { /:/ } @parts; - return if @parts && $parts[0] =~ /^[0-9]/; - - my $var_prefix = pop @parts; - $var_prefix = '' unless defined $var_prefix; - - my $stash_name = join('::', @parts); - my $stash = eval { - Package::Stash->new(@parts ? $stash_name : 'main') - }; - return unless $stash; - - my @symbols = map { s/^(.)main::/$1/; $_ } _recursive_symbols($stash); - - my $prefix = $stash_name - ? $stash_name . '::' . $var_prefix - : $var_prefix; - - my @results; - for my $global (@symbols) { - my ($global_sigil, $global_name) = $global =~ /(.)(.*)/; - next unless index($global_name, $prefix) == 0; - - # this is weird, not sure why % gets stripped but not $ or @ - if ($sigil eq $global_sigil) { - push @results, $sigil eq '%' ? $global : $global_name; +class Reply::Plugin::Autocomplete::Globals extends Reply::Plugin { + method tab_handler ($line) { + my ($maybe_var) = $line =~ /($fq_varname_rx)$/; + return unless $maybe_var; + $maybe_var =~ s/\s+//g; + + my ($sigil, $rest) = $maybe_var =~ /(.)(.*)/; + + my @parts = split '::', $rest, -1; + return if grep { /:/ } @parts; + return if @parts && $parts[0] =~ /^[0-9]/; + + my $var_prefix = pop @parts; + $var_prefix = '' unless defined $var_prefix; + + my $stash_name = join('::', @parts); + my $stash = eval { + Package::Stash->new(@parts ? $stash_name : 'main') + }; + return unless $stash; + + my @symbols = map { s/^(.)main::/$1/; $_ } _recursive_symbols($stash); + + my $prefix = $stash_name + ? $stash_name . '::' . $var_prefix + : $var_prefix; + + my @results; + for my $global (@symbols) { + my ($global_sigil, $global_name) = $global =~ /(.)(.*)/; + next unless index($global_name, $prefix) == 0; + + # this is weird, not sure why % gets stripped but not $ or @ + if ($sigil eq $global_sigil) { + push @results, $sigil eq '%' ? $global : $global_name; + } + elsif ($global_sigil eq '@' && $sigil eq '$') { + push @results, "$global_name\["; + } + elsif ($global_sigil eq '%') { + push @results, "$global_name\{"; + } } - elsif ($global_sigil eq '@' && $sigil eq '$') { - push @results, "$global_name\["; - } - elsif ($global_sigil eq '%') { - push @results, "$global_name\{"; - } - } - return @results; + return @results; + } } sub _recursive_symbols { -- cgit v1.2.3-54-g00ecf