]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/LeiQuery.pm
lei q: do not leave temporary files after oneshot exit
[public-inbox.git] / lib / PublicInbox / LeiQuery.pm
index fd8a3bcaaa812e0b894fcc155ba17686a445e23e..ca214ca19230c149b1b5b49833cd6283bf8e5e59 100644 (file)
@@ -54,7 +54,7 @@ sub lei_q {
                return $self->fail('no local or remote inboxes to search');
        }
        my $xj = $lxs->concurrency($opt);
-       my $ovv = PublicInbox::LeiOverview->new($self) or return;
+       PublicInbox::LeiOverview->new($self) or return;
        $self->atfork_prepare_wq($lxs);
        $lxs->wq_workers_start('lei_xsearch', $xj, $self->oldset);
        delete $lxs->{-ipc_atfork_child_close};
@@ -90,10 +90,26 @@ sub lei_q {
        # descending docid order
        $mset_opt{relevance} //= -2 if $opt->{thread};
        $self->{mset_opt} = \%mset_opt;
-       $ovv->ovv_begin($self);
+       $self->{ovv}->ovv_begin($self);
        $lxs->do_query($self);
 }
 
+# shell completion helper called by lei__complete
+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);
+                       return @c if @c;
+               }
+               unshift(@cur, pop @argv);
+       }
+       ();
+}
+
 # Stuff we may pass through to curl (as of 7.64.0), see curl manpage for
 # details, so most options which make sense for HTTP/HTTPS (including proxy
 # support for Tor and other methods of getting past weird networks).