summaryrefslogtreecommitdiff
path: root/ghc/GhciMonad.hs
diff options
context:
space:
mode:
authorSimon Marlow <marlowsd@gmail.com>2009-09-18 14:40:41 +0000
committerSimon Marlow <marlowsd@gmail.com>2009-09-18 14:40:41 +0000
commit63a1a074071247b41710a3f51a2097b563022ecb (patch)
treee0822118a6e7726937d0ce414860a0f092e114b7 /ghc/GhciMonad.hs
parentc80ca5708526c9aaab9344c1377404cc1cae901f (diff)
downloadhaskell-63a1a074071247b41710a3f51a2097b563022ecb.tar.gz
remove encoding of output using Haskeline; the IO library does it now (#3398)
Diffstat (limited to 'ghc/GhciMonad.hs')
-rw-r--r--ghc/GhciMonad.hs34
1 files changed, 2 insertions, 32 deletions
diff --git a/ghc/GhciMonad.hs b/ghc/GhciMonad.hs
index e0653871b8..0b9239d553 100644
--- a/ghc/GhciMonad.hs
+++ b/ghc/GhciMonad.hs
@@ -15,7 +15,6 @@ module GhciMonad where
import qualified GHC
import Outputable hiding (printForUser, printForUserPartWay)
-import qualified Pretty
import qualified Outputable
import Panic hiding (showException)
import Util
@@ -27,7 +26,6 @@ import ObjLink
import Linker
import StaticFlags
import qualified MonadUtils
-import qualified ErrUtils
import Exception
-- import Data.Maybe
@@ -45,9 +43,7 @@ import GHC.Exts
import System.Console.Haskeline (CompletionFunc, InputT)
import qualified System.Console.Haskeline as Haskeline
-import System.Console.Haskeline.Encoding
import Control.Monad.Trans as Trans
-import qualified Data.ByteString as B
-----------------------------------------------------------------------------
-- GHCi monad
@@ -240,42 +236,16 @@ unsetOption opt
io :: IO a -> GHCi a
io = MonadUtils.liftIO
-printForUser :: SDoc -> GHCi ()
+printForUser :: GhcMonad m => SDoc -> m ()
printForUser doc = do
unqual <- GHC.getPrintUnqual
- io $ Outputable.printForUser stdout unqual doc
-
-printForUser' :: SDoc -> InputT GHCi ()
-printForUser' doc = do
- unqual <- GHC.getPrintUnqual
- Haskeline.outputStrLn $ showSDocForUser unqual doc
+ MonadUtils.liftIO $ Outputable.printForUser stdout unqual doc
printForUserPartWay :: SDoc -> GHCi ()
printForUserPartWay doc = do
unqual <- GHC.getPrintUnqual
io $ Outputable.printForUserPartWay stdout opt_PprUserLength unqual doc
--- We set log_action to write encoded output.
--- This fails whenever GHC tries to mention an (already encoded) filename,
--- but I don't know how to work around that.
-setLogAction :: InputT GHCi ()
-setLogAction = do
- encoder <- getEncoder
- dflags <- GHC.getSessionDynFlags
- _ <- GHC.setSessionDynFlags dflags {log_action = logAction encoder}
- return ()
- where
- logAction encoder severity srcSpan style msg = case severity of
- GHC.SevInfo -> printEncErrs encoder (msg style)
- GHC.SevFatal -> printEncErrs encoder (msg style)
- _ -> do
- hPutChar stderr '\n'
- printEncErrs encoder (ErrUtils.mkLocMessage srcSpan msg style)
- printEncErrs encoder doc = do
- str <- encoder (Pretty.showDocWith Pretty.PageMode doc)
- B.hPutStrLn stderr str
- hFlush stderr
-
runStmt :: String -> GHC.SingleStep -> GHCi GHC.RunResult
runStmt expr step = do
st <- getGHCiState