on master help sign in
Merge pull request #1922 from david-christiansen/ide-mode-version-command

Add IDE command to get Idris version

commit7949fdb795ea1b9229d1a83afb6e30ff0ad26f4b authorDavid Christiansen <david@davidchristiansen.dk> dateMon 16 Feb 2015, 10:38 (12 years ago) parent297b3e2e88e306
3 files changed+14−2
Setup.hs+1−1 src/Idris/IdeMode.hs+4 src/Idris/REPL.hs+9−1
Setup.hs+1−1
@@ -106,7 +106,7 @@ generateVersionModule verbosity dir release = do
106106 "gitHash :: String\n" ++
107107 if release
108108 then "gitHash = \"\"\n"
109− else "gitHash = \"-git:" ++ h ++ "\"\n"
109+ else "gitHash = \"git:" ++ h ++ "\"\n"
110110
111111-- Generate a module that contains the lib path for a freestanding Idris
112112generateTargetModule verbosity dir targetDir = do
src/Idris/IdeMode.hs+4
@@ -230,6 +230,7 @@ data IdeModeCommand = REPLCompletions String
230230 | PrintDef String
231231 | ErrString Err
232232 | ErrPPrint Err
233+ | GetIdrisVersion
233234
234235sexpToCommand :: SExp -> Maybe IdeModeCommand
235236sexpToCommand (SexpList (x:[])) = sexpToCommand x
@@ -275,6 +276,7 @@ sexpToCommand (SexpList [SymbolAtom "hide-term-implicits", StringAtom encoded])
275276sexpToCommand (SexpList [SymbolAtom "print-definition", StringAtom name]) = Just (PrintDef name)
276277sexpToCommand (SexpList [SymbolAtom "error-string", StringAtom encoded]) = Just . ErrString . decodeErr $ encoded
277278sexpToCommand (SexpList [SymbolAtom "error-pprint", StringAtom encoded]) = Just . ErrPPrint . decodeErr $ encoded
279+sexpToCommand (SymbolAtom "version") = Just GetIdrisVersion
278280sexpToCommand _ = Nothing
279281
280282parseMessage :: String -> Either Err (SExp, Integer)
@@ -298,5 +300,7 @@ convSExp pre s id =
298300getHexLength :: String -> String
299301getHexLength s = printf "%06x" (1 + (length s))
300302
303+-- | The version of the IDE mode command set. Increment this when you
304+-- change it so clients can adapt.
301305ideModeEpoch :: Int
302306ideModeEpoch = 1
src/Idris/REPL.hs+9−1
@@ -508,6 +508,14 @@ runIdeModeCommand h id orig fn modes (IdeMode.ErrPPrint e) =
508508 fmap (fancifyAnnots ist) $ pprintErr ist e
509509 msg = (IdeMode.SymbolAtom "ok", out, spans)
510510 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+
511519
512520-- | Show a term for IDEMode with the specified implicitness
513521ideModeForceTermImplicits :: Handle -> Integer -> [(Name, Bool)] -> Bool -> Term -> Idris ()
@@ -1798,7 +1806,7 @@ getPort (_:xs) = getPort xs
17981806opt :: (Opt -> Maybe a) -> [Opt] -> [a]
17991807opt = mapMaybe
18001808
1801−ver = showVersion version ++ gitHash
1809+ver = showVersion version ++ "-" ++ gitHash
18021810
18031811defaultPort :: PortID
18041812defaultPort = PortNumber (fromIntegral 4294)