diff options
author | Junio C Hamano <gitster@pobox.com> | 2012-12-17 17:56:49 -0500 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2012-12-17 17:30:04 -0800 |
commit | 30825178fb72e3664bd1bda7c02c62e300e2e5ce (patch) | |
tree | 299ae9907e26fca9f2090b17ca387ff8b4aba9fa /pretty.c | |
parent | 2581ad5e85f6443b0d2cf6898793662aec47ef10 (diff) | |
download | git-30825178fb72e3664bd1bda7c02c62e300e2e5ce.tar.gz |
log --format: teach %C(auto,black) to respect color config
Traditionally, %C(color attr) always emitted the ANSI color
sequence; it was up to the scripts that wanted to conditionally
color their output to omit %C(...) specifier when they do not want
colors.
Optionally allow "auto," to be prefixed to the color, so that the
output is colored iff we would color regular "log" output
(e.g., taking into account color.* and --color command line
options).
Tests and pretty_context bits by Jeff King <peff@peff.net>.
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'pretty.c')
-rw-r--r-- | pretty.c | 13 |
1 files changed, 10 insertions, 3 deletions
@@ -960,12 +960,19 @@ static size_t format_commit_one(struct strbuf *sb, const char *placeholder, switch (placeholder[0]) { case 'C': if (placeholder[1] == '(') { - const char *end = strchr(placeholder + 2, ')'); + const char *begin = placeholder + 2; + const char *end = strchr(begin, ')'); char color[COLOR_MAXLEN]; + if (!end) return 0; - color_parse_mem(placeholder + 2, - end - (placeholder + 2), + if (!memcmp(begin, "auto,", 5)) { + if (!want_color(c->pretty_ctx->color)) + return end - placeholder + 1; + begin += 5; + } + color_parse_mem(begin, + end - begin, "--pretty format", color); strbuf_addstr(sb, color); return end - placeholder + 1; |