From 3c04e78ba779dfbc7e1bf3e1e8a75646df55814e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Gr=C3=B6ber?= Date: Thu, 17 Jul 2014 16:17:17 +0200 Subject: [PATCH] Don't rely on ghc-mod being in PATH --- Language/Haskell/GhcMod/Find.hs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/Language/Haskell/GhcMod/Find.hs b/Language/Haskell/GhcMod/Find.hs index 818e652..e1a8570 100644 --- a/Language/Haskell/GhcMod/Find.hs +++ b/Language/Haskell/GhcMod/Find.hs @@ -27,12 +27,13 @@ import Exception (ghandle, handleIO) import qualified GHC as G import Language.Haskell.GhcMod.Convert import Language.Haskell.GhcMod.Monad +import Language.Haskell.GhcMod.Utils import Language.Haskell.GhcMod.Types import Name (getOccString) import System.Directory (doesDirectoryExist, getAppUserDataDirectory, doesFileExist, getModificationTime) import System.FilePath (()) import System.IO -import System.Process (readProcess) +import System.Environment (getExecutablePath) #ifndef MIN_VERSION_containers #define MIN_VERSION_containers(x,y,z) 1 @@ -84,9 +85,18 @@ lookupSymbol opt sym db = convert opt $ lookupSymbol' sym db loadSymbolDb :: IO SymbolDb loadSymbolDb = SymbolDb <$> readSymbolDb +ghcModExecutable :: IO FilePath +ghcModExecutable = +#ifndef SPEC + getExecutablePath +#else + return "dist/build/ghc-mod/ghc-mod" +#endif + readSymbolDb :: IO (Map Symbol [ModuleString]) readSymbolDb = handle (\(SomeException _) -> return M.empty) $ do - file <- chop <$> readProcess "ghc-mod" ["dumpsym"] [] + ghcMod <- ghcModExecutable + file <- chop <$> readProcess' ghcMod ["dumpsym"] M.fromAscList . map conv . lines <$> readFile file where conv :: String -> (Symbol,[ModuleString])