diff options
author | Junio C Hamano <gitster@pobox.com> | 2023-08-14 13:26:41 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2023-08-14 13:26:41 -0700 |
commit | fc71d024adbb000e692cbd06cb1a3195514ec771 (patch) | |
tree | b84fd3adbf630588b8bc8aa00a349753ab111ee0 /git-send-email.perl | |
parent | 6df312ad31e6b40e93ea2b1b6b1dc452db7cc0a1 (diff) | |
parent | c016726c2deb84bcc6a7418efad92ef0562a8af3 (diff) |
Merge branch 'jk/send-email-with-new-readline'
Adjust to newer Term::ReadLine to prevent it from breaking
the interactive prompt code in send-email.
* jk/send-email-with-new-readline:
send-email: avoid creating more than one Term::ReadLine object
send-email: drop FakeTerm hack
Diffstat (limited to 'git-send-email.perl')
-rwxr-xr-x | git-send-email.perl | 32 |
1 files changed, 11 insertions, 21 deletions
diff --git a/git-send-email.perl b/git-send-email.perl index affbb88509..897cea6564 100755 --- a/git-send-email.perl +++ b/git-send-email.perl @@ -26,18 +26,6 @@ use Git::I18N; Getopt::Long::Configure qw/ pass_through /; -package FakeTerm; -sub new { - my ($class, $reason) = @_; - return bless \$reason, shift; -} -sub readline { - my $self = shift; - die "Cannot use readline on FakeTerm: $$self"; -} -package main; - - sub usage { print <<EOT; git send-email' [<options>] <file|directory> @@ -971,17 +959,19 @@ EOT3 do_edit(@files); } -sub term { - my $term = eval { +{ + # Only instantiate one $term per program run, since some + # Term::ReadLine providers refuse to create a second instance. + my $term; + sub term { require Term::ReadLine; - $ENV{"GIT_SEND_EMAIL_NOTTY"} - ? Term::ReadLine->new('git-send-email', \*STDIN, \*STDOUT) - : Term::ReadLine->new('git-send-email'); - }; - if ($@) { - $term = FakeTerm->new("$@: going non-interactive"); + if (!defined $term) { + $term = $ENV{"GIT_SEND_EMAIL_NOTTY"} + ? Term::ReadLine->new('git-send-email', \*STDIN, \*STDOUT) + : Term::ReadLine->new('git-send-email'); + } + return $term; } - return $term; } sub ask { |