diff options
Diffstat (limited to 'Messages.hs')
-rw-r--r-- | Messages.hs | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/Messages.hs b/Messages.hs index f3c44aebf..83ea91dbc 100644 --- a/Messages.hs +++ b/Messages.hs @@ -54,6 +54,7 @@ import Common import Types import Types.Messages import Types.ActionItem +import Types.Concurrency import Messages.Internal import qualified Messages.JSON as JSON import qualified Annex @@ -226,10 +227,10 @@ implicitMessage = whenM (implicitMessages <$> Annex.getState Annex.output) - that the action is the only thing using the console, and can eg prompt - the user. -} -prompt :: (MessageState -> Annex a) -> Annex a -prompt a = withMessageState $ \s -> - if concurrentOutputEnabled s - then - let l = promptLock s - in bracketIO (takeMVar l) (putMVar l) (const (a s)) - else a s +prompt :: (Concurrency -> Annex a) -> Annex a +prompt a = go =<< Annex.getState Annex.concurrency + where + go NonConcurrent = a NonConcurrent + go c@(Concurrent {}) = withMessageState $ \s -> do + let l = promptLock s + bracketIO (takeMVar l) (putMVar l) (const (a c)) |