}
$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';
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;
}