@@ -25,6 +25,7 @@ import Control.Monad
2525import Control.Monad.Writer.Strict
2626
2727import qualified Data.Aeson as A
28+import Data.Bool (bool)
2829import qualified Data.ByteString.Lazy as B
2930import qualified Data.ByteString.UTF8 as BU8
3031import qualified Data.Map as M
@@ -37,6 +38,7 @@ import Options.Applicative as Opts
3738
3839import qualified Paths_purescript as Paths
3940
41+import qualified System.Console.ANSI as ANSI
4042import System.Exit (exitSuccess, exitFailure)
4143import System.FilePath.Glob (glob)
4244import System.IO (hSetEncoding, hPutStrLn, stdout, stderr, utf8)
@@ -56,11 +58,13 @@ data PCCMakeOptions = PCCMakeOptions
5658-- | Argumnets: verbose, use JSON, warnings, errors
5759printWarningsAndErrors :: Bool -> Bool -> P.MultipleErrors -> Either P.MultipleErrors a -> IO ()
5860printWarningsAndErrors verbose False warnings errors = do
61+ cc <- bool Nothing (Just P.defaultCodeColor) <$> ANSI.hSupportsANSI stderr
62+ let ppeOpts = P.defaultPPEOptions { P.ppeCodeColor = cc, P.ppeFull = verbose }
5963 when (P.nonEmpty warnings) $
60− hPutStrLn stderr (P.prettyPrintMultipleWarnings verbose warnings)
64+ hPutStrLn stderr (P.prettyPrintMultipleWarnings ppeOpts warnings)
6165 case errors of
6266 Left errs -> do
63− hPutStrLn stderr (P.prettyPrintMultipleErrors verbose errs)
67+ hPutStrLn stderr (P.prettyPrintMultipleErrors ppeOpts errs)
6468 exitFailure
6569 Right _ -> return ()
6670printWarningsAndErrors verbose True warnings errors = do