color: support "italic" attribute
authorJeff King <peff@peff.net>
Thu, 23 Jun 2016 17:39:07 +0000 (13:39 -0400)
committerJunio C Hamano <gitster@pobox.com>
Thu, 23 Jun 2016 18:32:51 +0000 (11:32 -0700)
We already support bold, underline, and similar attributes.
Let's add italic to the mix. According to the Wikipedia
page on ANSI colors, this attribute is "not widely
supported", but it does seem to work on my xterm.

We don't have to bump the maximum color size because we were
already over-allocating it (but we do adjust the comment
appropriately).

Requested-by: Simon Courtois <scourtois@cubyx.fr>
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/config.txt
color.c
color.h
t/t4026-color.sh
index 93ecd728ab62b6bf988e52c1c7e7f71f867158e8..cea3835c8f91a023778bc1bf0119580e86a9b2ce 100644 (file)
@@ -160,10 +160,11 @@ Colors may also be given as numbers between 0 and 255; these use ANSI
 your terminal supports it, you may also specify 24-bit RGB values as
 hex, like `#ff0ab3`.
 +
-The accepted attributes are `bold`, `dim`, `ul`, `blink`, and `reverse`.
-The position of any attributes with respect to the colors (before, after,
-or in between), doesn't matter. Specific attributes may be turned off
-by prefixing them with `no` or `no-` (e.g., `noreverse`, `no-ul`, etc).
+The accepted attributes are `bold`, `dim`, `ul`, `blink`, `reverse`, and
+`italic`.  The position of any attributes with respect to the colors
+(before, after, or in between), doesn't matter. Specific attributes may
+be turned off by prefixing them with `no` or `no-` (e.g., `noreverse`,
+`no-ul`, etc).
 +
 For git's pre-defined color slots, the attributes are meant to be reset
 at the beginning of each item in the colored output. So setting
diff --git a/color.c b/color.c
index a22d83584211c0c5d2f57b5ffe48b896eabbf904..b6933a16fe43a6110d04cceb358409a910c5e193 100644 (file)
--- a/color.c
+++ b/color.c
@@ -133,6 +133,7 @@ static int parse_attr(const char *name, size_t len)
 #define ATTR(x, val, neg) { (x), sizeof(x)-1, (val), (neg) }
                ATTR("bold",      1, 22),
                ATTR("dim",       2, 22),
+               ATTR("italic",    3, 23),
                ATTR("ul",        4, 24),
                ATTR("blink",     5, 25),
                ATTR("reverse",   7, 27)
diff --git a/color.h b/color.h
index 2d0507ff7e0f49586a0c42805bf0854378b41e92..e6f82cc3eb68ad1197d780ec6262e6c454bc7b62 100644 (file)
--- a/color.h
+++ b/color.h
@@ -16,7 +16,8 @@ struct strbuf;
  *
  * The space for attributes is also slightly overallocated, as
  * the negation for some attributes is the same (e.g., nobold and nodim).
- * We also allocate space for 6 attributes (even though we have only 5).
+ *
+ * We allocate space for 6 attributes.
  */
 #define COLOR_MAXLEN 70
 
index 2065752ff9e8f278d83ff651a04a75f5c6a992b6..13690f7c316635d9bb9da515dadae69baeefa83d 100755 (executable)
@@ -60,8 +60,9 @@ test_expect_success 'long color specification' '
 
 test_expect_success 'absurdly long color specification' '
        color \
-         "#ffffff #ffffff bold nobold dim nodim ul noul blink noblink reverse noreverse" \
-         "[1;2;4;5;7;22;24;25;27;38;2;255;255;255;48;2;255;255;255m"
+         "#ffffff #ffffff bold nobold dim nodim italic noitalic
+          ul noul blink noblink reverse noreverse" \
+         "[1;2;3;4;5;7;22;23;24;25;27;38;2;255;255;255;48;2;255;255;255m"
 '
 
 test_expect_success '0-7 are aliases for basic ANSI color names' '