diff mbox series

[3/3] color.c: Alias RGB colors 8-15 to aixterm colors

Message ID 20200110150547.221314-3-shawarmakarma@gmail.com (mailing list archive)
State New, archived
Headers show
Series [1/3] color.c: Refactor color_output to use enums | expand

Commit Message

Eyal Soha Jan. 10, 2020, 3:05 p.m. UTC
Signed-off-by: Eyal Soha <shawarmakarma@gmail.com>
---
 color.c          | 7 ++++++-
 t/t4026-color.sh | 4 ++++
 2 files changed, 10 insertions(+), 1 deletion(-)

Comments

Jeff King Jan. 15, 2020, 10:45 p.m. UTC | #1
On Fri, Jan 10, 2020 at 10:05:47AM -0500, Eyal Soha wrote:

> Signed-off-by: Eyal Soha <shawarmakarma@gmail.com>

Some rationale might be helpful for people who find this commit later
(especially if it ends up being a regression for people with 256-color
support but not 16-color). Maybe:

  This results in shorter output, and is _probably_ more portable. There
  is at least one environment (GitHub Actions) which supports 16-color
  mode but not 256-color mode. It's possible there are environments
  which go the other way, but it seems unlikely.

>  color.c          | 7 ++++++-
>  t/t4026-color.sh | 4 ++++

The code itself looks good. We don't currently document the magic of
0-7, so we don't need to change the documentation there (though perhaps
we ought to).

-Peff
diff mbox series

Patch

diff --git a/color.c b/color.c
index 4dbf12eff8..7f9f929fb6 100644
--- a/color.c
+++ b/color.c
@@ -132,11 +132,16 @@  static int parse_color(struct color *out, const char *name, int len)
 		else if (val < 0) {
 			out->type = COLOR_NORMAL;
 			return 0;
-		/* Rewrite low numbers as more-portable standard colors. */
+		/* Rewrite 0-7 as more-portable standard colors. */
 		} else if (val < 8) {
 			out->type = COLOR_ANSI;
 			out->value = val + COLOR_FOREGROUND_ANSI;
 			return 0;
+		/* Rewrite 8-15 as more-portable aixterm colors. */
+		} else if (val < 16) {
+			out->type = COLOR_ANSI;
+			out->value = val - 8 + COLOR_FOREGROUND_BRIGHT_ANSI;
+			return 0;
 		} else if (val < 256) {
 			out->type = COLOR_256;
 			out->value = val;
diff --git a/t/t4026-color.sh b/t/t4026-color.sh
index 78c69de90a..c0b642c1ab 100755
--- a/t/t4026-color.sh
+++ b/t/t4026-color.sh
@@ -82,6 +82,10 @@  test_expect_success '0-7 are aliases for basic ANSI color names' '
 	color "0 7" "[30;47m"
 '
 
+test_expect_success '8-15 are aliases for aixterm color names' '
+	color "12 13" "[94;105m"
+'
+
 test_expect_success '256 colors' '
 	color "254 bold 255" "[1;38;5;254;48;5;255m"
 '