From 0fa8ed4689022cb213de9cfb88a10841c7a03935 Mon Sep 17 00:00:00 2001 From: Ben Sima Date: Wed, 26 Nov 2025 16:45:41 -0500 Subject: Unify LineManager for analyze and build phases MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Create single LineManager in move() that spans both phases - Reserve N lines upfront for N build targets - Status progression: [.] pending -> [+] analyzing -> [~] building -> [✓]/[x] done - Remove duplicate LineManager creation from analyzeAll and build - Update both SingleLine and MultiLine modes with proper symbols This fixes the issue where only one line was reserved during analysis and status lines were being duplicated instead of overwritten. --- Omni/Log/Concurrent.hs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'Omni/Log') diff --git a/Omni/Log/Concurrent.hs b/Omni/Log/Concurrent.hs index 93f90c1..6dc7297 100644 --- a/Omni/Log/Concurrent.hs +++ b/Omni/Log/Concurrent.hs @@ -124,7 +124,7 @@ initializeLines LineManager {..} = do ANSI.hSetCursorColumn IO.stderr 0 ANSI.hClearLine IO.stderr let nsText = Text.pack (Namespace.toPath ns) - let msg = "[+] " <> nsText + let msg = "[.] " <> nsText -- Pending state before analysis starts let truncated = truncateToWidth (tiWidth lmTermInfo - 1) msg IO.hPutStrLn IO.stderr (Text.unpack truncated) IO.hFlush IO.stderr @@ -196,7 +196,9 @@ updateLineState ns buildState = do let (symbol, color) = case buildState of Success -> ("✓", green) Failed -> ("x", red) - _ -> ("~", white) + Analyzing -> ("+", white) + Pending -> (".", white) + Building -> ("~", white) let msg = "[" <> symbol <> "] " <> nsText let truncated = truncateToWidth (tiWidth lmTermInfo - 1) msg -- cgit v1.2.3