From 722e30758b7a222a0e074bd17d8116001560c156 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Smr=C5=BE?= Date: Sat, 7 Feb 2026 17:10:21 +0100 Subject: Terminal: use FormattedText in printLine --- main/Terminal.hs | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'main/Terminal.hs') diff --git a/main/Terminal.hs b/main/Terminal.hs index 252a050..3e3864b 100644 --- a/main/Terminal.hs +++ b/main/Terminal.hs @@ -31,7 +31,6 @@ import Control.Monad import Data.Char import Data.List -import Data.String import Data.Text (Text) import Data.Text qualified as T import Data.Text.IO qualified as T @@ -372,21 +371,23 @@ hidePrompt term@Terminal {..} = do redrawPrompt term False -> return $ return () -printLine :: Terminal -> String -> IO TerminalLine +printLine :: Terminal -> FormattedText -> IO TerminalLine printLine tlTerminal@Terminal {..} str = do withMVar termLock $ \_ -> do - let strLines = lines str - tlLineCount = length strLines + let tlLineCount = formattedTextHeight str if termAnsi then do promptLine <- atomically $ do readTVar termShowPrompt >>= \case True -> getCurrentPromptLine tlTerminal False -> return "" - putAnsi $ "\r\ESC[K" <> fromString (unlines strLines) <> "\ESC[K" <> promptLine + putAnsi $ mconcat + [ AnsiText "\r\ESC[K", renderAnsiText $ endWithNewline str + , AnsiText "\ESC[K", promptLine + ] drawBottomLines tlTerminal else do - putStr $ unlines strLines + T.putStr $ renderPlainText $ endWithNewline str hFlush stdout return TerminalLine {..} -- cgit v1.2.3