diff options
Diffstat (limited to 'Screen.hs')
-rw-r--r-- | Screen.hs | 32 |
1 files changed, 0 insertions, 32 deletions
diff --git a/Screen.hs b/Screen.hs deleted file mode 100644 index 2bf0329..0000000 --- a/Screen.hs +++ /dev/null @@ -1,32 +0,0 @@ -{-# LANGUAGE RecordWildCards #-} -module Screen (Screen(..), setScreen, withScreen) where - -import Control.Exception -import Data.List -import System.IO - -data Screen = Screen - { stdinEcho :: Bool - , stdinBufferMode :: BufferMode - , stdoutBufferMode :: BufferMode - , decsetPm :: [Int] - , decrstPm :: [Int] - } - -setScreen :: Screen -> IO Screen -setScreen Screen{..} = get <* set where - get = Screen <$> hGetEcho stdin - <*> hGetBuffering stdin - <*> hGetBuffering stdout - <*> pure decrstPm - <*> pure decsetPm - set = do - hSetEcho stdin stdinEcho - hSetBuffering stdin stdinBufferMode - hSetBuffering stdout stdoutBufferMode - hPutStr stdout $ "\ESC[?" ++ intercalate ";" (map show decsetPm) ++ "h" - hPutStr stdout $ "\ESC[?" ++ intercalate ";" (map show decrstPm) ++ "l" - hFlush stdout - -withScreen :: Screen -> (Screen -> IO a) -> IO a -withScreen s = bracket (setScreen s) setScreen |