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:
35
perl/Git.pm
35
perl/Git.pm
@ -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 )
|
||||
|
Reference in New Issue
Block a user