mirror of
https://codeberg.org/ziglings/exercises.git
synced 2026-02-10 22:24:52 +00:00
use Io interface for enabling ansi escape codes
This commit is contained in:
parent
7d4162e388
commit
df3f2df50b
20
build.zig
20
build.zig
|
|
@ -128,23 +128,13 @@ pub fn build(b: *Build) !void {
|
||||||
if (!validate_exercises()) std.process.exit(2);
|
if (!validate_exercises()) std.process.exit(2);
|
||||||
|
|
||||||
use_color_escapes = false;
|
use_color_escapes = false;
|
||||||
if (try std.Io.File.stderr().supportsAnsiEscapeCodes(io)) {
|
const stderr = std.Io.File.stderr();
|
||||||
|
if (try stderr.supportsAnsiEscapeCodes(io)) {
|
||||||
use_color_escapes = true;
|
use_color_escapes = true;
|
||||||
} else if (builtin.os.tag == .windows) {
|
} else if (builtin.os.tag == .windows) {
|
||||||
const w32 = struct {
|
if (stderr.enableAnsiEscapeCodes(io)) {
|
||||||
const DWORD = std.os.windows.DWORD;
|
use_color_escapes = true;
|
||||||
const ENABLE_VIRTUAL_TERMINAL_PROCESSING = 0x0004;
|
} else |_| {}
|
||||||
const STD_ERROR_HANDLE: DWORD = @bitCast(@as(i32, -12));
|
|
||||||
const GetStdHandle = std.os.windows.kernel32.GetStdHandle;
|
|
||||||
const GetConsoleMode = std.os.windows.kernel32.GetConsoleMode;
|
|
||||||
const SetConsoleMode = std.os.windows.kernel32.SetConsoleMode;
|
|
||||||
};
|
|
||||||
const handle = w32.GetStdHandle(w32.STD_ERROR_HANDLE).?;
|
|
||||||
var mode: w32.DWORD = 0;
|
|
||||||
if (w32.GetConsoleMode(handle, &mode) != 0) {
|
|
||||||
mode |= w32.ENABLE_VIRTUAL_TERMINAL_PROCESSING;
|
|
||||||
use_color_escapes = w32.SetConsoleMode(handle, mode) != 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (use_color_escapes) {
|
if (use_color_escapes) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user