@@ -18,6 +18,7 @@ import Idris.UnusedArgs
18import Idris.Docs
18import Idris.Docs
19import Idris.Help
19import Idris.Help
20import Idris.Completion
20import Idris.Completion
22import Paths_idris
23import Paths_idris
23import Util.System
24import Util.System
@@ -80,6 +81,16 @@ repl orig mods
80 ctrlC e = do lift $ iputStrLn (show e)
81 ctrlC e = do lift $ iputStrLn (show e)
81 repl orig mods
82 repl orig mods
85+ideslave :: IState -> [FilePath] -> InputT Idris ()
87+ = do x <- liftIO $ receiveMessage
89+ Nothing -> do liftIO $ sendMessage (Just "did not understand")
90+ Just y -> do liftIO $ sendMessage (Just "understood you!")
91+ liftIO $ sendMessage (Just "Hello world")
83-- | The prompt consists of the currently loaded modules, or "Idris" if there are none
94-- | The prompt consists of the currently loaded modules, or "Idris" if there are none
84mkPrompt [] = "Idris"
95mkPrompt [] = "Idris"
85mkPrompt [x] = "*" ++ dropExtension x
96mkPrompt [x] = "*" ++ dropExtension x
@@ -471,6 +482,7 @@ parseTarget _ = error "unknown target" -- FIXME: partial function
471parseArgs :: [String] -> [Opt]
482parseArgs :: [String] -> [Opt]
472parseArgs [] = []
483parseArgs [] = []
473parseArgs ("--quiet":ns) = Quiet : (parseArgs ns)
484parseArgs ("--quiet":ns) = Quiet : (parseArgs ns)
485+parseArgs ("--ideslave":ns) = IdeSlave : (parseArgs ns)
474parseArgs ("--log":lvl:ns) = OLogging (read lvl) : (parseArgs ns)
486parseArgs ("--log":lvl:ns) = OLogging (read lvl) : (parseArgs ns)
475parseArgs ("--noprelude":ns) = NoPrelude : (parseArgs ns)
487parseArgs ("--noprelude":ns) = NoPrelude : (parseArgs ns)
476parseArgs ("--check":ns) = NoREPL : (parseArgs ns)
488parseArgs ("--check":ns) = NoREPL : (parseArgs ns)
@@ -524,6 +536,7 @@ idrisMain :: [Opt] -> Idris ()
524idrisMain opts =
536idrisMain opts =
525 do let inputs = opt getFile opts
537 do let inputs = opt getFile opts
526 let quiet = Quiet `elem` opts
538 let quiet = Quiet `elem` opts
539+ let idesl = IdeSlave `elem` opts
527 let runrepl = not (NoREPL `elem` opts)
540 let runrepl = not (NoREPL `elem` opts)
528 let output = opt getOutput opts
541 let output = opt getOutput opts
529 let newoutput = opt getNewOutput opts
542 let newoutput = opt getNewOutput opts
@@ -543,6 +556,7 @@ idrisMain opts =
543 mapM_ addLangExt (opt getLanguageExt opts)
556 mapM_ addLangExt (opt getLanguageExt opts)
544 setREPL runrepl
557 setREPL runrepl
545 setQuiet quiet
558 setQuiet quiet
546 setVerbose runrepl
560 setVerbose runrepl
547 setCmdLine opts
561 setCmdLine opts
548 setOutputTy outty
562 setOutputTy outty
@@ -567,7 +581,7 @@ idrisMain opts =
567 elabPrims
581 elabPrims
568 when (not (NoPrelude `elem` opts)) $ do x <- loadModule "Prelude"
582 when (not (NoPrelude `elem` opts)) $ do x <- loadModule "Prelude"
569 return ()
583 return ()
570− when (runrepl && not quiet) $ iputStrLn banner
584+ when (runrepl && not quiet && not idesl) $ iputStrLn banner
571 ist <- getIState
585 ist <- getIState
572 mods <- mapM loadModule inputs
586 mods <- mapM loadModule inputs
573 ok <- noErrors
587 ok <- noErrors
@@ -577,7 +591,8 @@ idrisMain opts =
577 when ok $ case newoutput of
591 when ok $ case newoutput of
578 [] -> return ()
592 [] -> return ()
579 (o:_) -> process "" (NewCompile o)
593 (o:_) -> process "" (NewCompile o)
580− when runrepl $ runInputT replSettings $ repl ist inputs
594+ when (runrepl && not idesl) $ runInputT replSettings $ repl ist inputs
595+ when (idesl) $ runInputT replSettings $ ideslave ist inputs
581 ok <- noErrors
596 ok <- noErrors
582 when (not ok) $ liftIO (exitWith (ExitFailure 1))
597 when (not ok) $ liftIO (exitWith (ExitFailure 1))