X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Fghci%2FGhciMonad.hs;h=8de9d386085657da1473606c523ea90c7f3bcb29;hb=c2fd45f3496040a6bc7ce8110ffe9e14bad6564f;hp=06de9e91a3b858a86fa4c1f0414cd18b4b8ec5c8;hpb=ad94d40948668032189ad22a0ad741ac1f645f50;p=ghc-hetmet.git diff --git a/compiler/ghci/GhciMonad.hs b/compiler/ghci/GhciMonad.hs index 06de9e9..8de9d38 100644 --- a/compiler/ghci/GhciMonad.hs +++ b/compiler/ghci/GhciMonad.hs @@ -10,7 +10,7 @@ -- The above warning supression flag is a temporary kludge. -- While working on this module you are encouraged to remove it and fix -- any warnings in the module. See --- http://hackage.haskell.org/trac/ghc/wiki/CodingStyle#Warnings +-- http://hackage.haskell.org/trac/ghc/wiki/Commentary/CodingStyle#Warnings -- for details module GhciMonad where @@ -18,7 +18,7 @@ module GhciMonad where #include "HsVersions.h" import qualified GHC -import Outputable hiding (printForUser) +import Outputable hiding (printForUser, printForUserPartWay) import qualified Outputable import Panic hiding (showException) import Util @@ -27,6 +27,7 @@ import HscTypes import SrcLoc import Module import ObjLink +import StaticFlags import Data.Maybe import Numeric @@ -45,6 +46,8 @@ import GHC.Exts ----------------------------------------------------------------------------- -- GHCi monad +type Command = (String, String -> GHCi Bool, Maybe String, String -> IO [String]) + data GHCiState = GHCiState { progname :: String, @@ -61,7 +64,13 @@ data GHCiState = GHCiState -- tickarrays caches the TickArray for loaded modules, -- so that we don't rebuild it each time the user sets -- a breakpoint. - cmdqueue :: [String] + -- ":" at the GHCi prompt repeats the last command, so we + -- remember is here: + last_command :: Maybe Command, + cmdqueue :: [String], + remembered_ctx :: Maybe ([Module],[Module]) + -- modules we want to add to the context, but can't + -- because they currently have errors. Set by :reload. } type TickArray = Array Int [(BreakIndex,SrcSpan)] @@ -169,6 +178,12 @@ printForUser doc = do unqual <- io (GHC.getPrintUnqual session) io $ Outputable.printForUser stdout unqual doc +printForUserPartWay :: SDoc -> GHCi () +printForUserPartWay doc = do + session <- getSession + unqual <- io (GHC.getPrintUnqual session) + io $ Outputable.printForUserPartWay stdout opt_PprUserLength unqual doc + -- -------------------------------------------------------------------------- -- timing & statistics