Color support for "git-add -i"

This is mostly lifted from earlier series by Dan Zwell, but updated to
use "git config --get-color" and "git config --get-colorbool" to make it
simpler and more consistent with commands written in C.

A new configuration color.interactive variable is like color.diff and
color.status, and controls if "git-add -i" uses color.

A set of configuration variables, color.interactive.<slot>, are used to
define what color is used for the prompt, header, and help text.

For perl scripts, Git.pm provides $repo->get_color() method, which takes
the slot name and the default color, and returns the terminal escape
sequence to color the output text.  $repo->get_colorbool() method can be
used to check if color is set to be used for a given operation.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Junio C Hamano
2007-12-05 00:50:23 -08:00
parent 0f6f5a4022
commit b4c61ed6d3
3 changed files with 146 additions and 20 deletions

View File

@ -581,6 +581,41 @@ sub config_int {
};
}
=item get_colorbool ( NAME )
Finds if color should be used for NAMEd operation from the configuration,
and returns boolean (true for "use color", false for "do not use color").
=cut
sub get_colorbool {
my ($self, $var) = @_;
my $stdout_to_tty = (-t STDOUT) ? "true" : "false";
my $use_color = $self->command_oneline('config', '--get-colorbool',
$var, $stdout_to_tty);
return ($use_color eq 'true');
}
=item get_color ( SLOT, COLOR )
Finds color for SLOT from the configuration, while defaulting to COLOR,
and returns the ANSI color escape sequence:
print $repo->get_color("color.interactive.prompt", "underline blue white");
print "some text";
print $repo->get_color("", "normal");
=cut
sub get_color {
my ($self, $slot, $default) = @_;
my $color = $self->command_oneline('config', '--get-color', $slot, $default);
if (!defined $color) {
$color = "";
}
return $color;
}
=item ident ( TYPE | IDENTSTR )
=item ident_person ( TYPE | IDENTSTR | IDENTARRAY )