Missing source file
This commit is contained in:
parent
d400c8f389
commit
34fedd8ad3
62
Language/Haskell/GhcMod/DebugLogger.hs
Normal file
62
Language/Haskell/GhcMod/DebugLogger.hs
Normal file
@ -0,0 +1,62 @@
|
||||
module Language.Haskell.GhcMod.DebugLogger where
|
||||
|
||||
|
||||
import GHC
|
||||
import FastString
|
||||
import Pretty
|
||||
import Outputable (SDoc, PprStyle, runSDoc, initSDocContext, blankLine)
|
||||
import qualified Outputable
|
||||
import ErrUtils
|
||||
import DynFlags (LogAction)
|
||||
|
||||
import Language.Haskell.GhcMod.Error
|
||||
import Language.Haskell.GhcMod.Output
|
||||
import Language.Haskell.GhcMod.Monad.Types
|
||||
import Prelude
|
||||
|
||||
debugLogAction :: (String -> IO ()) -> LogAction
|
||||
debugLogAction putErr dflags severity srcSpan style msg
|
||||
= case severity of
|
||||
SevOutput -> printSDoc msg style
|
||||
SevDump -> printSDoc (msg Outputable.$$ blankLine) style
|
||||
SevInteractive -> putStrSDoc msg style
|
||||
SevInfo -> printErrs msg style
|
||||
SevFatal -> printErrs msg style
|
||||
_ -> do putErr "\n"
|
||||
printErrs (mkLocMessage severity srcSpan msg) style
|
||||
-- careful (#2302): printErrs prints in UTF-8,
|
||||
-- whereas converting to string first and using
|
||||
-- hPutStr would just emit the low 8 bits of
|
||||
-- each unicode char.
|
||||
where printSDoc = debugLogActionHPrintDoc dflags putErr
|
||||
printErrs = debugLogActionHPrintDoc dflags putErr
|
||||
putStrSDoc = debugLogActionHPutStrDoc dflags putErr
|
||||
|
||||
debugLogActionHPrintDoc :: DynFlags -> (String -> IO ()) -> SDoc -> PprStyle -> IO ()
|
||||
debugLogActionHPrintDoc dflags put d sty
|
||||
= debugLogActionHPutStrDoc dflags put (d Outputable.$$ Outputable.text "") sty
|
||||
-- Adds a newline
|
||||
|
||||
debugLogActionHPutStrDoc :: DynFlags -> (String -> IO ()) -> SDoc -> PprStyle -> IO ()
|
||||
debugLogActionHPutStrDoc dflags put d sty
|
||||
= gmPrintDoc_ Pretty.PageMode (pprCols dflags) put doc
|
||||
where -- Don't add a newline at the end, so that successive
|
||||
-- calls to this log-action can output all on the same line
|
||||
doc = runSDoc d (initSDocContext dflags sty)
|
||||
|
||||
|
||||
gmPrintDoc :: Mode -> Int -> (String -> IO ()) -> Doc -> IO ()
|
||||
-- printDoc adds a newline to the end
|
||||
gmPrintDoc mode cols put doc = gmPrintDoc_ mode cols put (doc $$ text "")
|
||||
|
||||
gmPrintDoc_ :: Mode -> Int -> (String -> IO ()) -> Doc -> IO ()
|
||||
gmPrintDoc_ mode pprCols putS doc
|
||||
= fullRender mode pprCols 1.5 put done doc
|
||||
where
|
||||
put (Chr c) next = putS [c] >> next
|
||||
put (Str s) next = putS s >> next
|
||||
put (PStr s) next = putS (unpackFS s) >> next
|
||||
put (ZStr s) next = putS (zString s) >> next
|
||||
put (LStr s _l) next = putS (unpackLitString s) >> next
|
||||
|
||||
done = return () -- hPutChar hdl '\n'
|
Loading…
Reference in New Issue
Block a user