summary refs log tree commit diff
path: root/color.h
diff options
context:
space:
mode:
authorRobert Estelle <robertestelle@gmail.com>2021-10-26 01:03:47 +0000
committerJunio C Hamano <gitster@pobox.com>2021-10-28 09:37:18 -0700
commitde658515ae1166577441da09fe7624769e263a3e (patch)
treebd019e9daccc7e3f6340bccd4b3788434053ca80 /color.h
parent05f1f41c9b02b916a5f03c5658bec3270ac3684d (diff)
color: allow colors to be prefixed with "reset"
"reset" was previously treated as a standalone special color name
representing `\e[m`. Now, it can apply to other color properties,
allowing exact specifications without implicit attribute inheritance.

For example, "reset green" now renders `\e[;32m`, which is interpreted
as "reset everything; then set foreground to green". This means the
background and other attributes are also reset to their defaults.

Previously, this was impossible to represent in a single color:
"reset" could be specified alone, or a color with attributes, but some
thing like clearing a background color were impossible.

There is a separate change that introduces the "default" color name to
assist with that, but even then, the above could only to be represented
by explicitly disabling each of the attributes:
  green default no-bold no-dim no-italic no-ul no-blink no-reverse no-strike

Signed-off-by: Robert Estelle <robertestelle@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'color.h')
-rw-r--r--color.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/color.h b/color.h
index 27e817016b..cfc8f841b2 100644
--- a/color.h
+++ b/color.h
@@ -6,6 +6,7 @@ struct strbuf;
 /*
  * The maximum length of ANSI color sequence we would generate:
  * - leading ESC '['            2
+ * - reset ';' .................1
  * - attr + ';'                 2 * num_attr (e.g. "1;")
  * - no-attr + ';'              3 * num_attr (e.g. "22;")
  * - fg color + ';'             17 (e.g. "38;2;255;255;255;")