summaryrefslogtreecommitdiffstats
path: root/Screen.hs
diff options
context:
space:
mode:
authorKierán Meinhardt <kieran.meinhardt@gmail.com>2020-09-23 17:44:40 +0200
committerKierán Meinhardt <kieran.meinhardt@gmail.com>2020-09-23 17:44:40 +0200
commit8e92e6e11d2b3b0bfb5ac9d68f347219493e6380 (patch)
tree6484ca42d85ca89475e922f7b45039c116ebbf97 /Screen.hs
parent6a6ad3aecd53ffd89101a0dee2b4ea576d4964d4 (diff)
split into library + executables
Diffstat (limited to 'Screen.hs')
-rw-r--r--Screen.hs32
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