on master help sign in
Check for TTY when setting colour

This means that when doing a redirect to file, one doesn't have to turn off colour manually.

commite86b0f6d0a312a1590e5293c43fb83e365b81861 authorNiklas Larsson <niklas@mm.st> dateFri 28 Aug 2015, 18:42 (11 years ago) parent378bbd6
2 files changed+16−4
src/Idris/REPL.hs+2−1 src/Util/System.hs+14−3
src/Idris/REPL.hs+2−1
@@ -1626,7 +1626,8 @@ idrisMain opts =
16261626
16271627 when (DefaultTotal `elem` opts) $ do i <- getIState
16281628 putIState (i { default_total = True })
1629− setColourise $ not quiet && last (True : opt getColour opts)
1629+ tty <- runIO $ isATTY
1630+ setColourise $ not quiet && last (tty : opt getColour opts)
16301631
16311632
16321633
src/Util/System.hs+14−3
@@ -1,12 +1,17 @@
1−{-# LANGUAGE CPP #-}
1+{-# LANGUAGE CPP, ForeignFunctionInterface #-}
22module Util.System(tempfile,withTempdir,rmFile,catchIO, isWindows,
33 writeSource, writeSourceText, readSource,
4− setupBundledCC) where
4+ setupBundledCC, isATTY) where
55
66-- System helper functions.
7+
8+import Control.Exception as CE
79import Control.Monad (when)
810import qualified Data.Text as T
911import qualified Data.Text.IO as TIO
12+
13+import Foreign.C
14+
1015import System.Directory (getTemporaryDirectory
1116 , removeFile
1217 , removeDirectoryRecursive
@@ -17,7 +22,6 @@ import System.FilePath ((</>), normalise, isAbsolute, dropFileName)
1722import System.IO
1823import System.Info
1924import System.IO.Error
20−import Control.Exception as CE
2125
2226#ifdef FREESTANDING
2327import Tools_idris
@@ -51,6 +55,13 @@ writeSource f s = withFile f WriteMode (\h -> hSetEncoding h utf8 >> hPutStr h s
5155writeSourceText :: FilePath -> T.Text -> IO ()
5256writeSourceText f s = withFile f WriteMode (\h -> hSetEncoding h utf8 >> TIO.hPutStr h s)
5357
58+foreign import ccall "isatty" isATTYRaw :: CInt -> IO CInt
59+
60+isATTY :: IO Bool
61+isATTY = do
62+ tty <- isATTYRaw 1 -- fd stdout
63+ return $ tty /= 0
64+
5465withTempdir :: String -> (FilePath -> IO a) -> IO a
5566withTempdir subdir callback
5667 = do dir <- getTemporaryDirectory