add -p: print errors in separate color
authorThomas Rast <trast@student.ethz.ch>
Thu, 5 Feb 2009 08:28:27 +0000 (09:28 +0100)
committerJunio C Hamano <gitster@pobox.com>
Fri, 6 Feb 2009 01:44:39 +0000 (17:44 -0800)
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>
Documentation/config.txt
git-add--interactive.perl

index eeb2b0d353583e9406afc23fe053f56f6244aa73..1806a606100095fa1238076efed57ba7e79142aa 100644 (file)
@@ -556,8 +556,8 @@ color.interactive::
 
 color.interactive.<slot>::
        Use customized color for 'git-add --interactive'
-       output. `<slot>` may be `prompt`, `header`, or `help`, for
-       three distinct types of normal output from interactive
+       output. `<slot>` may be `prompt`, `header`, `help` or `error`, for
+       four distinct types of normal output from interactive
        programs.  The values of these variables may be specified as
        in color.branch.<slot>.
 
index 1813f9e8e388397fa314717c2170861c1dc5e6a0..be8ca8ebb29511d710e86eb70b3293774a1e8c59 100755 (executable)
@@ -12,6 +12,12 @@ my ($prompt_color, $header_color, $help_color) =
                $repo->get_color('color.interactive.header', '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 ($fraginfo_color) =
@@ -333,6 +339,10 @@ sub highlight_prefix {
        return "$prompt_color$prefix$normal_color$remainder";
 }
 
+sub error_msg {
+       print STDERR colored $error_color, @_;
+}
+
 sub list_and_choose {
        my ($opts, @stuff) = @_;
        my (@chosen, @return);
@@ -428,12 +438,12 @@ sub list_and_choose {
                        else {
                                $bottom = $top = find_unique($choice, @stuff);
                                if (!defined $bottom) {
-                                       print "Huh ($choice)?\n";
+                                       error_msg "Huh ($choice)?\n";
                                        next TOPLOOP;
                                }
                        }
                        if ($opts->{SINGLETON} && $bottom != $top) {
-                               print "Huh ($choice)?\n";
+                               error_msg "Huh ($choice)?\n";
                                next TOPLOOP;
                        }
                        for ($i = $bottom-1; $i <= $top-1; $i++) {
@@ -1029,11 +1039,11 @@ sub patch_update_file {
                                        chomp $response;
                                }
                                if ($response !~ /^\s*\d+\s*$/) {
-                                       print STDERR "Invalid number: '$response'\n";
+                                       error_msg "Invalid number: '$response'\n";
                                } elsif (0 < $response && $response <= $num) {
                                        $ix = $response - 1;
                                } else {
-                                       print STDERR "Sorry, only $num hunks available.\n";
+                                       error_msg "Sorry, only $num hunks available.\n";
                                }
                                next;
                        }
@@ -1062,7 +1072,7 @@ sub patch_update_file {
                                if ($@) {
                                        my ($err,$exp) = ($@, $1);
                                        $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;
                                }
                                my $iy = $ix;
@@ -1072,7 +1082,7 @@ sub patch_update_file {
                                        $iy++;
                                        $iy = 0 if ($iy >= $num);
                                        if ($ix == $iy) {
-                                               print STDERR "No hunk matches the given pattern\n";
+                                               error_msg "No hunk matches the given pattern\n";
                                                last;
                                        }
                                }
@@ -1084,7 +1094,7 @@ sub patch_update_file {
                                        $ix--;
                                }
                                else {
-                                       print STDERR "No previous hunk\n";
+                                       error_msg "No previous hunk\n";
                                }
                                next;
                        }
@@ -1093,7 +1103,7 @@ sub patch_update_file {
                                        $ix++;
                                }
                                else {
-                                       print STDERR "No next hunk\n";
+                                       error_msg "No next hunk\n";
                                }
                                next;
                        }
@@ -1106,13 +1116,13 @@ sub patch_update_file {
                                        }
                                }
                                else {
-                                       print STDERR "No previous hunk\n";
+                                       error_msg "No previous hunk\n";
                                }
                                next;
                        }
                        elsif ($line =~ /^j/) {
                                if ($other !~ /j/) {
-                                       print STDERR "No next hunk\n";
+                                       error_msg "No next hunk\n";
                                        next;
                                }
                        }