Skip to content

Commit 7aa64c8

Browse files
committed
std.io.tty: Add missing colors to Color enum
Also make colors not bold by default, that's what .bold is for.
1 parent 14cb53d commit 7aa64c8

File tree

1 file changed

+45
-10
lines changed

1 file changed

+45
-10
lines changed

lib/std/io/tty.zig

Lines changed: 45 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,22 @@ pub fn detectConfig(file: File) Config {
3434
}
3535

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,
@@ -61,11 +72,22 @@ pub const Config = union(enum) {
6172
.no_color => return,
6273
.escape_codes => {
6374
const color_string = switch (color) {
64-
.red => "\x1b[31;1m",
65-
.green => "\x1b[32;1m",
66-
.yellow => "\x1b[33;1m",
67-
.cyan => "\x1b[36;1m",
68-
.white => "\x1b[37;1m",
75+
.black => "\x1b[30m",
76+
.red => "\x1b[31m",
77+
.green => "\x1b[32m",
78+
.yellow => "\x1b[33m",
79+
.blue => "\x1b[34m",
80+
.magenta => "\x1b[35m",
81+
.cyan => "\x1b[36m",
82+
.white => "\x1b[37m",
83+
.bright_black => "\x1b[90m",
84+
.bright_red => "\x1b[91m",
85+
.bright_green => "\x1b[92m",
86+
.bright_yellow => "\x1b[93m",
87+
.bright_blue => "\x1b[94m",
88+
.bright_magenta => "\x1b[95m",
89+
.bright_cyan => "\x1b[96m",
90+
.bright_white => "\x1b[97m",
6991
.bold => "\x1b[1m",
7092
.dim => "\x1b[2m",
7193
.reset => "\x1b[0m",
@@ -74,11 +96,24 @@ pub const Config = union(enum) {
7496
},
7597
.windows_api => |ctx| if (native_os == .windows) {
7698
const attributes = switch (color) {
77-
.red => windows.FOREGROUND_RED | windows.FOREGROUND_INTENSITY,
78-
.green => windows.FOREGROUND_GREEN | windows.FOREGROUND_INTENSITY,
79-
.yellow => windows.FOREGROUND_RED | windows.FOREGROUND_GREEN | windows.FOREGROUND_INTENSITY,
80-
.cyan => windows.FOREGROUND_GREEN | windows.FOREGROUND_BLUE | windows.FOREGROUND_INTENSITY,
81-
.white, .bold => windows.FOREGROUND_RED | windows.FOREGROUND_GREEN | windows.FOREGROUND_BLUE | windows.FOREGROUND_INTENSITY,
99+
.black => 0,
100+
.red => windows.FOREGROUND_RED,
101+
.green => windows.FOREGROUND_GREEN,
102+
.yellow => windows.FOREGROUND_RED | windows.FOREGROUND_GREEN,
103+
.blue => windows.FOREGROUND_BLUE,
104+
.magenta => windows.FOREGROUND_RED | windows.FOREGROUND_BLUE,
105+
.cyan => windows.FOREGROUND_GREEN | windows.FOREGROUND_BLUE,
106+
.white => windows.FOREGROUND_RED | windows.FOREGROUND_GREEN | windows.FOREGROUND_BLUE,
107+
.bright_black => windows.FOREGROUND_INTENSITY,
108+
.bright_red => windows.FOREGROUND_RED | windows.FOREGROUND_INTENSITY,
109+
.bright_green => windows.FOREGROUND_GREEN | windows.FOREGROUND_INTENSITY,
110+
.bright_yellow => windows.FOREGROUND_RED | windows.FOREGROUND_GREEN | windows.FOREGROUND_INTENSITY,
111+
.bright_blue => windows.FOREGROUND_BLUE | windows.FOREGROUND_INTENSITY,
112+
.bright_magenta => windows.FOREGROUND_RED | windows.FOREGROUND_BLUE | windows.FOREGROUND_INTENSITY,
113+
.bright_cyan => windows.FOREGROUND_GREEN | windows.FOREGROUND_BLUE | windows.FOREGROUND_INTENSITY,
114+
.bright_white, .bold => windows.FOREGROUND_RED | windows.FOREGROUND_GREEN | windows.FOREGROUND_BLUE | windows.FOREGROUND_INTENSITY,
115+
// "dim" is not supported using basic character attributes, but let's still make it do *something*.
116+
// This matches the old behavior of TTY.Color before the bright variants were added.
82117
.dim => windows.FOREGROUND_INTENSITY,
83118
.reset => ctx.reset_attributes,
84119
};

0 commit comments

Comments
 (0)