Rearrange loadTargets code.
The loadTargets function is exposed via the Internal module for use by external programmes, such as HaRe. Re-arrange to code so that it can still be called with a list of string targets, as it was before.
This commit is contained in:
parent
bb3a948912
commit
e198f68f2a
@ -40,6 +40,7 @@ module Language.Haskell.GhcMod.Internal (
|
|||||||
, cradle
|
, cradle
|
||||||
, getCompilerMode
|
, getCompilerMode
|
||||||
, setCompilerMode
|
, setCompilerMode
|
||||||
|
, targetGhcOptions
|
||||||
, withOptions
|
, withOptions
|
||||||
-- * 'GhcModError'
|
-- * 'GhcModError'
|
||||||
, gmeDoc
|
, gmeDoc
|
||||||
|
@ -137,20 +137,8 @@ runGmlTWith efnmns' mdf wrapper action = do
|
|||||||
let targetStrs = mappedStrs ++ map moduleNameString mns ++ cfns
|
let targetStrs = mappedStrs ++ map moduleNameString mns ++ cfns
|
||||||
|
|
||||||
unGmlT $ wrapper $ do
|
unGmlT $ wrapper $ do
|
||||||
targets <-
|
loadTargets opts targetStrs
|
||||||
withLightHscEnv opts $ \env ->
|
|
||||||
liftM (nubBy ((==) `on` targetId))
|
|
||||||
(mapM ((`guessTarget` Nothing) >=> mapFile env) targetStrs)
|
|
||||||
>>= mapM relativize
|
|
||||||
loadTargets targets
|
|
||||||
action
|
action
|
||||||
where
|
|
||||||
relativize (Target (TargetFile filePath phase) taoc src) = do
|
|
||||||
crdl <- cradle
|
|
||||||
let tid = TargetFile relativeFilePath phase
|
|
||||||
relativeFilePath = makeRelative (cradleRootDir crdl) filePath
|
|
||||||
return $ Target tid taoc src
|
|
||||||
relativize tgt = return tgt
|
|
||||||
|
|
||||||
targetGhcOptions :: forall m. IOish m
|
targetGhcOptions :: forall m. IOish m
|
||||||
=> Cradle
|
=> Cradle
|
||||||
@ -413,8 +401,14 @@ resolveGmComponents mumns cs = do
|
|||||||
same f a b = (f a) == (f b)
|
same f a b = (f a) == (f b)
|
||||||
|
|
||||||
-- | Set the files as targets and load them.
|
-- | Set the files as targets and load them.
|
||||||
loadTargets :: IOish m => [Target] -> GmlT m ()
|
loadTargets :: IOish m => [GHCOption] -> [FilePath] -> GmlT m ()
|
||||||
loadTargets targets = do
|
loadTargets opts targetStrs = do
|
||||||
|
targets <-
|
||||||
|
withLightHscEnv opts $ \env ->
|
||||||
|
liftM (nubBy ((==) `on` targetId))
|
||||||
|
(mapM ((`guessTarget` Nothing) >=> mapFile env) targetStrs)
|
||||||
|
>>= mapM relativize
|
||||||
|
|
||||||
gmLog GmDebug "loadTargets" $
|
gmLog GmDebug "loadTargets" $
|
||||||
text "Loading" <+>: fsep (map (text . showTargetId) targets)
|
text "Loading" <+>: fsep (map (text . showTargetId) targets)
|
||||||
|
|
||||||
@ -435,6 +429,13 @@ loadTargets targets = do
|
|||||||
else
|
else
|
||||||
loadTargets' Simple
|
loadTargets' Simple
|
||||||
where
|
where
|
||||||
|
relativize (Target (TargetFile filePath phase) taoc src) = do
|
||||||
|
crdl <- cradle
|
||||||
|
let tid = TargetFile relativeFilePath phase
|
||||||
|
relativeFilePath = makeRelative (cradleRootDir crdl) filePath
|
||||||
|
return $ Target tid taoc src
|
||||||
|
relativize tgt = return tgt
|
||||||
|
|
||||||
loadTargets' Simple = do
|
loadTargets' Simple = do
|
||||||
void $ load LoadAllTargets
|
void $ load LoadAllTargets
|
||||||
mapM_ (parseModule >=> typecheckModule >=> desugarModule) =<< getModuleGraph
|
mapM_ (parseModule >=> typecheckModule >=> desugarModule) =<< getModuleGraph
|
||||||
|
Loading…
Reference in New Issue
Block a user