Zig 0.17.0-dev (Split by item)
This is an example of documentation generated by
ZigDoc , an alternative to Zig's built-in
Auto Doc feature. See also
examples in other modes/formats . The project being documented here (as the example) is the Zig library itself.
Zig › std/ › Io/ › Terminal.zig › Mode
Mode
Terminal.Mode
pub const Mode = union (enum )
File
Code
pub const Mode = union (enum ) {
no_color ,
escape_codes ,
windows_api : WindowsApi ,
pub const WindowsApi = if (!is_windows ) noreturn else struct {
io : Io ,
file : File ,
reset_attributes : u16 ,
};
pub fn detect (io : Io , file : File , NO_COLOR : bool , CLICOLOR_FORCE : bool ) Io .Cancelable !Mode {
const force_color : ?bool = if (NO_COLOR ) false else if (CLICOLOR_FORCE ) true else null ;
if (force_color == false ) return .no_color ;
if (file .enableAnsiEscapeCodes (io )) |_ | {
return .escape_codes ;
} else |err | switch (err ) {
error .Canceled => |e | return e ,
error .NotTerminalDevice , error .Unexpected => {},
}
if (is_windows and try file .isTty (io )) {
var get_console_info = std .os .windows .CONSOLE .USER_IO .GET_SCREEN_BUFFER_INFO ;
switch (try get_console_info .operate (io , file )) {
.SUCCESS => return .{ .windows_api = .{
.io = io ,
.file = file ,
.reset_attributes = get_console_info .Data .wAttributes ,
} },
else => {},
}
}
return if (force_color == true ) .escape_codes else .no_color ;
}
}