Commit 59a12cd293
Changed files (2)
lib
std
fs
lib/std/fs/file.zig
@@ -230,6 +230,13 @@ pub const File = struct {
/// Test whether ANSI escape codes will be treated as such.
pub fn supportsAnsiEscapeCodes(self: File) bool {
if (builtin.os.tag == .windows) {
+ if (!os.isatty(self.handle)) return false;
+
+ var console_mode: os.windows.DWORD = 0;
+ if (os.windows.kernel32.GetConsoleMode(self.handle, &console_mode) != 0) {
+ if (console_mode & os.windows.ENABLE_VIRTUAL_TERMINAL_PROCESSING != 0) return true;
+ }
+
return os.isCygwinPty(self.handle);
}
if (builtin.os.tag == .wasi) {
lib/std/os/windows.zig
@@ -3387,6 +3387,8 @@ pub const CONSOLE_SCREEN_BUFFER_INFO = extern struct {
dwMaximumWindowSize: COORD,
};
+pub const ENABLE_VIRTUAL_TERMINAL_PROCESSING = 0x4;
+
pub const FOREGROUND_BLUE = 1;
pub const FOREGROUND_GREEN = 2;
pub const FOREGROUND_RED = 4;