{-# LANGUAGE CPP #-} module Basement.Terminal ( initialize , getDimensions ) where import Basement.Compat.Base import Basement.Terminal.Size (getDimensions) #ifdef mingw32_HOST_OS import System.IO (hSetEncoding, utf8, hPutStrLn, stderr, stdin, stdout) import System.Win32.Console (setConsoleCP, setConsoleOutputCP, getConsoleCP, getConsoleOutputCP) #endif initialize :: IO () initialize = do #ifdef mingw32_HOST_OS query getConsoleOutputCP (\e -> setConsoleOutputCP e >> hSetEncoding stdout utf8 >> hSetEncoding stderr utf8) utf8Code query getConsoleCP (\e -> setConsoleCP e >> hSetEncoding stdin utf8) utf8Code where utf8Code = 65001 query get set expected = do v <- get if v == expected then pure () else set expected #else pure () #endif