diff options
Diffstat (limited to 'lib/Reply/Plugin/Autocomplete')
-rw-r--r-- | lib/Reply/Plugin/Autocomplete/Commands.pm | 19 | ||||
-rw-r--r-- | lib/Reply/Plugin/Autocomplete/Keywords.pm | 1 | ||||
-rw-r--r-- | lib/Reply/Plugin/Autocomplete/Packages.pm | 1 |
3 files changed, 21 insertions, 0 deletions
diff --git a/lib/Reply/Plugin/Autocomplete/Commands.pm b/lib/Reply/Plugin/Autocomplete/Commands.pm new file mode 100644 index 0000000..ec86208 --- /dev/null +++ b/lib/Reply/Plugin/Autocomplete/Commands.pm @@ -0,0 +1,19 @@ +package Reply::Plugin::Autocomplete::Commands; +use strict; +use warnings; + +use base 'Reply::Plugin'; + +sub tab_handler { + my $self = shift; + my ($line) = @_; + + my ($prefix) = $line =~ /^#(.*)/; + return unless defined $prefix; + + my @commands = $self->publish('commands'); + + return map { "#$_" } sort grep { index($_, $prefix) == 0 } @commands; +} + +1; diff --git a/lib/Reply/Plugin/Autocomplete/Keywords.pm b/lib/Reply/Plugin/Autocomplete/Keywords.pm index 9e22ae4..ee863d1 100644 --- a/lib/Reply/Plugin/Autocomplete/Keywords.pm +++ b/lib/Reply/Plugin/Autocomplete/Keywords.pm @@ -25,6 +25,7 @@ sub tab_handler { my ($before, $last_word) = $line =~ /(.*?)(\w+)$/; return unless $last_word; + return if $before =~ /^#/; # command return if $before =~ /::$/; # Package::function call return if $before =~ /->\s*$/; # method call return if $before =~ /[\$\@\%\&\*]\s*$/; diff --git a/lib/Reply/Plugin/Autocomplete/Packages.pm b/lib/Reply/Plugin/Autocomplete/Packages.pm index 91306c4..c2bb6a0 100644 --- a/lib/Reply/Plugin/Autocomplete/Packages.pm +++ b/lib/Reply/Plugin/Autocomplete/Packages.pm @@ -29,6 +29,7 @@ sub tab_handler { # $module_name_rx does not permit trailing :: my ($before, $package_fragment) = $line =~ /(.*?)(${module_name_rx}:?:?)$/; return unless $package_fragment; + return if $before =~ /^#/; # command return if $before =~ /->\s*$/; # method call return if $before =~ /[\$\@\%\&\*]\s*$/; |