color.c: alias RGB colors 8-15 to aixterm colors

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.

Signed-off-by: Eyal Soha <shawarmakarma@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Eyal Soha
2020-01-21 08:56:23 -08:00
committed by Junio C Hamano
parent 1751b09a92
commit c444f032e4
2 changed files with 10 additions and 1 deletions

View File

@@ -136,11 +136,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;