Colors are specified in color.interactive.{prompt,header,help}.
They are specified as git color strings as described in the
documentation, then parsed into perl color strings (slightly
different). Ugly but visible defaults are still used.
Signed-off-by: Dan Zwell <dzwell@zwell.net>
---
Note: the code to parse git-style color strings to perl-style color
strings should eventually be added to Git.pm so that other (perl)
parts of git can be configured to read colors from .gitconfig in
a nicer way. A git-style string is "ul red black", while perl
likes strings like "underline red on_black".
Documentation/config.txt | 7 ++++
git-add--interactive.perl | 76
++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 79
insertions(+), 4 deletions(-)
diff --git a/Documentation/config.txt b/Documentation/config.txt
index c795a35..75a976a 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -387,6 +387,13 @@ color.interactive::
`auto`, use colors only when the output is to the
terminal. Defaults to false.
+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
+ programs. The values of these variables may be specified as
+ in color.branch.<slot>.
+
color.pager::
A boolean to enable/disable colored output when the pager is in
use (default is true).
diff --git a/git-add--interactive.perl b/git-add--interactive.perl
index c66ed4d..d85ec92 100755
--- a/git-add--interactive.perl
+++ b/git-add--interactive.perl
@@ -6,10 +6,78 @@ my ($use_color, $prompt_color, $header_color, $help_color);
my $color_config = qx(git config --get color.interactive);
if ($color_config=~/true|always/ || -t STDOUT && $color_config=~/auto/) {
$use_color = "true";
- # Sane (visible) defaults:
- $prompt_color = "blue bold";
- $header_color = "bold";
- $help_color = "red bold";
+ # Grab the 3 main colors in git color string format:
+ my @git_prompt_color =
+ split(/\s+/, qx(git config --get color.interactive.prompt));
+ my @git_header_color =
+ split(/\s+/, qx(git config --get color.interactive.header));
+ my @git_help_color =
+ split(/\s+/, qx(git config --get color.interactive.help));
+
+ # Sane (visible) defaults:
+ if (! @git_prompt_color) {
+ @git_prompt_color = ("blue", "bold");
+ }
+ if (! @git_header_color) {
+ @git_header_color = ("bold");
+ }
+ if (! @git_help_color) {
+ @git_help_color = ("red", "bold");
+ }
+
+ # Parse the git colors into perl colors:
+ my %attrib_mappings = (
+ "bold" => "bold",
+ "ul" => "underline",
+ "blink" => "blink",
+ # not supported:
+ #"dim" => "",
+ "reverse" => "reverse"
+ );
+
+ my @tmp_perl_colors;
+ my $color_list;
+ # Loop over the array of (arrays of) git-style colors
+ foreach $color_list ([@git_prompt_color], [@git_header_color],
+ [@git_help_color]) {
+ my $fg_done;
+ my @perl_attribs;
+ my $word;
+ foreach $word (@{$color_list}) {
+ if ($word =~ /normal/) {
+ $fg_done = "true";
+ }
+ elsif ($word =~ /black|red|green|yellow/ ||
+ $word =~ /blue|magenta|cyan|white/) {
+ # is a color.
+ if ($fg_done) {
+ # this is the background
+ push @perl_attribs, "on_" . $word;
+ }
+ else {
+ # this is foreground
+ $fg_done = "true";
+ push @perl_attribs, $word;
+ }
+ }
+ else {
+ # this is an attribute, not a color.
+ if ($attrib_mappings{$word}) {
+ push(@perl_attribs,
+ $attrib_mappings{$word});
+ }
+ }
+ }
+ if (@perl_attribs) {
+ push @tmp_perl_colors, join(" ", @perl_attribs);
+ }
+ else {
+ #@perl_attribs is empty, need a placeholder
+ push @tmp_perl_colors, "reset";
+ }
+ }
+ ($prompt_color, $header_color, $help_color) =
+ @tmp_perl_colors;
require Term::ANSIColor;
}
--
1.5.3.4.207.gc0ee
-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html| Greg KH | [GIT PATCH] driver core patches against 2.6.24 |
| Alan Cox | Re: Dual-Licensing Linux Kernel with GPL V2 and GPL V3 |
| Bart Van Assche | Integration of SCST in the mainstream Linux kernel |
| Jan Engelhardt | intel iommu (Re: -mm merge plans for 2.6.23) |
git: | |
| Gerrit Renker | [PATCH 27/37] dccp: Integration of dynamic feature activation - part 2 (server side) |
| David Miller | Re: [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock(). |
| David Miller | Re: [GIT]: Networking |
| Evgeniy Polyakov | Re: [BUG] New Kernel Bugs |
