aboutsummaryrefslogtreecommitdiff
path: root/hsm-command/Hsm/Command/Readline.hs
diff options
context:
space:
mode:
Diffstat (limited to 'hsm-command/Hsm/Command/Readline.hs')
-rw-r--r--hsm-command/Hsm/Command/Readline.hs23
1 files changed, 7 insertions, 16 deletions
diff --git a/hsm-command/Hsm/Command/Readline.hs b/hsm-command/Hsm/Command/Readline.hs
index 428ed50..1caa562 100644
--- a/hsm-command/Hsm/Command/Readline.hs
+++ b/hsm-command/Hsm/Command/Readline.hs
@@ -22,28 +22,19 @@ type instance DispatchOf Readline = Static S.WithSideEffects
newtype instance S.StaticRep Readline =
Readline H.InputState
-readline ::
- forall es. (Log :> es, Readline :> es)
- => Eff es (Maybe String)
+readline :: (Log :> es, Readline :> es) => Eff es (Maybe String)
readline = do
flushLogger
Readline hdl <- S.getStaticRep
- S.unsafeEff_ $ nextLine hdl
- where
- nextLine :: H.InputState -> IO (Maybe String)
- nextLine hdl =
- H.queryInput hdl
- $ H.handleInterrupt (return Nothing)
- $ H.withInterrupt
- $ H.getInputLine "% "
+ S.unsafeEff_
+ $ H.queryInput hdl
+ $ H.handleInterrupt (return Nothing)
+ $ H.withInterrupt
+ $ H.getInputLine "% "
runReadline :: (IOE :> es, Resource :> es) => Eff (Readline : es) a -> Eff es a
runReadline action = do
- handle <- snd <$> allocate istate H.cancelInput
+ handle <- snd <$> allocate (H.initializeInput settings) H.cancelInput
S.evalStaticRep (Readline handle) action
where
- settings :: H.Settings IO
settings = H.defaultSettings {H.historyFile = Just ".hsm_command_history"}
- --
- istate :: IO H.InputState
- istate = H.initializeInput settings