jm

Odin for scripts: small packages and a runner, on core: only
Log | Files | Refs | README

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 }