path: root/perl
diff options
authorJunio C Hamano <>2007-12-05 08:50:23 (GMT)
committerJunio C Hamano <>2007-12-06 01:57:11 (GMT)
commitb4c61ed6d35ea00494f953a27abbc902617972ec (patch)
tree0ee424fef1c4fd361445d6de9d8d4c46ae762aad /perl
parent0f6f5a4022de5904926cd528c681468e3f635256 (diff)
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, 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 <>
Diffstat (limited to 'perl')
1 files changed, 35 insertions, 0 deletions
diff --git a/perl/ b/perl/
index 7468460..a2812ea 100644
--- a/perl/
+++ b/perl/
@@ -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").
+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");
+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 )