Skip to content

Commit 1d1ab3b

Browse files
authored
Rebase on ghcide HEAD (#378)
* Rebase on top of ghcide HEAD * use Development.IDE to trim imports * Fix Eval plugin to use GhcSessionDeps
1 parent e8bdd77 commit 1d1ab3b

16 files changed

+30
-118
lines changed

exe/Main.hs

+1-1
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ runLspMode lspArgs@LspArguments {..} = do
186186
hPutStrLn stderr $ " in directory: " <> dir
187187
hPutStrLn stderr "If you are seeing this in a terminal, you probably should have run ghcide WITHOUT the --lsp option!"
188188

189-
runLanguageServer options (pluginHandler plugins) getInitialConfig getConfigFromNotification $ \getLspId event vfs caps wProg wIndefProg _getConfig -> do
189+
runLanguageServer options (pluginHandler plugins) getInitialConfig getConfigFromNotification $ \getLspId event vfs caps wProg wIndefProg _getConfig _rootPath -> do
190190
t <- t
191191
hPutStrLn stderr $ "Started LSP server in " ++ showDuration t
192192
sessionLoader <- loadSession dir

ghcide

Submodule ghcide updated 51 files

src/Ide/Plugin.hs

+1-6
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,8 @@ import qualified Data.List as List
2828
import qualified Data.Map as Map
2929
import Data.Maybe
3030
import qualified Data.Text as T
31-
import Development.IDE.Core.Rules
32-
import Development.IDE.Core.Shake
31+
import Development.IDE hiding (pluginRules)
3332
import Development.IDE.LSP.Server
34-
import Development.IDE.Plugin hiding (pluginRules)
35-
import Development.IDE.Types.Diagnostics as D
36-
import Development.IDE.Types.Logger
37-
import Development.Shake hiding ( Diagnostic, command )
3833
import GHC.Generics
3934
import Ide.Plugin.Config
4035
import Ide.Plugin.Formatter

src/Ide/Plugin/Brittany.hs

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import Data.Coerce
77
import Data.Semigroup
88
import Data.Text (Text)
99
import qualified Data.Text as T
10-
import Development.IDE.Types.Location
10+
import Development.IDE
1111
import Language.Haskell.Brittany
1212
import Language.Haskell.LSP.Types as J
1313
import qualified Language.Haskell.LSP.Types.Lens as J

src/Ide/Plugin/Eval.hs

+7-29
Original file line numberDiff line numberDiff line change
@@ -41,17 +41,10 @@ import Data.String (IsString (fromString))
4141
import Data.Text (Text)
4242
import qualified Data.Text as T
4343
import Data.Time (getCurrentTime)
44-
import Development.IDE.Core.Rules (runAction)
45-
import Development.IDE.Core.RuleTypes (GetModSummary (..),
46-
GhcSession (..))
47-
import Development.IDE.Core.Shake (use_)
48-
import Development.IDE.GHC.Util (evalGhcEnv, hscEnv,
49-
textToStringBuffer)
50-
import Development.IDE.Types.Location (toNormalizedFilePath',
51-
uriToFilePath')
44+
import Development.IDE
5245
import DynamicLoading (initializePlugins)
5346
import DynFlags (targetPlatform)
54-
import GHC (Ghc, TcRnExprMode(..), DynFlags, ExecResult (..), GeneralFlag (Opt_IgnoreHpcChanges, Opt_IgnoreOptimChanges, Opt_ImplicitImportQualified),
47+
import Development.IDE.GHC.Compat (Ghc, TcRnExprMode(..), DynFlags, ExecResult (..), GeneralFlag (Opt_IgnoreHpcChanges, Opt_IgnoreOptimChanges, Opt_ImplicitImportQualified),
5548
GhcLink (LinkInMemory),
5649
GhcMode (CompManager),
5750
HscTarget (HscInterpreted),
@@ -179,25 +172,10 @@ runEvalCmd lsp state EvalParams {..} = response' $ do
179172
contents <- liftIO $ getVirtualFileFunc lsp $ toNormalizedUri _uri
180173
text <- handleMaybe "contents" $ virtualFileText <$> contents
181174

182-
{- Note: GhcSessionDeps
183-
184-
Depending on GhcSession means we do need to reload all the module
185-
dependencies in the GHC session(from interface files, hopefully).
186-
187-
The GhcSessionDeps dependency would allow us to reuse a GHC session preloaded
188-
with all the dependencies. Unfortunately, the ModSummary objects that
189-
GhcSessionDeps puts in the GHC session are not suitable for reuse since they
190-
clear out the timestamps; this is done to avoid internal ghcide bugs and
191-
can probably be relaxed so that plugins like Eval can reuse them. Once that's
192-
done, we want to switch back to GhcSessionDeps:
193-
194-
-- https://github.com/digital-asset/ghcide/pull/694
195-
196-
-}
197175
session <-
198176
liftIO $
199177
runAction "runEvalCmd.ghcSession" state $
200-
use_ GhcSession $ -- See the note on GhcSessionDeps
178+
use_ GhcSessionDeps $
201179
toNormalizedFilePath' $
202180
fp
203181

@@ -316,15 +294,15 @@ evalGhciLikeCmd cmd arg = do
316294
(ty, kind) <- typeKind True $ T.unpack input
317295
pure
318296
$ Just
319-
$ T.unlines
297+
$ T.unlines
320298
$ map ("-- " <>)
321299
[ input <> " :: " <> tppr kind
322300
, "= " <> tppr ty
323-
]
301+
]
324302
"type" -> do
325303
let (emod, expr) = parseExprMode arg
326304
ty <- exprType emod $ T.unpack expr
327-
pure $ Just $
305+
pure $ Just $
328306
"-- " <> expr <> " :: " <> tppr ty <> "\n"
329307
_ -> E.throw $ GhciLikeCmdNotImplemented cmd arg
330308

@@ -346,7 +324,7 @@ instance Show GhciLikeCmdException where
346324
showsPrec _ GhciLikeCmdNotImplemented{..} =
347325
showString "unknown command '" .
348326
showString (T.unpack ghciCmdName) . showChar '\''
349-
327+
350328
instance E.Exception GhciLikeCmdException
351329

352330
parseGhciLikeCmd :: Text -> Maybe (Text, Text)

src/Ide/Plugin/Example.hs

+4-10
Original file line numberDiff line numberDiff line change
@@ -23,21 +23,15 @@ import qualified Data.HashSet as HashSet
2323
import Data.Hashable
2424
import qualified Data.Text as T
2525
import Data.Typeable
26-
import Development.IDE.Core.OfInterest
27-
import Development.IDE.Core.RuleTypes
28-
import Development.IDE.Core.Rules
29-
import Development.IDE.Core.Service
30-
import Development.IDE.Core.Shake
31-
import Development.IDE.Types.Diagnostics as D
32-
import Development.IDE.Types.Location
33-
import Development.IDE.Types.Logger
34-
import Development.Shake hiding ( Diagnostic )
26+
import Development.IDE as D
27+
import Development.IDE.GHC.Compat (ParsedModule(ParsedModule))
28+
import Development.IDE.Core.Rules (useE)
29+
import Development.IDE.Core.Shake (getDiagnostics, getHiddenDiagnostics)
3530
import GHC.Generics
3631
import Ide.Plugin
3732
import Ide.Types
3833
import Language.Haskell.LSP.Types
3934
import Text.Regex.TDFA.Text()
40-
import Development.IDE.GHC.Compat (ParsedModule(ParsedModule))
4135

4236
-- ---------------------------------------------------------------------
4337

src/Ide/Plugin/Example2.hs

+2-8
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ module Ide.Plugin.Example2
1313
descriptor
1414
) where
1515

16-
import Control.DeepSeq ( NFData )
16+
import Control.DeepSeq (NFData)
1717
import Control.Monad.Trans.Maybe
1818
import Data.Aeson
1919
import Data.Binary
@@ -23,15 +23,9 @@ import qualified Data.HashSet as HashSet
2323
import Data.Hashable
2424
import qualified Data.Text as T
2525
import Data.Typeable
26-
import Development.IDE.Core.OfInterest
27-
import Development.IDE.Core.RuleTypes
26+
import Development.IDE as D
2827
import Development.IDE.Core.Rules
29-
import Development.IDE.Core.Service
3028
import Development.IDE.Core.Shake
31-
import Development.IDE.Types.Diagnostics as D
32-
import Development.IDE.Types.Location
33-
import Development.IDE.Types.Logger
34-
import Development.Shake hiding ( Diagnostic )
3529
import GHC.Generics
3630
import Ide.Plugin
3731
import Ide.Types

src/Ide/Plugin/Floskell.hs

+1-2
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,7 @@ where
1414
import qualified Data.ByteString.Lazy as BS
1515
import qualified Data.Text as T
1616
import qualified Data.Text.Encoding as T
17-
import Development.IDE.Types.Diagnostics as D
18-
import Development.IDE.Types.Location
17+
import Development.IDE as D
1918
import Floskell
2019
import Ide.Plugin.Formatter
2120
import Ide.Types

src/Ide/Plugin/Formatter.hs

+1-11
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,10 @@ where
1717

1818
import qualified Data.Map as Map
1919
import qualified Data.Text as T
20-
import Development.IDE.Core.FileStore
21-
import Development.IDE.Core.Rules
22-
import Development.IDE.Core.Shake
23-
-- import Development.IDE.LSP.Server
24-
-- import Development.IDE.Plugin
25-
import Development.IDE.Types.Diagnostics as D
26-
import Development.IDE.Types.Location
27-
-- import Development.Shake hiding ( Diagnostic )
28-
-- import Ide.Logger
20+
import Development.IDE
2921
import Ide.Types
30-
import Development.IDE.Types.Logger
3122
import Ide.Plugin.Config
3223
import qualified Language.Haskell.LSP.Core as LSP
33-
-- import Language.Haskell.LSP.Messages
3424
import Language.Haskell.LSP.Types
3525
import Text.Regex.TDFA.Text()
3626

src/Ide/Plugin/Fourmolu.hs

+1-6
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,7 @@ where
1313

1414
import Control.Exception
1515
import qualified Data.Text as T
16-
import Development.IDE.Core.Rules
17-
import Development.IDE.Core.RuleTypes (GhcSession (GhcSession))
18-
import Development.IDE.Core.Shake (use)
19-
import Development.IDE.GHC.Util (hscEnv)
20-
import Development.IDE.Types.Diagnostics as D
21-
import Development.IDE.Types.Location
16+
import Development.IDE as D
2217
import qualified DynFlags as D
2318
import qualified EnumSet as S
2419
import GHC

src/Ide/Plugin/GhcIde.hs

+3-4
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,11 @@ module Ide.Plugin.GhcIde
66
) where
77

88
import Data.Aeson
9-
import Development.IDE.Core.Service
9+
import Development.IDE
10+
import Development.IDE.Plugin.Completions
11+
import Development.IDE.Plugin.CodeAction
1012
import Development.IDE.LSP.HoverDefinition
1113
import Development.IDE.LSP.Outline
12-
import Development.IDE.Plugin.CodeAction
13-
import Development.IDE.Plugin.Completions
14-
import Development.IDE.Types.Logger
1514
import Ide.Plugin
1615
import Ide.Types
1716
import Language.Haskell.LSP.Types

src/Ide/Plugin/ImportLens.hs

+1-8
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,8 @@ import Data.Map (Map)
2424
import qualified Data.Map.Strict as Map
2525
import Data.Maybe (catMaybes, fromMaybe)
2626
import qualified Data.Text as T
27-
import Development.IDE.Core.RuleTypes (GhcSessionDeps (GhcSessionDeps),
28-
TcModuleResult (tmrModule),
29-
TypeCheck (TypeCheck))
30-
import Development.IDE.Core.Shake (use, IdeState (..))
27+
import Development.IDE
3128
import Development.IDE.GHC.Compat
32-
import Development.IDE.GHC.Error (realSpan, realSrcSpanToRange)
33-
import Development.IDE.GHC.Util (HscEnvEq, hscEnv, prettyPrint)
3429
import GHC.Generics (Generic)
3530
import Ide.Plugin
3631
import Ide.Types
@@ -40,8 +35,6 @@ import RnNames (findImportUsage,
4035
getMinimalImports)
4136
import TcRnMonad (initTcWithGbl)
4237
import TcRnTypes (TcGblEnv (tcg_used_gres))
43-
import Development.IDE.Core.Service (runAction)
44-
import Development.Shake (Action)
4538

4639
importCommandId :: CommandId
4740
importCommandId = "ImportLensCommand"

src/Ide/Plugin/Ormolu.hs

+1-6
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,7 @@ where
1313

1414
import Control.Exception
1515
import qualified Data.Text as T
16-
import Development.IDE.Core.Rules
17-
import Development.IDE.Core.RuleTypes (GhcSession (GhcSession))
18-
import Development.IDE.Core.Shake (use)
19-
import Development.IDE.GHC.Util (hscEnv)
20-
import Development.IDE.Types.Diagnostics as D
21-
import Development.IDE.Types.Location
16+
import Development.IDE
2217
import qualified DynFlags as D
2318
import qualified EnumSet as S
2419
import GHC

src/Ide/Plugin/Pragmas.hs

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import Ide.Types
1818
import qualified GHC.Generics as Generics
1919
import qualified Language.Haskell.LSP.Types as J
2020
import qualified Language.Haskell.LSP.Types.Lens as J
21-
import Development.IDE.Types.Diagnostics as D
21+
import Development.IDE as D
2222
import Language.Haskell.LSP.Types
2323

2424
-- ---------------------------------------------------------------------

src/Ide/Plugin/Retrie.hs

+3-21
Original file line numberDiff line numberDiff line change
@@ -40,27 +40,9 @@ import Data.String (IsString (fromString))
4040
import qualified Data.Text as T
4141
import qualified Data.Text.IO as T
4242
import Data.Typeable (Typeable)
43-
import Development.IDE.Core.FileStore (getFileContents)
44-
import Development.IDE.Core.Rules
45-
import Development.IDE.Core.RuleTypes as Ghcide (GetModIface (..),
46-
GetModSummary (..),
47-
GhcSessionDeps (..),
48-
HiFileResult (..),
49-
TypeCheck (..),
50-
tmrModule)
51-
import Development.IDE.Core.Shake (IdeRule,
52-
IdeState (shakeExtras),
53-
ideLogger, knownFilesVar,
54-
runIdeAction, use,
55-
useWithStaleFast, use_)
56-
import Development.IDE.GHC.Error (isInsideSrcSpan,
57-
realSrcSpanToRange)
58-
import Development.IDE.GHC.Util (hscEnv, prettyPrint, runGhcEnv)
59-
import Development.IDE.Types.Location
60-
import Development.IDE.Types.Logger (Logger (logPriority),
61-
Priority (..))
62-
import Development.Shake (RuleResult)
63-
import GHC (GenLocated (L), GhcRn,
43+
import Development.IDE
44+
import Development.IDE.Core.Shake (ShakeExtras(knownFilesVar))
45+
import Development.IDE.GHC.Compat (GenLocated (L), GhcRn,
6446
HsBindLR (FunBind),
6547
HsGroup (..),
6648
HsValBindsLR (..), HscEnv, IdP,

src/Ide/Types.hs

+1-3
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,7 @@ import qualified Data.Map as Map
3030
import qualified Data.Set as S
3131
import Data.String
3232
import qualified Data.Text as T
33-
import Development.IDE.Core.Rules
34-
import Development.IDE.Types.Location
35-
import Development.Shake
33+
import Development.IDE
3634
import Ide.Plugin.Config
3735
import qualified Language.Haskell.LSP.Core as LSP
3836
import Language.Haskell.LSP.Types

0 commit comments

Comments
 (0)