From: Dan Zwell <dzwell@zwell.net>
To: "Shawn O. Pearce" <spearce@spearce.org>
Cc: Jeff King <peff@peff.net>, Wincent Colaiuta <win@wincent.com>,
Git Mailing List <git@vger.kernel.org>,
Jonathan del Strother <maillist@steelskies.com>,
Johannes Schindelin <Johannes.Schindelin@gmx.de>,
Frank Lichtenheld <frank@lichtenheld.de>
Subject: [PATCH 2/2] Let git-add--interactive read colors from git-config
Date: Mon, 22 Oct 2007 16:40:48 -0500 [thread overview]
Message-ID: <20071022164048.71a3dceb@danzwell.com> (raw)
In-Reply-To: <20071017015152.GN13801@spearce.org>
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
next prev parent reply other threads:[~2007-10-22 22:57 UTC|newest]
Thread overview: 86+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-10-13 4:13 [PATCH] Color support added to git-add--interactive Dan Zwell
2007-10-13 8:12 ` Jeff King
2007-10-13 12:49 ` Frank Lichtenheld
2007-10-13 12:25 ` Johannes Schindelin
2007-10-13 14:45 ` Wincent Colaiuta
2007-10-13 16:38 ` Jean-Luc Herren
2007-10-13 17:14 ` Wincent Colaiuta
2007-10-13 18:31 ` Andreas Ericsson
2007-10-13 16:38 ` Johannes Schindelin
2007-10-13 17:27 ` Jeff King
2007-10-13 17:51 ` Jeff King
2007-10-13 20:03 ` Dan Zwell
2007-10-13 20:36 ` Wincent Colaiuta
2007-10-13 21:50 ` Dan Z
2007-10-13 22:23 ` Jean-Luc Herren
2007-10-15 3:43 ` Jeff King
2007-10-17 0:47 ` revised: " Dan Zwell
2007-10-17 1:51 ` Shawn O. Pearce
2007-10-17 7:57 ` Dan Zwell
2007-10-17 8:11 ` Shawn O. Pearce
2007-10-22 21:32 ` [PATCH 1/2] Added basic color support to git add --interactive Dan Zwell
2007-10-23 2:11 ` [PATCH] resend of git-add--interactive color patch against spearce/pu Dan Zwell
2007-10-23 2:19 ` [PATCH] Let git-add--interactive read "git colors" from git-config Dan Zwell
2007-10-23 4:29 ` Jeff King
2007-10-23 4:40 ` Shawn O. Pearce
2007-10-23 4:03 ` [PATCH 1/2] Added basic color support to git add --interactive Jeff King
2007-10-23 6:28 ` Wincent Colaiuta
2007-10-23 6:41 ` Jeff King
2007-10-23 7:44 ` Wincent Colaiuta
2007-10-22 21:40 ` Dan Zwell [this message]
2007-10-23 4:27 ` [PATCH 2/2] Let git-add--interactive read colors from git-config Jeff King
2007-10-23 8:52 ` Dan Zwell
2007-11-03 3:41 ` [PATCH 1/2] Added basic color support to git add --interactive Dan Zwell
2007-11-04 4:57 ` Jeff King
2007-11-04 5:36 ` Junio C Hamano
2007-11-04 5:43 ` Jeff King
2007-11-11 0:01 ` [PATCH 0/3] Adding colors to git-add--interactive Dan Zwell
2007-11-11 7:54 ` Jeff King
2007-11-11 8:23 ` Junio C Hamano
2007-11-11 8:39 ` Dan Zwell
2007-11-22 10:54 ` [PATCH 0/5] Colors for git-add--interactive Dan Zwell
2007-11-22 11:57 ` Jeff King
2007-11-22 19:20 ` Junio C Hamano
2007-11-22 10:54 ` [PATCH 1/5] Added basic color support to git add --interactive Dan Zwell
2007-11-22 10:55 ` [PATCH 2/5] Don't return 'undef' in case called in a vector context Dan Zwell
2007-11-22 12:06 ` Jeff King
2007-11-22 21:17 ` Junio C Hamano
2007-11-23 4:15 ` Dan Zwell
2007-11-22 10:55 ` [PATCH 3/5] Added config_default($key, $default) to Git.pm Dan Zwell
2007-11-22 12:14 ` Jeff King
2007-11-22 10:56 ` [PATCH 4/5] Let git-add--interactive read colors from configuration Dan Zwell
2007-11-22 12:18 ` Jeff King
2007-11-22 21:28 ` Junio C Hamano
2007-11-22 22:30 ` Jeff King
2007-11-23 5:32 ` Dan Zwell
2007-11-23 9:09 ` Jeff King
2007-11-23 9:17 ` Junio C Hamano
2007-11-22 10:56 ` [PATCH 5/5] Added diff hunk coloring to git-add--interactive Dan Zwell
2007-11-22 12:25 ` Jeff King
2007-11-22 21:37 ` Junio C Hamano
2007-11-23 10:21 ` Jeff King
2007-11-22 22:35 ` Junio C Hamano
2007-11-11 0:01 ` [PATCH 1/3] Added basic color support to git add --interactive Dan Zwell
2007-11-11 0:02 ` [PATCH 2/3] Let git-add--interactive read colors from .gitconfig Dan Zwell
2007-11-11 0:03 ` [PATCH 3/3] Added diff hunk coloring to git-add--interactive Dan Zwell
2007-11-11 10:00 ` Junio C Hamano
2007-11-11 2:21 ` [PATCH 0/3] Adding colors " Dan Zwell
2007-11-11 2:23 ` Subject: [PATCH 1/3] Added basic color support to git add --interactive Dan Zwell
2007-11-11 19:56 ` Junio C Hamano
2007-11-11 2:23 ` Subject: [PATCH 2/3] Let git-add--interactive read colors from .gitconfig Dan Zwell
2007-11-11 9:53 ` Junio C Hamano
2007-11-11 10:34 ` Junio C Hamano
2007-11-13 1:39 ` Dan Zwell
2007-11-13 2:32 ` Junio C Hamano
2007-11-13 2:55 ` Dan Zwell
2007-11-13 7:26 ` Jeff King
2007-11-13 7:29 ` Junio C Hamano
2007-11-13 8:25 ` Dan Zwell
2007-11-13 9:46 ` Jakub Narebski
2007-11-03 3:41 ` [PATCH 2/2] " Dan Zwell
2007-11-03 5:06 ` *[PATCH " Junio C Hamano
2007-11-03 7:26 ` Dan Zwell
2007-11-03 18:11 ` Junio C Hamano
2007-10-15 4:12 ` [PATCH] Color support added to git-add--interactive Jeff King
2007-10-13 20:21 ` Tom Tobin
2007-10-13 20:26 ` Tom Tobin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20071022164048.71a3dceb@danzwell.com \
--to=dzwell@zwell.net \
--cc=Johannes.Schindelin@gmx.de \
--cc=frank@lichtenheld.de \
--cc=git@vger.kernel.org \
--cc=maillist@steelskies.com \
--cc=peff@peff.net \
--cc=spearce@spearce.org \
--cc=win@wincent.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.