diff options
author | Roman Smrž <roman.smrz@seznam.cz> | 2025-07-11 20:33:07 +0200 |
---|---|---|
committer | Roman Smrž <roman.smrz@seznam.cz> | 2025-07-11 20:33:07 +0200 |
commit | 323e8f8a4857bac6acec852e246b82f491114ba8 (patch) | |
tree | e0d932c350331d938530f350a3712fb4478fe5ee /main/Terminal.hs | |
parent | d825ad0182381e008a6b00334337a15274866ffe (diff) |
Terminal: support multiple lines in single call
Diffstat (limited to 'main/Terminal.hs')
-rw-r--r-- | main/Terminal.hs | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/main/Terminal.hs b/main/Terminal.hs index d66094f..5f061d5 100644 --- a/main/Terminal.hs +++ b/main/Terminal.hs @@ -51,6 +51,7 @@ data Terminal = Terminal data TerminalLine = TerminalLine { tlTerminal :: Terminal + , tlLineCount :: Int } data Input @@ -323,11 +324,13 @@ setPrompt term@Terminal {..} prompt = do printLine :: Terminal -> String -> IO TerminalLine printLine tlTerminal@Terminal {..} str = do withMVar termLock $ \_ -> do + let strLines = lines str + tlLineCount = length strLines promptLine <- atomically $ do readTVar termShowPrompt >>= \case True -> getCurrentPromptLine tlTerminal False -> return "" - putStr $ "\r\ESC[K" <> str <> "\n\ESC[K" <> promptLine + putStr $ "\r\ESC[K" <> unlines strLines <> "\ESC[K" <> promptLine drawBottomLines tlTerminal hFlush stdout return TerminalLine {..} |