@@ -6,6 +6,7 @@ import System.Environment
66import System.Exit
77
88import Data.Maybe
9+import Data.Version
910import Control.Monad.State
1011
1112import Core.CoreParser
@@ -21,6 +22,7 @@ import Idris.REPL
2122import Idris.ElabDecls
2223import Idris.Primitives
2324import Idris.Imports
25+import Paths_miniidris
2426
2527-- Main program reads command line options, parses the main program, and gets
2628-- on with the REPL.
@@ -41,13 +43,19 @@ runIdris opts =
4143 do let inputs = opt getFile opts
4244 mapM_ makeOption opts
4345 elabPrims
44− when (not (NoPrelude `elem` opts)) $ loadModule "prelude"
45− mapM_ loadModule inputs
46− when (not (NoREPL `elem` opts)) $ repl
46+ when (not (NoPrelude `elem` opts)) $ do x <- loadModule "prelude"
47+ return ()
48+ mods <- mapM loadModule inputs
49+ when (not (NoREPL `elem` opts)) $ do iputStrLn banner
50+ repl (mkPrompt mods)
4751 where
4852 makeOption (OLogging i) = setLogLevel i
4953 makeOption _ = return ()
5054
55+mkPrompt [] = "Idris"
56+mkPrompt [x] = "*" ++ x
57+mkPrompt (x:xs) = "*" ++ x ++ " " ++ mkPrompt xs
58+
5159getFile :: Opt -> Maybe String
5260getFile (Filename str) = Just str
5361getFile _ = Nothing
@@ -79,3 +87,11 @@ main'
7987 err -> print err
8088 -}
8189
90+ver = showVersion version
91+
92+banner = " ____ __ _ \n" ++
93+ " / _/___/ /____(_)____ \n" ++
94+ " / // __ / ___/ / ___/ Version " ++ ver ++ "\n" ++
95+ " _/ // /_/ / / / (__ ) http://www.idris-lang.org/ \n" ++
96+ " /___/\\__,_/_/ /_/____/ Type :? for help \n"
97+