`ghc-mod list` should take care of sandboxes

This commit is contained in:
Kohei Suzuki 2013-09-27 12:23:53 +09:00
parent 169069f623
commit 67166a4d75
3 changed files with 10 additions and 8 deletions

View File

@ -1,6 +1,7 @@
module Language.Haskell.GhcMod.List (listModules, listMods) where
import Control.Applicative
import Control.Monad (void)
import Data.List
import GHC
import Language.Haskell.GhcMod.GHCApi
@ -11,13 +12,13 @@ import UniqFM
----------------------------------------------------------------
-- | Listing installed modules.
listModules :: Options -> IO String
listModules opt = convert opt . nub . sort <$> withGHCDummyFile (listMods opt)
listModules :: Options -> Cradle -> IO String
listModules opt cradle = convert opt . nub . sort <$> withGHCDummyFile (listMods opt cradle)
-- | Listing installed modules.
listMods :: Options -> Ghc [String]
listMods opt = do
initializeFlags opt
listMods :: Options -> Cradle -> Ghc [String]
listMods opt cradle = do
void $ initializeFlagsWithCradle opt cradle [] False
getExposedModules <$> getSessionDynFlags
where
getExposedModules = map moduleNameString

View File

@ -97,7 +97,7 @@ main = flip catches handlers $ do
else throw (TooManyArguments cmdArg0)
res <- case cmdArg0 of
"browse" -> concat <$> mapM (browseModule opt) remainingArgs
"list" -> listModules opt
"list" -> listModules opt cradle
"check" -> checkSyntax opt cradle remainingArgs
"expand" -> checkSyntax opt { expandSplice = True } cradle remainingArgs
"debug" -> nArgs 1 $ debugInfo opt cradle cmdArg1
@ -107,7 +107,7 @@ main = flip catches handlers $ do
"lang" -> listLanguages opt
"flag" -> listFlags opt
"boot" -> do
mods <- listModules opt
mods <- listModules opt cradle
langs <- listLanguages opt
flags <- listFlags opt
pre <- concat <$> mapM (browseModule opt) preBrowsedModules

View File

@ -8,5 +8,6 @@ spec :: Spec
spec = do
describe "listModules" $ do
it "lists up module names" $ do
modules <- lines <$> listModules defaultOptions
cradle <- findCradle
modules <- lines <$> listModules defaultOptions cradle
modules `shouldContain` ["Data.Map"]