prelude_windows.odin (616B)
1 #+build windows 2 package prelude 3 4 import win32 "core:sys/windows" 5 6 // platform_init makes the console print UTF-8, which core:fmt writes, and 7 // honour the ANSI escape sequences that core:terminal/ansi emits. 8 platform_init :: proc() { 9 win32.SetConsoleOutputCP(win32.CODEPAGE(win32.CP_UTF8)) 10 for which in ([2]win32.DWORD{win32.STD_OUTPUT_HANDLE, win32.STD_ERROR_HANDLE}) { 11 h := win32.GetStdHandle(which) 12 if h == win32.INVALID_HANDLE_VALUE || h == nil { 13 continue 14 } 15 mode: win32.DWORD 16 if win32.GetConsoleMode(h, &mode) { 17 win32.SetConsoleMode(h, mode | win32.ENABLE_VIRTUAL_TERMINAL_PROCESSING) 18 } 19 } 20 }