From f6051eb3ebe2c50cdcde44abf6d071f0b5bdbb8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Smr=C5=BE?= Date: Sun, 8 Feb 2026 21:22:46 +0100 Subject: Clear status info even when keeping prompt --- main/Terminal.hs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'main/Terminal.hs') diff --git a/main/Terminal.hs b/main/Terminal.hs index 3e3864b..89444e6 100644 --- a/main/Terminal.hs +++ b/main/Terminal.hs @@ -165,13 +165,14 @@ getInputLine term@Terminal {..} handleResult = do writeTVar termHistory . addLine =<< readTVar termHistory writeTVar termHistoryPos 0 - ( x, c ) <- case handleResult mbLine of - KeepPrompt x -> return ( x, AnsiText "\n" ) - ErasePrompt x -> return ( x, AnsiText "\r" ) + ( x, clear ) <- case handleResult mbLine of + KeepPrompt x -> return ( x, \statusLen -> AnsiText $ "\ESC[" <> T.pack (show statusLen) <> "G\ESC[1K\n\ESC[J" ) + ErasePrompt x -> return ( x, \_ -> AnsiText "\r\ESC[J" ) when termAnsi $ do withMVar termLock $ \_ -> do + status <- atomically $ readTVar termPromptStatus prompt <- atomically $ getCurrentPromptLine term - putAnsi $ c <> AnsiText "\ESC[J" <> prompt + putAnsi $ clear (formattedTextLength status) <> prompt return x where -- cgit v1.2.3