about summary refs log tree commit homepage
path: root/lib/PublicInbox/LeiExternal.pm
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2021-04-18 08:40:14 +0000
committerEric Wong <e@80x24.org>2021-04-18 19:04:42 -0400
commit2018db2a23ab1d949c757c264534f39dba338ccb (patch)
tree86a06bda17018b97d760d579aa7214f68e1ab42e /lib/PublicInbox/LeiExternal.pm
parent3b7b5442c4321ae802867cbda9bd33235ab2a5a3 (diff)
downloadpublic-inbox-2018db2a23ab1d949c757c264534f39dba338ccb.tar.gz
Going forward, we'll probably support JSON for all the "ls-*"
subcommands.  This also provides the basis for "lei up" shell
completion.
Diffstat (limited to 'lib/PublicInbox/LeiExternal.pm')
-rw-r--r--lib/PublicInbox/LeiExternal.pm11
1 files changed, 6 insertions, 5 deletions
diff --git a/lib/PublicInbox/LeiExternal.pm b/lib/PublicInbox/LeiExternal.pm
index 5e8dc71a..b0ebe947 100644
--- a/lib/PublicInbox/LeiExternal.pm
+++ b/lib/PublicInbox/LeiExternal.pm
@@ -215,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
@@ -228,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 :)
@@ -245,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
@@ -261,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.')));