You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I'd like to use haskeline for a browser-based terminal interface.
(See smos.online.)
I got something hacky working like this:
-- TODO try to use the special TTY handles instead so history works too.
customRunInputT :: InputT IO a -> IO a
customRunInputT inputT = do
historyRef <- newIORef Haskeline.emptyHistory
withBehavior (useFileHandle inputH) $ \rt -> do
let runTerm =
rt
{ putStrOut = \s -> do
hPutStr outputH s
hFlush outputH
}
runReaderT
( runReaderT
( Haskeline.runKillRing
( runReaderT
( runReaderT (unInputT inputT) runTerm
)
historyRef
)
)
Haskeline.defaultPrefs
)
Haskeline.defaultSettings
However, pressing the up arrow key doesn't show me the history but a control sequence instead.
I've also tried to write this:
givenTtyHandles :: Handle -> Handle -> MaybeT IO Handles
givenTtyHandles inh outh = do
outEH <- inCodingMode outh
return Handles
{ hIn = externalHandle inh
, hOut = outEH
, closeHandles = pure () -- Don't close them
}
and then the history works but the input is no longer echoed, even with hSetExcho inh and hSetBuffering inh NoBuffering.
Is this a use-case that you would like to support?
The text was updated successfully, but these errors were encountered:
I would very much like to see pseudo terminal support. My use case is in an embedded system where a daemon needs to open and service pseudo terminals and serial terminals.
@NorfairKing , if you have a branch of your work pushed somewhere I would love to look at it. Also, did you manage the TERM environment variable at all? I wonder if this contributed to some of your problems.
I am thinking of a top level lib function like the one below that lets you provide input handle, output handle, and Maybe a terminal type. If Nothing is specified for term type then the environment is queried as usual. When using something besides the controlling terminal it will be common to not have the client's TERM variable available so it will need to be provided manually.
I'd like to use
haskeline
for a browser-based terminal interface.(See
smos.online
.)I got something hacky working like this:
However, pressing the up arrow key doesn't show me the history but a control sequence instead.
I've also tried to write this:
and then the history works but the input is no longer echoed, even with
hSetExcho inh
andhSetBuffering inh NoBuffering
.Is this a use-case that you would like to support?
The text was updated successfully, but these errors were encountered: