summaryrefslogtreecommitdiffstats
path: root/lib/Reply/Plugin
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Reply/Plugin')
-rw-r--r--lib/Reply/Plugin/Autocomplete/Commands.pm19
-rw-r--r--lib/Reply/Plugin/Autocomplete/Keywords.pm1
-rw-r--r--lib/Reply/Plugin/Autocomplete/Packages.pm1
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*$/;