@@ -26,8 +26,9 @@ import Data.Maybe (mapMaybe)
26import Data.Traversable (traverse)
26import Data.Traversable (traverse)
28import System.Console.Haskeline
28import System.Console.Haskeline
29−import System.Directory (findExecutable)
29+import System.Directory (createDirectoryIfMissing, findExecutable)
30import System.Exit
30import System.Exit
31+import System.Environment.XDG.BaseDir
31import System.Process
32import System.Process
33import qualified Language.PureScript as P
34import qualified Language.PureScript as P
@@ -120,11 +121,19 @@ findNodeProcess :: IO (Maybe String)
120findNodeProcess = runMaybeT . msum $ map (MaybeT . findExecutable) names
121findNodeProcess = runMaybeT . msum $ map (MaybeT . findExecutable) names
121 where names = ["nodejs", "node"]
122 where names = ["nodejs", "node"]
124+getHistoryFilename :: IO FilePath
125+getHistoryFilename = do
126+ purescriptConfig <- getUserConfigDir "purescript"
127+ createDirectoryIfMissing True purescriptConfig
128+ getUserConfigFile "purescript" "psci_history"
123main :: IO ()
130main :: IO ()
125 preludeFilename <- getPreludeFilename
132 preludeFilename <- getPreludeFilename
126 (Right prelude) <- loadModule preludeFilename
133 (Right prelude) <- loadModule preludeFilename
134+ historyFilename <- getHistoryFilename
135+ let settings = defaultSettings {historyFile = Just historyFilename}
127− runInputT (setComplete (completion prelude) defaultSettings) $ do
136+ runInputT (setComplete (completion prelude) settings) $ do
128 outputStrLn " ____ ____ _ _ "
137 outputStrLn " ____ ____ _ _ "
129 outputStrLn "| _ \\ _ _ _ __ ___/ ___| ___ _ __(_)_ __ | |_ "
138 outputStrLn "| _ \\ _ _ _ __ ___/ ___| ___ _ __(_)_ __ | |_ "
130 outputStrLn "| |_) | | | | '__/ _ \\___ \\ / __| '__| | '_ \\| __|"
139 outputStrLn "| |_) | | | | '__/ _ \\___ \\ / __| '__| | '_ \\| __|"