]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/LeiExternal.pm
lei ls-search: command to list saved searches
[public-inbox.git] / lib / PublicInbox / LeiExternal.pm
index f4e24c2a131ef3d6e4fa58dcc12b14183ddf4281..b0ebe9479b6254294fada399d746933484a7d6e2 100644 (file)
@@ -144,12 +144,11 @@ sub add_external_finish {
 
 sub lei_add_external {
        my ($self, $location) = @_;
-       $self->_lei_store(1)->write_prepare($self);
        my $opt = $self->{opt};
        my $mirror = $opt->{mirror} // do {
                my @fail;
                for my $sw ($self->index_opt, $self->curl_opt,
-                               qw(no-torsocks torsocks inbox-version)) {
+                               qw(no-torsocks torsocks inbox-version)) {
                        my ($f) = (split(/|/, $sw, 2))[0];
                        next unless defined $opt->{$f};
                        $f = length($f) == 1 ? "-$f" : "--$f";
@@ -216,8 +215,8 @@ sub lei_forget_external {
        }
 }
 
-sub _complete_url_common ($) {
-       my ($argv) = @_;
+sub complete_url_common {
+       my $argv = $_[-1];
        # Workaround bash word-splitting URLs to ['https', ':', '//' ...]
        # Maybe there's a better way to go about this in
        # contrib/completion/lei-completion.bash
@@ -229,7 +228,8 @@ sub _complete_url_common ($) {
                        push @x, $cur;
                        $cur = '';
                }
-               while (@x > 2 && $x[0] !~ /\Ahttps?\z/ && $x[1] ne ':') {
+               while (@x > 2 && $x[0] !~ /\A(?:http|nntp|imap)s?\z/i &&
+                               $x[1] ne ':') {
                        shift @x;
                }
                if (@x >= 2) { # qw(https : hostname : 443) or qw(http :)
@@ -246,7 +246,7 @@ sub _complete_url_common ($) {
 sub _complete_forget_external {
        my ($self, @argv) = @_;
        my $cfg = $self->_lei_cfg;
-       my ($cur, $re) = _complete_url_common(\@argv);
+       my ($cur, $re) = complete_url_common(\@argv);
        # FIXME: bash completion off "http:" or "https:" when the last
        # character is a colon doesn't work properly even if we're
        # returning "//$HTTP_HOST/$PATH_INFO/", not sure why, could
@@ -262,7 +262,7 @@ sub _complete_forget_external {
 sub _complete_add_external { # for bash, this relies on "compopt -o nospace"
        my ($self, @argv) = @_;
        my $cfg = $self->_lei_cfg;
-       my ($cur, $re) = _complete_url_common(\@argv);
+       my ($cur, $re) = complete_url_common(\@argv);
        require URI;
        map {
                my $u = URI->new(substr($_, length('external.')));