@@ -85,7 +85,10 @@ repl orig mods
8585ideslave :: IState -> [FilePath] -> Idris ()
8686ideslave orig mods
8787 = do idrisCatch
88− (do sexp <- receiveMessage
88+ (do l <- liftIO $ getLine
89+ let (sexp, id) = receiveMessage l
90+ i <- getIState
91+ putIState $ i { idris_outputmode = (IdeSlave id) }
8992 case sexpToCommand sexp of
9093 Just (Interpret cmd) ->
9194 do i <- getIState
@@ -93,19 +96,19 @@ ideslave orig mods
9396 (f:_) -> f
9497 _ -> ""
9598 case parseCmd i cmd of
96− Left err -> do sendMessage (Left (show err))
99+ Left err -> do liftIO $ putStrLn $ sendMessage id (Left (show err))
97100 Right cmd -> do idrisCatch
98101 (do xs <- process fn cmd
99− sendMessage (Right (xs, "no output")))
100− (\e -> do sendMessage (Left (show e)))
102+ liftIO $ putStrLn $ sendMessage id (Right (xs, "no output")))
103+ (\e -> do liftIO $ putStrLn $ sendMessage id (Left (show e)))
101104 Just (REPLCompletions str) ->
102105 do (unused, compls) <- replCompletion (reverse str, "")
103− sendMessage (Right (map replacement compls, reverse unused))
106+ liftIO $ putStrLn $ sendMessage id (Right (map replacement compls, reverse unused))
104107 Just (LoadFile filename) -> do clearErr
105108 mod <- loadModule filename
106− sendMessage (Right (SymbolAtom "good"))
107− Nothing -> do sendMessage (Left "did not understand"))
108− (\e -> do sendMessage (Left (show e)))
109+ liftIO $ putStrLn $ sendMessage id (Right (SymbolAtom "good"))
110+ Nothing -> do liftIO $ putStrLn $ sendMessage id (Left "did not understand"))
111+ (\e -> do liftIO $ putStrLn $ sendMessage 0 (Left (show e)))
109112 ideslave orig mods
110113
111114-- | The prompt consists of the currently loaded modules, or "Idris" if there are none
@@ -498,7 +501,7 @@ parseTarget _ = error "unknown target" -- FIXME: partial function
498501parseArgs :: [String] -> [Opt]
499502parseArgs [] = []
500503parseArgs ("--quiet":ns) = Quiet : (parseArgs ns)
501−parseArgs ("--ideslave":ns) = IdeSlave : (parseArgs ns)
504+parseArgs ("--ideslave":ns) = Ideslave : (parseArgs ns)
502505parseArgs ("--log":lvl:ns) = OLogging (read lvl) : (parseArgs ns)
503506parseArgs ("--noprelude":ns) = NoPrelude : (parseArgs ns)
504507parseArgs ("--check":ns) = NoREPL : (parseArgs ns)
@@ -552,7 +555,7 @@ idrisMain :: [Opt] -> Idris ()
552555idrisMain opts =
553556 do let inputs = opt getFile opts
554557 let quiet = Quiet `elem` opts
555− let idesl = IdeSlave `elem` opts
558+ let idesl = Ideslave `elem` opts
556559 let runrepl = not (NoREPL `elem` opts)
557560 let output = opt getOutput opts
558561 let newoutput = opt getNewOutput opts