This will make it even easier for RSI-afflicted users to use,
since many externals may share a common prefix.
---
 lib/PublicInbox/LeiQuery.pm | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/lib/PublicInbox/LeiQuery.pm b/lib/PublicInbox/LeiQuery.pm
index 10b8d6fa..8015ecec 100644
--- a/lib/PublicInbox/LeiQuery.pm
+++ b/lib/PublicInbox/LeiQuery.pm
@@ -112,11 +112,22 @@ sub lei_q {
 sub _complete_q {
        my ($self, @argv) = @_;
        my $ext = qr/\A(?:-I|(?:--(?:include|exclude|only)))\z/;
-       # $argv[-1] =~ $ext and return $self->_complete_forget_external;
        my @cur;
        while (@argv) {
                if ($argv[-1] =~ $ext) {
                        my @c = $self->_complete_forget_external(@cur);
+                       # try basename match:
+                       if (scalar(@cur) == 1 && index($cur[0], '/') < 0) {
+                               my $all = $self->externals_each;
+                               my %bn;
+                               for my $loc (keys %$all) {
+                                       my $bn = (split(m!/!, $loc))[-1];
+                                       ++$bn{$bn};
+                               }
+                               push @c, grep {
+                                       $bn{$_} == 1 && /\A\Q$cur[0]/
+                               } keys %bn;
+                       }
                        return @c if @c;
                }
                unshift(@cur, pop @argv);
--
unsubscribe: one-click, see List-Unsubscribe header
archive: https://public-inbox.org/meta/

Reply via email to