From 323e8f8a4857bac6acec852e246b82f491114ba8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Smr=C5=BE?= Date: Fri, 11 Jul 2025 20:33:07 +0200 Subject: Terminal: support multiple lines in single call --- main/Terminal.hs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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 {..} -- cgit v1.2.3