| ... | ... | @@ -34,11 +34,22 @@ pub fn detectConfig(file: File) Config { |
| 34 | 34 | } |
| 35 | 35 | |
| 36 | 36 | pub const Color = enum { |
| 37 | black, |
| 37 | 38 | red, |
| 38 | 39 | green, |
| 39 | 40 | yellow, |
| 41 | blue, |
| 42 | magenta, |
| 40 | 43 | cyan, |
| 41 | 44 | 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, |
| 42 | 53 | dim, |
| 43 | 54 | bold, |
| 44 | 55 | reset, |
| ... | ... | @@ -61,11 +72,22 @@ pub const Config = union(enum) { |
| 61 | 72 | .no_color => return, |
| 62 | 73 | .escape_codes => { |
| 63 | 74 | 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", |
| 69 | 91 | .bold => "\x1b[1m", |
| 70 | 92 | .dim => "\x1b[2m", |
| 71 | 93 | .reset => "\x1b[0m", |
| ... | ... | @@ -74,11 +96,24 @@ pub const Config = union(enum) { |
| 74 | 96 | }, |
| 75 | 97 | .windows_api => |ctx| if (native_os == .windows) { |
| 76 | 98 | 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. |
| 82 | 117 | .dim => windows.FOREGROUND_INTENSITY, |
| 83 | 118 | .reset => ctx.reset_attributes, |
| 84 | 119 | }; |