@@ -15,6 +15,7 @@ import Idris.ElabDecls
1515import Idris.Error
1616import Idris.Delaborate
1717import Idris.Output
18+import Idris.IdeSlave hiding (IdeSlaveCommand(..))
1819
1920import Util.Pretty
2021import Util.System
@@ -23,6 +24,7 @@ import System.FilePath
2324import System.Directory
2425import System.IO
2526import Data.Char
27+import Data.Maybe (fromMaybe)
2628
2729
2830caseSplitAt :: Handle -> FilePath -> Bool -> Int -> Name -> Idris ()
@@ -254,15 +256,32 @@ makeLemma h fn updatefile l n
254256 do let fb = fn ++ "~"
255257 runIO $ writeFile fb (addLem before tyline lem lem_app later)
256258 runIO $ copyFile fb fn
257− else ihPrintResult h $ lem ++ "\n" ++ lem_app
259+ else case idris_outputmode i of
260+ RawOutput -> ihPrintResult h $ lem ++ "\n" ++ lem_app
261+ IdeSlave n ->
262+ let good = SexpList [SymbolAtom "ok",
263+ SexpList [SymbolAtom "metavariable-lemma",
264+ SexpList [SymbolAtom "replace-metavariable",
265+ StringAtom lem_app],
266+ SexpList [SymbolAtom "definition-type",
267+ StringAtom lem]]]
268+ in runIO . hPutStrLn h $ convSExp "return" good n
269+
258270 else do -- provisional definition
259− let lem_app = show n ++ appArgs [] mty ++
271+ let lem_app = show n ++ appArgs [] mty ++
260272 " = ?" ++ show n ++ "_rhs"
261273 if updatefile then
262274 do let fb = fn ++ "~"
263275 runIO $ writeFile fb (addProv before tyline lem_app later)
264276 runIO $ copyFile fb fn
265− else ihPrintResult h $ lem_app
277+ else case idris_outputmode i of
278+ RawOutput -> ihPrintResult h $ lem_app
279+ IdeSlave n ->
280+ let good = SexpList [SymbolAtom "ok",
281+ SexpList [SymbolAtom "provisional-definition-lemma",
282+ SexpList [SymbolAtom "definition-clause",
283+ StringAtom lem_app]]]
284+ in runIO . hPutStrLn h $ convSExp "return" good n
266285
267286 where getIndent s = length (takeWhile isSpace s)
268287
@@ -318,5 +337,3 @@ makeLemma h fn updatefile l n
318337 unlines $ before ++ tyline :
319338 (later_bef ++ [blankline, lem_app, blankline] ++
320339 later_end)
321−
322−