diff --git a/GhcModExe/Find.hs b/GhcModExe/Find.hs index 8ed9225..3e0a7fd 100644 --- a/GhcModExe/Find.hs +++ b/GhcModExe/Find.hs @@ -1,7 +1,6 @@ {-# LANGUAGE CPP, BangPatterns, TupleSections, DeriveGeneric #-} module GhcModExe.Find -#ifndef SPEC ( Symbol , SymbolDb , loadSymbolDb @@ -14,9 +13,7 @@ module GhcModExe.Find , AsyncSymbolDb , newAsyncSymbolDb , getAsyncSymbolDb - ) -#endif - where + ) where import qualified GHC as G import FastString diff --git a/core/Language/Haskell/GhcMod/CabalHelper.hs b/core/Language/Haskell/GhcMod/CabalHelper.hs index 1d00a5b..cb09569 100644 --- a/core/Language/Haskell/GhcMod/CabalHelper.hs +++ b/core/Language/Haskell/GhcMod/CabalHelper.hs @@ -16,15 +16,13 @@ {-# LANGUAGE CPP #-} module Language.Haskell.GhcMod.CabalHelper -#ifndef SPEC ( getComponents , getGhcMergedPkgOptions , getCabalPackageDbStack , prepareCabalHelper , withAutogen - ) -#endif - where + , withCabal + ) where import Control.Applicative import Control.Monad diff --git a/core/Language/Haskell/GhcMod/Cradle.hs b/core/Language/Haskell/GhcMod/Cradle.hs index 87efe81..b4e499b 100644 --- a/core/Language/Haskell/GhcMod/Cradle.hs +++ b/core/Language/Haskell/GhcMod/Cradle.hs @@ -1,15 +1,14 @@ {-# LANGUAGE CPP #-} module Language.Haskell.GhcMod.Cradle -#ifndef SPEC - ( - findCradle + ( findCradle , findCradle' , findCradleNoLog , findSpecCradle , cleanupCradle - ) -#endif - where + + -- * for @spec@ + , plainCradle + ) where import Language.Haskell.GhcMod.PathsAndFiles import Language.Haskell.GhcMod.Monad.Types diff --git a/core/Language/Haskell/GhcMod/Utils.hs b/core/Language/Haskell/GhcMod/Utils.hs index 5de4ca3..c923750 100644 --- a/core/Language/Haskell/GhcMod/Utils.hs +++ b/core/Language/Haskell/GhcMod/Utils.hs @@ -79,17 +79,18 @@ whenM mb ma = mb >>= flip when ma -- | Returns the path to the currently running ghc-mod executable. With ghc<7.6 -- this is a guess but >=7.6 uses 'getExecutablePath'. ghcModExecutable :: IO FilePath -#ifndef SPEC ghcModExecutable = do - dir <- takeDirectory <$> getExecutablePath' - return $ (if dir == "." then "" else dir) "ghc-mod" -#else -ghcModExecutable = do - gpp <- lookupEnv "STACK_EXE" - case gpp of - Just _ -> fmap ( "ghc-mod") getBinDir - _ -> fmap ( "dist/build/ghc-mod/ghc-mod") getCurrentDirectory -#endif + exe <- getExecutablePath' + stack <- lookupEnv "STACK_EXE" + case takeBaseName exe of + "spec" | Just _ <- stack -> + ( "ghc-mod") <$> getBinDir + "spec" -> + ( "dist/build/ghc-mod/ghc-mod") <$> getCurrentDirectory + "ghc-mod" -> + return exe + _ -> + return $ takeDirectory exe "ghc-mod" getExecutablePath' :: IO FilePath #if __GLASGOW_HASKELL__ >= 706 diff --git a/ghc-mod.cabal b/ghc-mod.cabal index 1ca4893..bf630df 100644 --- a/ghc-mod.cabal +++ b/ghc-mod.cabal @@ -274,7 +274,6 @@ Test-Suite spec Main-Is: Main.hs Hs-Source-Dirs: test, ., src, core Ghc-Options: -Wall -fno-warn-deprecations -threaded - CPP-Options: -DSPEC=1 Type: exitcode-stdio-1.0 Other-Modules: Paths_ghc_mod Dir