zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit 5d3f3cae64759091ad6dc7b1e2e7f15728c8b05a (tree)
parent 0f6fa3f20b3b28958921bd63a9a9d96468455e9c
Author: Linus Groh <mail@linusgroh.de>
Date:   Sun, 21 May 2023 21:27:54 +0100

std.io.tty: Add missing colors to Color enum

Also make colors not bold by default, that's what .bold is for.

Diffstat:
Mlib/std/io/tty.zig | 55+++++++++++++++++++++++++++++++++++++++++++++----------
1 file changed, 45 insertions(+), 10 deletions(-)

diff --git a/lib/std/io/tty.zig b/lib/std/io/tty.zig @@ -34,11 +34,22 @@ pub fn detectConfig(file: File) Config { } pub const Color = enum { + black, red, green, yellow, + blue, + magenta, cyan, white, + bright_black, + bright_red, + bright_green, + bright_yellow, + bright_blue, + bright_magenta, + bright_cyan, + bright_white, dim, bold, reset, @@ -61,11 +72,22 @@ pub const Config = union(enum) { .no_color => return, .escape_codes => { const color_string = switch (color) { - .red => "\x1b[31;1m", - .green => "\x1b[32;1m", - .yellow => "\x1b[33;1m", - .cyan => "\x1b[36;1m", - .white => "\x1b[37;1m", + .black => "\x1b[30m", + .red => "\x1b[31m", + .green => "\x1b[32m", + .yellow => "\x1b[33m", + .blue => "\x1b[34m", + .magenta => "\x1b[35m", + .cyan => "\x1b[36m", + .white => "\x1b[37m", + .bright_black => "\x1b[90m", + .bright_red => "\x1b[91m", + .bright_green => "\x1b[92m", + .bright_yellow => "\x1b[93m", + .bright_blue => "\x1b[94m", + .bright_magenta => "\x1b[95m", + .bright_cyan => "\x1b[96m", + .bright_white => "\x1b[97m", .bold => "\x1b[1m", .dim => "\x1b[2m", .reset => "\x1b[0m", @@ -74,11 +96,24 @@ pub const Config = union(enum) { }, .windows_api => |ctx| if (native_os == .windows) { const attributes = switch (color) { - .red => windows.FOREGROUND_RED | windows.FOREGROUND_INTENSITY, - .green => windows.FOREGROUND_GREEN | windows.FOREGROUND_INTENSITY, - .yellow => windows.FOREGROUND_RED | windows.FOREGROUND_GREEN | windows.FOREGROUND_INTENSITY, - .cyan => windows.FOREGROUND_GREEN | windows.FOREGROUND_BLUE | windows.FOREGROUND_INTENSITY, - .white, .bold => windows.FOREGROUND_RED | windows.FOREGROUND_GREEN | windows.FOREGROUND_BLUE | windows.FOREGROUND_INTENSITY, + .black => 0, + .red => windows.FOREGROUND_RED, + .green => windows.FOREGROUND_GREEN, + .yellow => windows.FOREGROUND_RED | windows.FOREGROUND_GREEN, + .blue => windows.FOREGROUND_BLUE, + .magenta => windows.FOREGROUND_RED | windows.FOREGROUND_BLUE, + .cyan => windows.FOREGROUND_GREEN | windows.FOREGROUND_BLUE, + .white => windows.FOREGROUND_RED | windows.FOREGROUND_GREEN | windows.FOREGROUND_BLUE, + .bright_black => windows.FOREGROUND_INTENSITY, + .bright_red => windows.FOREGROUND_RED | windows.FOREGROUND_INTENSITY, + .bright_green => windows.FOREGROUND_GREEN | windows.FOREGROUND_INTENSITY, + .bright_yellow => windows.FOREGROUND_RED | windows.FOREGROUND_GREEN | windows.FOREGROUND_INTENSITY, + .bright_blue => windows.FOREGROUND_BLUE | windows.FOREGROUND_INTENSITY, + .bright_magenta => windows.FOREGROUND_RED | windows.FOREGROUND_BLUE | windows.FOREGROUND_INTENSITY, + .bright_cyan => windows.FOREGROUND_GREEN | windows.FOREGROUND_BLUE | windows.FOREGROUND_INTENSITY, + .bright_white, .bold => windows.FOREGROUND_RED | windows.FOREGROUND_GREEN | windows.FOREGROUND_BLUE | windows.FOREGROUND_INTENSITY, + // "dim" is not supported using basic character attributes, but let's still make it do *something*. + // This matches the old behavior of TTY.Color before the bright variants were added. .dim => windows.FOREGROUND_INTENSITY, .reset => ctx.reset_attributes, };