bash completion: complete variable names for "git config" with options
[gitweb.git] / git-send-email.perl
index d790660bcf7bdc68a8edee6a2826447da931a9cc..cccbf4517aa46d4d217a1ce25105f7c413301d2d 100755 (executable)
@@ -418,6 +418,14 @@ sub split_addrs {
                        $x =~ /^(\S+)$f\t\(?([^\t]+?)\)?(:?$f){0,2}$/ or next;
                        $aliases{$1} = [ split_addrs($2) ];
                }},
+       elm => sub  { my $fh = shift;
+                     while (<$fh>) {
+                         if (/^(\S+)\s+=\s+[^=]+=\s(\S+)/) {
+                             my ($alias, $addr) = ($1, $2);
+                              $aliases{$alias} = [ split_addrs($addr) ];
+                         }
+                     } },
+
        gnus => sub { my $fh = shift; while (<$fh>) {
                if (/\(define-mail-alias\s+"(\S+?)"\s+"(\S+?)"\)/) {
                        $aliases{$1} = [ $2 ];
@@ -608,7 +616,7 @@ ($)
 
 sub ask {
        my ($prompt, %arg) = @_;
-       my $valid_re = $arg{valid_re} || ""; # "" matches anything
+       my $valid_re = $arg{valid_re};
        my $default = $arg{default};
        my $resp;
        my $i = 0;
@@ -624,7 +632,7 @@ sub ask {
                if ($resp eq '' and defined $default) {
                        return $default;
                }
-               if ($resp =~ /$valid_re/) {
+               if (!defined $valid_re or $resp =~ /$valid_re/) {
                        return $resp;
                }
        }
@@ -687,7 +695,7 @@ sub expand_aliases {
 
 # Variables we set as part of the loop over files
 our ($message_id, %mail, $subject, $reply_to, $references, $message,
-       $needs_confirm, $message_num);
+       $needs_confirm, $message_num, $ask_default);
 
 sub extract_valid_address {
        my $address = shift;
@@ -776,12 +784,13 @@ sub sanitize_address
        }
 
        # if recipient_name is already quoted, do nothing
-       if ($recipient_name =~ /^(".*"|=\?utf-8\?q\?.*\?=)$/) {
+       if ($recipient_name =~ /^("[[:ascii:]]*"|=\?utf-8\?q\?.*\?=)$/) {
                return $recipient;
        }
 
        # rfc2047 is needed if a non-ascii char is included
        if ($recipient_name =~ /[^[:ascii:]]/) {
+               $recipient_name =~ s/^"(.*)"$/$1/;
                $recipient_name = quote_rfc2047($recipient_name);
        }
 
@@ -845,7 +854,6 @@ sub send_message
 
        if ($needs_confirm && !$dry_run) {
                print "\n$header\n";
-               my $ask_default;
                if ($needs_confirm eq "inform") {
                        $confirm_unconfigured = 0; # squelch this message for the rest of this run
                        $ask_default = "y"; # assume yes on EOF since user hasn't explicitly asked for confirmation