From d692a0550b58bb16770000aeaffb0308da0c9328 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Tue, 2 Feb 2021 22:11:39 -1000 Subject: [PATCH] lei: complete basenames for include|exclude|only 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); -- 2.44.0