git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 2/2] color: support "italic" attribute

From
Jeff King <peff@peff.net>
Date
Jun 23, 2016, 13:10 UTC
Message-ID
<20160623131028.GB12653@sigill.intra.peff.net>
In-Reply-To
<20160623130828.GA25209@sigill.intra.peff.net>

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>
---
 Documentation/config.txt | 2 +-
 color.c                  | 8 ++++----
 color.h                  | 3 ++-
 t/t4026-color.sh         | 4 ++--
 4 files changed, 9 insertions(+), 8 deletions(-)
diff --git a/Documentation/config.txt b/Documentation/config.txt
index 58673cf..4b97d8d 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -154,7 +154,7 @@ color::
        colors (at most two) and attributes (at most one), separated
        by spaces.  The colors accepted are `normal`, `black`,
        `red`, `green`, `yellow`, `blue`, `magenta`, `cyan` and
-       `white`; the attributes are `bold`, `dim`, `ul`, `blink` and
+       `white`; the attributes are `bold`, `dim`, `italic`, `ul`, `blink` and
        `reverse`.  The first color given is the foreground; the
        second is the background.  The position of the attribute, if
        any, doesn't matter. Attributes may be turned off specifically
diff --git a/color.c b/color.c
index 8f85153..698682c 100644
--- a/color.c
+++ b/color.c
@@ -125,11 +125,11 @@ static int parse_color(struct color *out, const char *name, int len)
 
 static int parse_attr(const char *name, int len)
 {
-	static const int attr_values[] = { 1, 2, 4, 5, 7,
-					   22, 22, 24, 25, 27 };
+	static const int attr_values[] = { 1, 2, 3, 4, 5, 7,
+					   22, 22, 23, 24, 25, 27 };
 	static const char * const attr_names[] = {
-		"bold", "dim", "ul", "blink", "reverse",
-		"nobold", "nodim", "noul", "noblink", "noreverse"
+		"bold", "dim", "italic", "ul", "blink", "reverse",
+		"nobold", "nodim", "noitalic", "noul", "noblink", "noreverse"
 	};
 	int i;
 	for (i = 0; i < ARRAY_SIZE(attr_names); i++) {
diff --git a/color.h b/color.h
index e24fa0b..3af01a6 100644
--- 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
 
diff --git a/t/t4026-color.sh b/t/t4026-color.sh
index 2b32c4f..05625c5 100755
--- a/t/t4026-color.sh
+++ b/t/t4026-color.sh
@@ -56,8 +56,8 @@ 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' '
-- 
2.9.0.209.g845fbc1
Previous: Jeff KingNext: Simon Courtois
Message 4 of 24 in “Italics formatting”
  1. Simon CourtoisJun 23, 2016
  2. 0/2 more ANSI attributesJeff King, Jun 23, 2016
  3. 1/2 color: fix max-size commentJeff King, Jun 23, 2016
  4. 2/2 color: support "italic" attributeJeff King, Jun 23, 2016
  5. Simon CourtoisJun 23, 2016
  6. Junio C HamanoJun 23, 2016
  7. Jeff KingJun 23, 2016
  8. 0/7 more ANSI attributesJeff King, Jun 23, 2016
  9. 1/7 color: fix max-size commentJeff King, Jun 23, 2016
  10. 2/7 doc: refactor description of color formatJeff King, Jun 23, 2016
  11. 3/7 add skip_prefix_mem helperJeff King, Jun 23, 2016
  12. 4/7 color: refactor parse_attrJeff King, Jun 23, 2016
  13. 5/7 color: allow "no-" for negating attributesJeff King, Jun 23, 2016
  14. 6/7 color: support "italic" attributeJeff King, Jun 23, 2016
  15. Junio C HamanoJun 23, 2016
  16. Jeff KingJun 23, 2016
  17. 7/7 color: support strike-through attributeJeff King, Jun 23, 2016
  18. Junio C HamanoJun 23, 2016
  19. Jeff KingJun 23, 2016
  20. Junio C HamanoJun 23, 2016
  21. Junio C HamanoJun 23, 2016
  22. Jeff KingJun 23, 2016
  23. Junio C HamanoJun 23, 2016
  24. Junio C HamanoJun 23, 2016

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.