mirror of
https://github.com/jetzig-framework/jetzig.git
synced 2025-05-14 14:06:08 +00:00
update allow unicode images in windows terminal
This commit is contained in:
parent
22badde8c0
commit
f9d8ef3776
@ -3,7 +3,7 @@ const args = @import("args");
|
||||
|
||||
const util = @import("../util.zig");
|
||||
const cli = @import("../cli.zig");
|
||||
|
||||
const uPrint = @import("unicodeprint.zig");
|
||||
const init_data = @import("init_data").init_data;
|
||||
|
||||
/// Command line options for the `init` command.
|
||||
@ -209,7 +209,7 @@ pub fn run(
|
||||
// const git_setup = false;
|
||||
// if (git_setup) try gitSetup(allocator, install_dir);
|
||||
|
||||
std.debug.print(
|
||||
try uPrint.unicodePrint(
|
||||
\\
|
||||
\\Setup complete! ✈️ 🦎
|
||||
\\
|
||||
|
41
cli/commands/unicodeprint.zig
Normal file
41
cli/commands/unicodeprint.zig
Normal file
@ -0,0 +1,41 @@
|
||||
const std = @import("std");
|
||||
const builtin = @import("builtin");
|
||||
|
||||
pub fn unicodePrint(comptime fmt: []const u8, args: anytype) !void {
|
||||
if (builtin.os.tag == .windows) {
|
||||
// Windows-specific code
|
||||
const cp_out = try UTF8ConsoleOutput.init();
|
||||
defer cp_out.deinit();
|
||||
|
||||
std.debug.print(comptime fmt, args);
|
||||
} else {
|
||||
// Non-Windows platforms just print normally
|
||||
std.debug.print(fmt, args);
|
||||
}
|
||||
}
|
||||
const UTF8ConsoleOutput = struct {
|
||||
original: if (builtin.os.tag == .windows) c_uint else void,
|
||||
|
||||
fn init() !UTF8ConsoleOutput {
|
||||
if (builtin.os.tag == .windows) {
|
||||
const original = std.os.windows.kernel32.GetConsoleOutputCP();
|
||||
if (original == 0) {
|
||||
return error.FailedToGetConsoleOutputCP;
|
||||
}
|
||||
const result = std.os.windows.kernel32.SetConsoleOutputCP(65001); // UTF-8 code page
|
||||
if (result == 0) {
|
||||
return error.FailedToSetConsoleOutputCP;
|
||||
}
|
||||
return .{ .original = original };
|
||||
}
|
||||
// For non-Windows, return an empty struct
|
||||
return .{ .original = {} };
|
||||
}
|
||||
|
||||
fn deinit(self: UTF8ConsoleOutput) void {
|
||||
if (builtin.os.tag == .windows) {
|
||||
// Restore the original code page
|
||||
_ = std.os.windows.kernel32.SetConsoleOutputCP(self.original);
|
||||
}
|
||||
}
|
||||
};
|
Loading…
x
Reference in New Issue
Block a user