summaryrefslogtreecommitdiff
path: root/main
diff options
context:
space:
mode:
authorRoman Smrž <roman.smrz@seznam.cz>2025-07-11 20:33:07 +0200
committerRoman Smrž <roman.smrz@seznam.cz>2025-07-11 20:33:07 +0200
commit323e8f8a4857bac6acec852e246b82f491114ba8 (patch)
treee0d932c350331d938530f350a3712fb4478fe5ee /main
parentd825ad0182381e008a6b00334337a15274866ffe (diff)
Terminal: support multiple lines in single call
Diffstat (limited to 'main')
-rw-r--r--main/Terminal.hs5
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 {..}