]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/LeiLsMailSource.pm
lei convert: remove redundant input_net_cb
[public-inbox.git] / lib / PublicInbox / LeiLsMailSource.pm
index 2265969a0d9631709de2dba2548e7ef0080188c4..5eb7032d78b7252e47dd861c76f1e48ad14b7dad 100644 (file)
@@ -96,7 +96,7 @@ sub lei_ls_mail_source {
        }
        $lei->start_pager if $isatty;
        my $ops = {};
-       $lei->{auth}->op_merge($ops, $self);
+       $lei->{auth}->op_merge($ops, $self, $lei);
        (my $op_c, $ops) = $lei->workers_start($self, 1, $ops);
        $lei->{wq1} = $self;
        $lei->{-err_type} = 'non-fatal';
@@ -107,12 +107,13 @@ sub lei_ls_mail_source {
 sub _complete_ls_mail_source {
        my ($lei, @argv) = @_;
        my $match_cb = $lei->complete_url_prepare(\@argv);
-       my @m = map { $match_cb->($_) } $lei->url_folder_cache->keys;
-       my %f = map { $_ => 1 } @m;
+       my @k = $lei->url_folder_cache->keys($argv[-1] // undef, 1);
+       my @m = map { $match_cb->($_) } @k;
+       my %f = map { $_ => 1 } (@m ? @m : @k);
        if (my $lms = $lei->lms) {
-               @m = map { $match_cb->($_) } grep(
-                       m!\A(?:imaps?|nntps?|s?news)://!, $lms->folders);
-               @f{@m} = @m;
+               @k = $lms->folders($argv[-1] // undef, 1);
+               @m = map { $match_cb->($_) } grep(m!\A[a-z]+://!, @k);
+               if (@m) { @f{@m} = @m } else { @f{@k} = @k }
        }
        keys %f;
 }