on master help sign in
Merge pull request #2561 from melted/tty
dc5e42dNiklas Larsson
src/Idris/REPL.hs+2−1
@@ -1626,7 +1626,8 @@ idrisMain opts =
1626
1626
1627 when (DefaultTotal `elem` opts) $ do i <- getIState
1627 when (DefaultTotal `elem` opts) $ do i <- getIState
1628 putIState (i { default_total = True })
1628 putIState (i { default_total = True })
1629+ tty <- runIO $ isATTY
1629− setColourise $ not quiet && last (True : opt getColour opts)
1630+ setColourise $ not quiet && last (tty : opt getColour opts)
1630
1631
1631
1632
1632
1633
src/Util/System.hs+14−3
@@ -1,12 +1,17 @@
1−{-# LANGUAGE CPP #-}
1+{-# LANGUAGE CPP, ForeignFunctionInterface #-}
2module Util.System(tempfile,withTempdir,rmFile,catchIO, isWindows,
2module Util.System(tempfile,withTempdir,rmFile,catchIO, isWindows,
3 writeSource, writeSourceText, readSource,
3 writeSource, writeSourceText, readSource,
4− setupBundledCC) where
4+ setupBundledCC, isATTY) where
5
5
6-- System helper functions.
6-- System helper functions.
7+
8+import Control.Exception as CE
7import Control.Monad (when)
9import Control.Monad (when)
8import qualified Data.Text as T
10import qualified Data.Text as T
9import qualified Data.Text.IO as TIO
11import qualified Data.Text.IO as TIO
12+
13+import Foreign.C
14+
10import System.Directory (getTemporaryDirectory
15import System.Directory (getTemporaryDirectory
11 , removeFile
16 , removeFile
12 , removeDirectoryRecursive
17 , removeDirectoryRecursive
@@ -17,7 +22,6 @@ import System.FilePath ((</>), normalise, isAbsolute, dropFileName)
17import System.IO
22import System.IO
18import System.Info
23import System.Info
19import System.IO.Error
24import System.IO.Error
20−import Control.Exception as CE
21
25
22#ifdef FREESTANDING
26#ifdef FREESTANDING
23import Tools_idris
27import Tools_idris
@@ -51,6 +55,13 @@ writeSource f s = withFile f WriteMode (\h -> hSetEncoding h utf8 >> hPutStr h s
51writeSourceText :: FilePath -> T.Text -> IO ()
55writeSourceText :: FilePath -> T.Text -> IO ()
52writeSourceText f s = withFile f WriteMode (\h -> hSetEncoding h utf8 >> TIO.hPutStr h s)
56writeSourceText f s = withFile f WriteMode (\h -> hSetEncoding h utf8 >> TIO.hPutStr h s)
53
57
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+
54withTempdir :: String -> (FilePath -> IO a) -> IO a
65withTempdir :: String -> (FilePath -> IO a) -> IO a
55withTempdir subdir callback
66withTempdir subdir callback
56 = do dir <- getTemporaryDirectory
67 = do dir <- getTemporaryDirectory