diff --git a/cabal-install/src/Distribution/Client/Init/Prompt.hs b/cabal-install/src/Distribution/Client/Init/Prompt.hs index cb8811940fd..2e7e25e25f7 100644 --- a/cabal-install/src/Distribution/Client/Init/Prompt.hs +++ b/cabal-install/src/Distribution/Client/Init/Prompt.hs @@ -25,6 +25,7 @@ import Prelude hiding (break, putStrLn, getLine, putStr) import Distribution.Client.Compat.Prelude hiding (break, empty, getLine, putStr, putStrLn) import Distribution.Client.Init.Types +import qualified System.IO -- | Create a prompt with optional default value that returns a @@ -149,6 +150,7 @@ promptDefault -> m t promptDefault parse pprint msg def = do putStr $ mkDefPrompt msg (pprint <$> def) + hFlush System.IO.stdout input <- getLine case def of DefaultPrompt d | null input -> return d diff --git a/cabal-install/src/Distribution/Client/Init/Types.hs b/cabal-install/src/Distribution/Client/Init/Types.hs index d22a60f37dc..3f8c487c4bd 100644 --- a/cabal-install/src/Distribution/Client/Init/Types.hs +++ b/cabal-install/src/Distribution/Client/Init/Types.hs @@ -69,6 +69,7 @@ import Distribution.CabalSpecVersion import Distribution.Client.Utils as P import Distribution.Fields.Pretty import Language.Haskell.Extension ( Language(..), Extension ) +import qualified System.IO import qualified System.Directory as P import qualified System.Process as P @@ -322,6 +323,7 @@ class Monad m => Interactive m where copyFile :: FilePath -> FilePath -> m () renameDirectory :: FilePath -> FilePath -> m () message :: Verbosity -> String -> m () + hFlush :: System.IO.Handle -> m () -- misc functions break :: m Bool @@ -350,6 +352,7 @@ instance Interactive IO where copyFile = P.copyFile renameDirectory = P.renameDirectory message q = unless (q == silent) . putStrLn + hFlush = System.IO.hFlush break = return False throwPrompt = throwM @@ -382,6 +385,7 @@ instance Interactive PurePrompt where copyFile !_ !_ = return () renameDirectory !_ !_ = return () message !_ !_ = return () + hFlush _ = return () break = return True throwPrompt (BreakException e) = PurePrompt $ \s -> Left $ BreakException