@@ -1,5 +1,7 @@
1−module Development.IDE.LSP.Completions (
2− setHandlersCompletion
1+{-# LANGUAGE TypeFamilies #-}
2+
3+module Development.IDE.Plugin.Completions (
4+ setHandlersCompletion, produceCompletions
35) where
46
57import Language.Haskell.LSP.Messages
@@ -7,14 +9,47 @@ import Language.Haskell.LSP.Types
79import qualified Language.Haskell.LSP.Core as LSP
810import qualified Language.Haskell.LSP.VFS as VFS
911import Language.Haskell.LSP.Types.Capabilities
12+import Development.Shake.Classes
13+import Development.Shake
14+import GHC.Generics
15+import Data.Maybe
16+import HscTypes
1017
1118import Development.IDE.Core.Service
12−import Development.IDE.Core.Completions
19+import Development.IDE.Plugin.Completions.Logic
1320import Development.IDE.Types.Location
1421import Development.IDE.Core.PositionMapping
1522import Development.IDE.Core.RuleTypes
1623import Development.IDE.Core.Shake
24+import Development.IDE.GHC.Util
1725import Development.IDE.LSP.Server
26+import Development.IDE.Import.DependencyInformation
27+
28+
29+produceCompletions :: Rules ()
30+produceCompletions =
31+ define $ \ProduceCompletions file -> do
32+ deps <- maybe (TransitiveDependencies [] []) fst <$> useWithStale GetDependencies file
33+ tms <- mapMaybe (fmap fst) <$> usesWithStale TypeCheck (transitiveModuleDeps deps)
34+ tm <- fmap fst <$> useWithStale TypeCheck file
35+ packageState <- fmap (hscEnv . fst) <$> useWithStale GhcSession file
36+ case (tm, packageState) of
37+ (Just tm', Just packageState') -> do
38+ cdata <- liftIO $ cacheDataProducer packageState' (hsc_dflags packageState')
39+ (tmrModule tm') (map tmrModule tms)
40+ return ([], Just (cdata, tm'))
41+ _ -> return ([], Nothing)
42+
43+
44+-- | Produce completions info for a file
45+type instance RuleResult ProduceCompletions = (CachedCompletions, TcModuleResult)
46+
47+data ProduceCompletions = ProduceCompletions
48+ deriving (Eq, Show, Typeable, Generic)
49+instance Hashable ProduceCompletions
50+instance NFData ProduceCompletions
51+instance Binary ProduceCompletions
52+
1853
1954-- | Generate code actions.
2055getCompletionsLSP