diff options
| author | Roman Smrž <roman.smrz@seznam.cz> | 2026-02-07 17:10:21 +0100 |
|---|---|---|
| committer | Roman Smrž <roman.smrz@seznam.cz> | 2026-02-07 17:10:21 +0100 |
| commit | 722e30758b7a222a0e074bd17d8116001560c156 (patch) | |
| tree | 29779a5114865dc20a6b08f0d2ab22c7ffd666c6 /main/Terminal.hs | |
| parent | 00fb858401afbac6a0b90ba0540a24939cabc5e2 (diff) | |
Terminal: use FormattedText in printLine
Diffstat (limited to 'main/Terminal.hs')
| -rw-r--r-- | main/Terminal.hs | 13 |
1 files changed, 7 insertions, 6 deletions
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 {..} |