@@ -34,11 +34,22 @@ pub fn detectTTYConfig(file: File) TTY.Config {
3434/// such as coloring text, etc.
3535pub const TTY = struct {
3636 pub const Color = enum {
37+ black ,
3738 red ,
3839 green ,
3940 yellow ,
41+ blue ,
42+ magenta ,
4043 cyan ,
4144 white ,
45+ bright_black ,
46+ bright_red ,
47+ bright_green ,
48+ bright_yellow ,
49+ bright_blue ,
50+ bright_magenta ,
51+ bright_cyan ,
52+ bright_white ,
4253 dim ,
4354 bold ,
4455 reset ,
@@ -59,11 +70,22 @@ pub const TTY = struct {
5970 .no_color = > return ,
6071 .escape_codes = > {
6172 const color_string = switch (color ) {
62- .red = > "\x1b [31;1m" ,
63- .green = > "\x1b [32;1m" ,
64- .yellow = > "\x1b [33;1m" ,
65- .cyan = > "\x1b [36;1m" ,
66- .white = > "\x1b [37;1m" ,
73+ .black = > "\x1b [30m" ,
74+ .red = > "\x1b [31m" ,
75+ .green = > "\x1b [32m" ,
76+ .yellow = > "\x1b [33m" ,
77+ .blue = > "\x1b [34m" ,
78+ .magenta = > "\x1b [35m" ,
79+ .cyan = > "\x1b [36m" ,
80+ .white = > "\x1b [37m" ,
81+ .bright_black = > "\x1b [90m" ,
82+ .bright_red = > "\x1b [91m" ,
83+ .bright_green = > "\x1b [92m" ,
84+ .bright_yellow = > "\x1b [93m" ,
85+ .bright_blue = > "\x1b [94m" ,
86+ .bright_magenta = > "\x1b [95m" ,
87+ .bright_cyan = > "\x1b [96m" ,
88+ .bright_white = > "\x1b [97m" ,
6789 .bold = > "\x1b [1m" ,
6890 .dim = > "\x1b [2m" ,
6991 .reset = > "\x1b [0m" ,
@@ -72,11 +94,24 @@ pub const TTY = struct {
7294 },
7395 .windows_api = > | ctx | if (native_os == .windows ) {
7496 const attributes = switch (color ) {
75- .red = > windows .FOREGROUND_RED | windows .FOREGROUND_INTENSITY ,
76- .green = > windows .FOREGROUND_GREEN | windows .FOREGROUND_INTENSITY ,
77- .yellow = > windows .FOREGROUND_RED | windows .FOREGROUND_GREEN | windows .FOREGROUND_INTENSITY ,
78- .cyan = > windows .FOREGROUND_GREEN | windows .FOREGROUND_BLUE | windows .FOREGROUND_INTENSITY ,
79- .white , .bold = > windows .FOREGROUND_RED | windows .FOREGROUND_GREEN | windows .FOREGROUND_BLUE | windows .FOREGROUND_INTENSITY ,
97+ .black = > 0 ,
98+ .red = > windows .FOREGROUND_RED ,
99+ .green = > windows .FOREGROUND_GREEN ,
100+ .yellow = > windows .FOREGROUND_RED | windows .FOREGROUND_GREEN ,
101+ .blue = > windows .FOREGROUND_BLUE ,
102+ .magenta = > windows .FOREGROUND_RED | windows .FOREGROUND_BLUE ,
103+ .cyan = > windows .FOREGROUND_GREEN | windows .FOREGROUND_BLUE ,
104+ .white = > windows .FOREGROUND_RED | windows .FOREGROUND_GREEN | windows .FOREGROUND_BLUE ,
105+ .bright_black = > windows .FOREGROUND_INTENSITY ,
106+ .bright_red = > windows .FOREGROUND_RED | windows .FOREGROUND_INTENSITY ,
107+ .bright_green = > windows .FOREGROUND_GREEN | windows .FOREGROUND_INTENSITY ,
108+ .bright_yellow = > windows .FOREGROUND_RED | windows .FOREGROUND_GREEN | windows .FOREGROUND_INTENSITY ,
109+ .bright_blue = > windows .FOREGROUND_BLUE | windows .FOREGROUND_INTENSITY ,
110+ .bright_magenta = > windows .FOREGROUND_RED | windows .FOREGROUND_BLUE | windows .FOREGROUND_INTENSITY ,
111+ .bright_cyan = > windows .FOREGROUND_GREEN | windows .FOREGROUND_BLUE | windows .FOREGROUND_INTENSITY ,
112+ .bright_white , .bold = > windows .FOREGROUND_RED | windows .FOREGROUND_GREEN | windows .FOREGROUND_BLUE | windows .FOREGROUND_INTENSITY ,
113+ // "dim" is not supported using basic character attributes, but let's still make it do *something*.
114+ // This matches the old behavior of TTY.Color before the bright variants were added.
80115 .dim = > windows .FOREGROUND_INTENSITY ,
81116 .reset = > ctx .reset_attributes ,
82117 };
0 commit comments