summaryrefslogtreecommitdiff
path: root/Omni/Log/Concurrent.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Omni/Log/Concurrent.hs')
-rw-r--r--Omni/Log/Concurrent.hs14
1 files changed, 13 insertions, 1 deletions
diff --git a/Omni/Log/Concurrent.hs b/Omni/Log/Concurrent.hs
index 05426aa..47e9404 100644
--- a/Omni/Log/Concurrent.hs
+++ b/Omni/Log/Concurrent.hs
@@ -119,7 +119,19 @@ reserveLine LineManager {..} ns =
linesMap' = Map.insert lineNum (Just status) linesMap
in (linesMap', Just lineNum)
case mLine of
- Just lineNum -> modifyIORef' namespaceLines (Map.insert ns lineNum)
+ Just lineNum -> do
+ modifyIORef' namespaceLines (Map.insert ns lineNum)
+ currentLine <- readIORef lmCurrentLine
+ ANSI.hSaveCursor IO.stderr
+ ANSI.hSetCursorColumn IO.stderr 0
+ let linesToMove = currentLine - lineNum
+ when (linesToMove > 0) <| ANSI.hCursorUp IO.stderr linesToMove
+ when (linesToMove < 0) <| ANSI.hCursorDown IO.stderr (abs linesToMove)
+ ANSI.hClearLine IO.stderr
+ let nsText = Text.pack (Namespace.toPath ns)
+ IO.hPutStr IO.stderr (Text.unpack <| "[+] " <> nsText)
+ IO.hFlush IO.stderr
+ ANSI.hRestoreCursor IO.stderr
Nothing -> pure ()
pure mLine
where