Merge branch 'dd/send-email-reedit'
"git send-email" can sometimes offer confirmation dialog "Send this email?" with choices 'Yes', 'No', 'Quit', and 'All'. A new action 'Edit' has been added to this dialog's choice. * dd/send-email-reedit: git-send-email: allow re-editing of messagemaint
commit
89be19d708
|
@ -1330,9 +1330,14 @@ sub file_name_is_absolute {
|
|||
return File::Spec::Functions::file_name_is_absolute($path);
|
||||
}
|
||||
|
||||
# Returns 1 if the message was sent, and 0 otherwise.
|
||||
# In actuality, the whole program dies when there
|
||||
# is an error sending a message.
|
||||
# Prepares the email, then asks the user what to do.
|
||||
#
|
||||
# If the user chooses to send the email, it's sent and 1 is returned.
|
||||
# If the user chooses not to send the email, 0 is returned.
|
||||
# If the user decides they want to make further edits, -1 is returned and the
|
||||
# caller is expected to call send_message again after the edits are performed.
|
||||
#
|
||||
# If an error occurs sending the email, this just dies.
|
||||
|
||||
sub send_message {
|
||||
my @recipients = unique_email_list(@to);
|
||||
|
@ -1404,15 +1409,17 @@ Message-Id: $message_id
|
|||
|
||||
EOF
|
||||
}
|
||||
# TRANSLATORS: Make sure to include [y] [n] [q] [a] in your
|
||||
# TRANSLATORS: Make sure to include [y] [n] [e] [q] [a] in your
|
||||
# translation. The program will only accept English input
|
||||
# at this point.
|
||||
$_ = ask(__("Send this email? ([y]es|[n]o|[q]uit|[a]ll): "),
|
||||
valid_re => qr/^(?:yes|y|no|n|quit|q|all|a)/i,
|
||||
$_ = ask(__("Send this email? ([y]es|[n]o|[e]dit|[q]uit|[a]ll): "),
|
||||
valid_re => qr/^(?:yes|y|no|n|edit|e|quit|q|all|a)/i,
|
||||
default => $ask_default);
|
||||
die __("Send this email reply required") unless defined $_;
|
||||
if (/^n/i) {
|
||||
return 0;
|
||||
} elsif (/^e/i) {
|
||||
return -1;
|
||||
} elsif (/^q/i) {
|
||||
cleanup_compose_files();
|
||||
exit(0);
|
||||
|
@ -1552,7 +1559,12 @@ $references = $initial_in_reply_to || '';
|
|||
$subject = $initial_subject;
|
||||
$message_num = 0;
|
||||
|
||||
foreach my $t (@files) {
|
||||
# Prepares the email, prompts the user, sends it out
|
||||
# Returns 0 if an edit was done and the function should be called again, or 1
|
||||
# otherwise.
|
||||
sub process_file {
|
||||
my ($t) = @_;
|
||||
|
||||
open my $fh, "<", $t or die sprintf(__("can't open file %s"), $t);
|
||||
|
||||
my $author = undef;
|
||||
|
@ -1760,6 +1772,10 @@ foreach my $t (@files) {
|
|||
}
|
||||
|
||||
my $message_was_sent = send_message();
|
||||
if ($message_was_sent == -1) {
|
||||
do_edit($t);
|
||||
return 0;
|
||||
}
|
||||
|
||||
# set up for the next message
|
||||
if ($thread && $message_was_sent &&
|
||||
|
@ -1781,6 +1797,14 @@ foreach my $t (@files) {
|
|||
undef $auth;
|
||||
sleep($relogin_delay) if defined $relogin_delay;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
foreach my $t (@files) {
|
||||
while (!process_file($t)) {
|
||||
# user edited the file
|
||||
}
|
||||
}
|
||||
|
||||
# Execute a command (e.g. $to_cmd) to get a list of email addresses
|
||||
|
|
Loading…
Reference in New Issue