on master help sign in
Add IDE command to get Idris version
e88e306David Raymond Christiansen
Setup.hs+1−1
@@ -106,7 +106,7 @@ generateVersionModule verbosity dir release = do
106 "gitHash :: String\n" ++
106 "gitHash :: String\n" ++
107 if release
107 if release
108 then "gitHash = \"\"\n"
108 then "gitHash = \"\"\n"
109− else "gitHash = \"-git:" ++ h ++ "\"\n"
109+ else "gitHash = \"git:" ++ h ++ "\"\n"
110
110
111-- Generate a module that contains the lib path for a freestanding Idris
111-- Generate a module that contains the lib path for a freestanding Idris
112generateTargetModule verbosity dir targetDir = do
112generateTargetModule verbosity dir targetDir = do
src/Idris/IdeMode.hs+4
@@ -230,6 +230,7 @@ data IdeModeCommand = REPLCompletions String
230 | PrintDef String
230 | PrintDef String
231 | ErrString Err
231 | ErrString Err
232 | ErrPPrint Err
232 | ErrPPrint Err
233+ | GetIdrisVersion
233
234
234sexpToCommand :: SExp -> Maybe IdeModeCommand
235sexpToCommand :: SExp -> Maybe IdeModeCommand
235sexpToCommand (SexpList (x:[])) = sexpToCommand x
236sexpToCommand (SexpList (x:[])) = sexpToCommand x
@@ -275,6 +276,7 @@ sexpToCommand (SexpList [SymbolAtom "hide-term-implicits", StringAtom encoded])
275sexpToCommand (SexpList [SymbolAtom "print-definition", StringAtom name]) = Just (PrintDef name)
276sexpToCommand (SexpList [SymbolAtom "print-definition", StringAtom name]) = Just (PrintDef name)
276sexpToCommand (SexpList [SymbolAtom "error-string", StringAtom encoded]) = Just . ErrString . decodeErr $ encoded
277sexpToCommand (SexpList [SymbolAtom "error-string", StringAtom encoded]) = Just . ErrString . decodeErr $ encoded
277sexpToCommand (SexpList [SymbolAtom "error-pprint", StringAtom encoded]) = Just . ErrPPrint . decodeErr $ encoded
278sexpToCommand (SexpList [SymbolAtom "error-pprint", StringAtom encoded]) = Just . ErrPPrint . decodeErr $ encoded
279+sexpToCommand (SymbolAtom "version") = Just GetIdrisVersion
278sexpToCommand _ = Nothing
280sexpToCommand _ = Nothing
279
281
280parseMessage :: String -> Either Err (SExp, Integer)
282parseMessage :: String -> Either Err (SExp, Integer)
@@ -298,5 +300,7 @@ convSExp pre s id =
298getHexLength :: String -> String
300getHexLength :: String -> String
299getHexLength s = printf "%06x" (1 + (length s))
301getHexLength s = printf "%06x" (1 + (length s))
300
302
303+-- | The version of the IDE mode command set. Increment this when you
304+-- change it so clients can adapt.
301ideModeEpoch :: Int
305ideModeEpoch :: Int
302ideModeEpoch = 1
306ideModeEpoch = 1
src/Idris/REPL.hs+9−1
@@ -508,6 +508,14 @@ runIdeModeCommand h id orig fn modes (IdeMode.ErrPPrint e) =
508 fmap (fancifyAnnots ist) $ pprintErr ist e
508 fmap (fancifyAnnots ist) $ pprintErr ist e
509 msg = (IdeMode.SymbolAtom "ok", out, spans)
509 msg = (IdeMode.SymbolAtom "ok", out, spans)
510 runIO . hPutStrLn h $ IdeMode.convSExp "return" msg id
510 runIO . hPutStrLn h $ IdeMode.convSExp "return" msg id
511+runIdeModeCommand h id orig fn modes IdeMode.GetIdrisVersion =
512+ let idrisVersion = (versionBranch version,
513+ if not (null gitHash)
514+ then [gitHash]
515+ else [])
516+ msg = (IdeMode.SymbolAtom "ok", idrisVersion)
517+ in runIO . hPutStrLn h $ IdeMode.convSExp "return" msg id
518+
511
519
512-- | Show a term for IDEMode with the specified implicitness
520-- | Show a term for IDEMode with the specified implicitness
513ideModeForceTermImplicits :: Handle -> Integer -> [(Name, Bool)] -> Bool -> Term -> Idris ()
521ideModeForceTermImplicits :: Handle -> Integer -> [(Name, Bool)] -> Bool -> Term -> Idris ()
@@ -1798,7 +1806,7 @@ getPort (_:xs) = getPort xs
1798opt :: (Opt -> Maybe a) -> [Opt] -> [a]
1806opt :: (Opt -> Maybe a) -> [Opt] -> [a]
1799opt = mapMaybe
1807opt = mapMaybe
1800
1808
1801−ver = showVersion version ++ gitHash
1809+ver = showVersion version ++ "-" ++ gitHash
1802
1810
1803defaultPort :: PortID
1811defaultPort :: PortID
1804defaultPort = PortNumber (fromIntegral 4294)
1812defaultPort = PortNumber (fromIntegral 4294)