From: Junio C Hamano Date: Wed, 24 Mar 2010 23:24:13 +0000 (-0700) Subject: Merge branch 'jc/color-attrs' into maint X-Git-Tag: v1.7.0.4~16 X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=0476228de500049804ae599f557658c3f9042ad0;p=git.git Merge branch 'jc/color-attrs' into maint * jc/color-attrs: color: allow multiple attributes --- 0476228de500049804ae599f557658c3f9042ad0 diff --cc color.h index 3cb4b7fc8,e2988f4e9..bcb28cf10 --- a/color.h +++ b/color.h @@@ -1,25 -1,21 +1,37 @@@ #ifndef COLOR_H #define COLOR_H - /* "\033[1;38;5;2xx;48;5;2xxm\0" is 23 bytes */ - #define COLOR_MAXLEN 24 + /* 2 + (2 * num_attrs) + 8 + 1 + 8 + 'm' + NUL */ + /* "\033[1;2;4;5;7;38;5;2xx;48;5;2xxm\0" */ + /* + * The maximum length of ANSI color sequence we would generate: + * - leading ESC '[' 2 + * - attr + ';' 2 * 8 (e.g. "1;") + * - fg color + ';' 9 (e.g. "38;5;2xx;") + * - fg color + ';' 9 (e.g. "48;5;2xx;") + * - terminating 'm' NUL 2 + * + * The above overcounts attr (we only use 5 not 8) and one semicolon + * but it is close enough. + */ + #define COLOR_MAXLEN 40 +/* + * IMPORTANT: Due to the way these color codes are emulated on Windows, + * write them only using printf(), fprintf(), and fputs(). In particular, + * do not use puts() or write(). + */ +#define GIT_COLOR_NORMAL "" +#define GIT_COLOR_RESET "\033[m" +#define GIT_COLOR_BOLD "\033[1m" +#define GIT_COLOR_RED "\033[31m" +#define GIT_COLOR_GREEN "\033[32m" +#define GIT_COLOR_YELLOW "\033[33m" +#define GIT_COLOR_BLUE "\033[34m" +#define GIT_COLOR_MAGENTA "\033[35m" +#define GIT_COLOR_CYAN "\033[36m" +#define GIT_COLOR_BG_RED "\033[41m" + /* * This variable stores the value of color.ui */