:set prompt "ghci> "
import System.Environment
setEnv "NO_COLOR" "1"
-- TEMP
-- :m +*Hledger.Cli.Commands

-- https://github.com/cdepillabout/pretty-simple
-- If not using a cabal environment file with pretty-simple added, this adds itK here:
-- :set -package pretty-simple
:set -interactive-print=Text.Pretty.Simple.pPrintNoColor

-- ghci commands to be run once at ghci startup
-- http://www.haskell.org/ghc/docs/7.6.3/html/users_guide/ghci-commands.html

-- set up context (handled by make ghci/stack ghci/cabal repl now)
-- :set -ihledger-lib -ihledger -ihledger-web
-- :l hledger/hledger-cli.hs
-- import Hledger

-- -- :reload and run commands in .ghci2
-- :def R \_ -> return ":reload\n:script .ghci2"

-- Reload (to pick up code changes and flush cached unsafePerformIO values) and run main with the given args
:def! rmain \args -> return $ ":reload\n:main "<>args

-- -- run commands from a file, .ghci2 by default
-- :def s \f -> readFile $ if null f then ".ghci2" else f

-- -- reset hledger's sticky global debug level flag so :main --debug=N works
-- :def resetdebug \_ -> return ":!touch hledger-lib/Hledger/Utils.hs\n:reload\n"

-- -- http://www.reddit.com/r/haskell/comments/24kpyu/watching_for_changes_and_rerunning_tests_in_ghci/
-- :{
-- {-
-- import System.FSNotify
-- import Data.String
-- import Control.Concurrent.MVar
-- import Control.Concurrent

-- :def test const (withManager (\manager ->
--      do putStrLn "Listening to changes, press any key to stop..."
--         lock <- newEmptyMVar
--         watchTree manager (fromString ".") (const True) (const $ putMVar lock True)
--         forkIO (getLine >> putMVar lock False)
--         rerun <- readMVar lock
--         return $ if rerun
--           then ":reload \n :main \n :test"
--           else ""
--      ))
-- -}
-- :}
