add -p: print errors in separate color

Print interaction error messages in color.interactive.error, which
defaults to the value of color.interactive.help.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Thomas Rast 2009-02-05 09:28:27 +01:00 committed by Junio C Hamano
parent ca6ac7f135
commit a301973641
2 changed files with 22 additions and 12 deletions

View File

@ -556,8 +556,8 @@ color.interactive::


color.interactive.<slot>:: color.interactive.<slot>::
Use customized color for 'git-add --interactive' Use customized color for 'git-add --interactive'
output. `<slot>` may be `prompt`, `header`, or `help`, for output. `<slot>` may be `prompt`, `header`, `help` or `error`, for
three distinct types of normal output from interactive four distinct types of normal output from interactive
programs. The values of these variables may be specified as programs. The values of these variables may be specified as
in color.branch.<slot>. in color.branch.<slot>.



View File

@ -12,6 +12,12 @@ my ($prompt_color, $header_color, $help_color) =
$repo->get_color('color.interactive.header', 'bold'), $repo->get_color('color.interactive.header', 'bold'),
$repo->get_color('color.interactive.help', 'red bold'), $repo->get_color('color.interactive.help', 'red bold'),
) : (); ) : ();
my $error_color = ();
if ($menu_use_color) {
my $help_color_spec = $repo->config('color.interactive.help');
$error_color = $repo->get_color('color.interactive.error',
$help_color_spec);
}


my $diff_use_color = $repo->get_colorbool('color.diff'); my $diff_use_color = $repo->get_colorbool('color.diff');
my ($fraginfo_color) = my ($fraginfo_color) =
@ -333,6 +339,10 @@ sub highlight_prefix {
return "$prompt_color$prefix$normal_color$remainder"; return "$prompt_color$prefix$normal_color$remainder";
} }


sub error_msg {
print STDERR colored $error_color, @_;
}

sub list_and_choose { sub list_and_choose {
my ($opts, @stuff) = @_; my ($opts, @stuff) = @_;
my (@chosen, @return); my (@chosen, @return);
@ -428,12 +438,12 @@ sub list_and_choose {
else { else {
$bottom = $top = find_unique($choice, @stuff); $bottom = $top = find_unique($choice, @stuff);
if (!defined $bottom) { if (!defined $bottom) {
print "Huh ($choice)?\n"; error_msg "Huh ($choice)?\n";
next TOPLOOP; next TOPLOOP;
} }
} }
if ($opts->{SINGLETON} && $bottom != $top) { if ($opts->{SINGLETON} && $bottom != $top) {
print "Huh ($choice)?\n"; error_msg "Huh ($choice)?\n";
next TOPLOOP; next TOPLOOP;
} }
for ($i = $bottom-1; $i <= $top-1; $i++) { for ($i = $bottom-1; $i <= $top-1; $i++) {
@ -1029,11 +1039,11 @@ sub patch_update_file {
chomp $response; chomp $response;
} }
if ($response !~ /^\s*\d+\s*$/) { if ($response !~ /^\s*\d+\s*$/) {
print STDERR "Invalid number: '$response'\n"; error_msg "Invalid number: '$response'\n";
} elsif (0 < $response && $response <= $num) { } elsif (0 < $response && $response <= $num) {
$ix = $response - 1; $ix = $response - 1;
} else { } else {
print STDERR "Sorry, only $num hunks available.\n"; error_msg "Sorry, only $num hunks available.\n";
} }
next; next;
} }
@ -1062,7 +1072,7 @@ sub patch_update_file {
if ($@) { if ($@) {
my ($err,$exp) = ($@, $1); my ($err,$exp) = ($@, $1);
$err =~ s/ at .*git-add--interactive line \d+, <STDIN> line \d+.*$//; $err =~ s/ at .*git-add--interactive line \d+, <STDIN> line \d+.*$//;
print STDERR "Malformed search regexp $exp: $err\n"; error_msg "Malformed search regexp $exp: $err\n";
next; next;
} }
my $iy = $ix; my $iy = $ix;
@ -1072,7 +1082,7 @@ sub patch_update_file {
$iy++; $iy++;
$iy = 0 if ($iy >= $num); $iy = 0 if ($iy >= $num);
if ($ix == $iy) { if ($ix == $iy) {
print STDERR "No hunk matches the given pattern\n"; error_msg "No hunk matches the given pattern\n";
last; last;
} }
} }
@ -1084,7 +1094,7 @@ sub patch_update_file {
$ix--; $ix--;
} }
else { else {
print STDERR "No previous hunk\n"; error_msg "No previous hunk\n";
} }
next; next;
} }
@ -1093,7 +1103,7 @@ sub patch_update_file {
$ix++; $ix++;
} }
else { else {
print STDERR "No next hunk\n"; error_msg "No next hunk\n";
} }
next; next;
} }
@ -1106,13 +1116,13 @@ sub patch_update_file {
} }
} }
else { else {
print STDERR "No previous hunk\n"; error_msg "No previous hunk\n";
} }
next; next;
} }
elsif ($line =~ /^j/) { elsif ($line =~ /^j/) {
if ($other !~ /j/) { if ($other !~ /j/) {
print STDERR "No next hunk\n"; error_msg "No next hunk\n";
next; next;
} }
} }