Rebase on ghcide HEAD (#378)

* Rebase on top of ghcide HEAD

* use Development.IDE to trim imports

* Fix Eval plugin to use GhcSessionDeps
This commit is contained in:
Pepe Iborra 2020-09-06 19:54:18 +01:00 committed by GitHub
parent e8bdd77921
commit 1d1ab3bad0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
16 changed files with 30 additions and 118 deletions

View File

@ -186,7 +186,7 @@ runLspMode lspArgs@LspArguments {..} = do
hPutStrLn stderr $ " in directory: " <> dir
hPutStrLn stderr "If you are seeing this in a terminal, you probably should have run ghcide WITHOUT the --lsp option!"
runLanguageServer options (pluginHandler plugins) getInitialConfig getConfigFromNotification $ \getLspId event vfs caps wProg wIndefProg _getConfig -> do
runLanguageServer options (pluginHandler plugins) getInitialConfig getConfigFromNotification $ \getLspId event vfs caps wProg wIndefProg _getConfig _rootPath -> do
t <- t
hPutStrLn stderr $ "Started LSP server in " ++ showDuration t
sessionLoader <- loadSession dir

2
ghcide

@ -1 +1 @@
Subproject commit 078e3d3c0d319f83841ccbcdc60ff5f0e243f6be
Subproject commit 96cf8c53d0bdc16d3d2cd0559b74962593ce6dc5

View File

@ -28,13 +28,8 @@ import qualified Data.List as List
import qualified Data.Map as Map
import Data.Maybe
import qualified Data.Text as T
import Development.IDE.Core.Rules
import Development.IDE.Core.Shake
import Development.IDE hiding (pluginRules)
import Development.IDE.LSP.Server
import Development.IDE.Plugin hiding (pluginRules)
import Development.IDE.Types.Diagnostics as D
import Development.IDE.Types.Logger
import Development.Shake hiding ( Diagnostic, command )
import GHC.Generics
import Ide.Plugin.Config
import Ide.Plugin.Formatter

View File

@ -7,7 +7,7 @@ import Data.Coerce
import Data.Semigroup
import Data.Text (Text)
import qualified Data.Text as T
import Development.IDE.Types.Location
import Development.IDE
import Language.Haskell.Brittany
import Language.Haskell.LSP.Types as J
import qualified Language.Haskell.LSP.Types.Lens as J

View File

@ -41,17 +41,10 @@ import Data.String (IsString (fromString))
import Data.Text (Text)
import qualified Data.Text as T
import Data.Time (getCurrentTime)
import Development.IDE.Core.Rules (runAction)
import Development.IDE.Core.RuleTypes (GetModSummary (..),
GhcSession (..))
import Development.IDE.Core.Shake (use_)
import Development.IDE.GHC.Util (evalGhcEnv, hscEnv,
textToStringBuffer)
import Development.IDE.Types.Location (toNormalizedFilePath',
uriToFilePath')
import Development.IDE
import DynamicLoading (initializePlugins)
import DynFlags (targetPlatform)
import GHC (Ghc, TcRnExprMode(..), DynFlags, ExecResult (..), GeneralFlag (Opt_IgnoreHpcChanges, Opt_IgnoreOptimChanges, Opt_ImplicitImportQualified),
import Development.IDE.GHC.Compat (Ghc, TcRnExprMode(..), DynFlags, ExecResult (..), GeneralFlag (Opt_IgnoreHpcChanges, Opt_IgnoreOptimChanges, Opt_ImplicitImportQualified),
GhcLink (LinkInMemory),
GhcMode (CompManager),
HscTarget (HscInterpreted),
@ -179,25 +172,10 @@ runEvalCmd lsp state EvalParams {..} = response' $ do
contents <- liftIO $ getVirtualFileFunc lsp $ toNormalizedUri _uri
text <- handleMaybe "contents" $ virtualFileText <$> contents
{- Note: GhcSessionDeps
Depending on GhcSession means we do need to reload all the module
dependencies in the GHC session(from interface files, hopefully).
The GhcSessionDeps dependency would allow us to reuse a GHC session preloaded
with all the dependencies. Unfortunately, the ModSummary objects that
GhcSessionDeps puts in the GHC session are not suitable for reuse since they
clear out the timestamps; this is done to avoid internal ghcide bugs and
can probably be relaxed so that plugins like Eval can reuse them. Once that's
done, we want to switch back to GhcSessionDeps:
-- https://github.com/digital-asset/ghcide/pull/694
-}
session <-
liftIO $
runAction "runEvalCmd.ghcSession" state $
use_ GhcSession $ -- See the note on GhcSessionDeps
use_ GhcSessionDeps $
toNormalizedFilePath' $
fp

View File

@ -23,21 +23,15 @@ import qualified Data.HashSet as HashSet
import Data.Hashable
import qualified Data.Text as T
import Data.Typeable
import Development.IDE.Core.OfInterest
import Development.IDE.Core.RuleTypes
import Development.IDE.Core.Rules
import Development.IDE.Core.Service
import Development.IDE.Core.Shake
import Development.IDE.Types.Diagnostics as D
import Development.IDE.Types.Location
import Development.IDE.Types.Logger
import Development.Shake hiding ( Diagnostic )
import Development.IDE as D
import Development.IDE.GHC.Compat (ParsedModule(ParsedModule))
import Development.IDE.Core.Rules (useE)
import Development.IDE.Core.Shake (getDiagnostics, getHiddenDiagnostics)
import GHC.Generics
import Ide.Plugin
import Ide.Types
import Language.Haskell.LSP.Types
import Text.Regex.TDFA.Text()
import Development.IDE.GHC.Compat (ParsedModule(ParsedModule))
-- ---------------------------------------------------------------------

View File

@ -23,15 +23,9 @@ import qualified Data.HashSet as HashSet
import Data.Hashable
import qualified Data.Text as T
import Data.Typeable
import Development.IDE.Core.OfInterest
import Development.IDE.Core.RuleTypes
import Development.IDE as D
import Development.IDE.Core.Rules
import Development.IDE.Core.Service
import Development.IDE.Core.Shake
import Development.IDE.Types.Diagnostics as D
import Development.IDE.Types.Location
import Development.IDE.Types.Logger
import Development.Shake hiding ( Diagnostic )
import GHC.Generics
import Ide.Plugin
import Ide.Types

View File

@ -14,8 +14,7 @@ where
import qualified Data.ByteString.Lazy as BS
import qualified Data.Text as T
import qualified Data.Text.Encoding as T
import Development.IDE.Types.Diagnostics as D
import Development.IDE.Types.Location
import Development.IDE as D
import Floskell
import Ide.Plugin.Formatter
import Ide.Types

View File

@ -17,20 +17,10 @@ where
import qualified Data.Map as Map
import qualified Data.Text as T
import Development.IDE.Core.FileStore
import Development.IDE.Core.Rules
import Development.IDE.Core.Shake
-- import Development.IDE.LSP.Server
-- import Development.IDE.Plugin
import Development.IDE.Types.Diagnostics as D
import Development.IDE.Types.Location
-- import Development.Shake hiding ( Diagnostic )
-- import Ide.Logger
import Development.IDE
import Ide.Types
import Development.IDE.Types.Logger
import Ide.Plugin.Config
import qualified Language.Haskell.LSP.Core as LSP
-- import Language.Haskell.LSP.Messages
import Language.Haskell.LSP.Types
import Text.Regex.TDFA.Text()

View File

@ -13,12 +13,7 @@ where
import Control.Exception
import qualified Data.Text as T
import Development.IDE.Core.Rules
import Development.IDE.Core.RuleTypes (GhcSession (GhcSession))
import Development.IDE.Core.Shake (use)
import Development.IDE.GHC.Util (hscEnv)
import Development.IDE.Types.Diagnostics as D
import Development.IDE.Types.Location
import Development.IDE as D
import qualified DynFlags as D
import qualified EnumSet as S
import GHC

View File

@ -6,12 +6,11 @@ module Ide.Plugin.GhcIde
) where
import Data.Aeson
import Development.IDE.Core.Service
import Development.IDE
import Development.IDE.Plugin.Completions
import Development.IDE.Plugin.CodeAction
import Development.IDE.LSP.HoverDefinition
import Development.IDE.LSP.Outline
import Development.IDE.Plugin.CodeAction
import Development.IDE.Plugin.Completions
import Development.IDE.Types.Logger
import Ide.Plugin
import Ide.Types
import Language.Haskell.LSP.Types

View File

@ -24,13 +24,8 @@ import Data.Map (Map)
import qualified Data.Map.Strict as Map
import Data.Maybe (catMaybes, fromMaybe)
import qualified Data.Text as T
import Development.IDE.Core.RuleTypes (GhcSessionDeps (GhcSessionDeps),
TcModuleResult (tmrModule),
TypeCheck (TypeCheck))
import Development.IDE.Core.Shake (use, IdeState (..))
import Development.IDE
import Development.IDE.GHC.Compat
import Development.IDE.GHC.Error (realSpan, realSrcSpanToRange)
import Development.IDE.GHC.Util (HscEnvEq, hscEnv, prettyPrint)
import GHC.Generics (Generic)
import Ide.Plugin
import Ide.Types
@ -40,8 +35,6 @@ import RnNames (findImportUsage,
getMinimalImports)
import TcRnMonad (initTcWithGbl)
import TcRnTypes (TcGblEnv (tcg_used_gres))
import Development.IDE.Core.Service (runAction)
import Development.Shake (Action)
importCommandId :: CommandId
importCommandId = "ImportLensCommand"

View File

@ -13,12 +13,7 @@ where
import Control.Exception
import qualified Data.Text as T
import Development.IDE.Core.Rules
import Development.IDE.Core.RuleTypes (GhcSession (GhcSession))
import Development.IDE.Core.Shake (use)
import Development.IDE.GHC.Util (hscEnv)
import Development.IDE.Types.Diagnostics as D
import Development.IDE.Types.Location
import Development.IDE
import qualified DynFlags as D
import qualified EnumSet as S
import GHC

View File

@ -18,7 +18,7 @@ import Ide.Types
import qualified GHC.Generics as Generics
import qualified Language.Haskell.LSP.Types as J
import qualified Language.Haskell.LSP.Types.Lens as J
import Development.IDE.Types.Diagnostics as D
import Development.IDE as D
import Language.Haskell.LSP.Types
-- ---------------------------------------------------------------------

View File

@ -40,27 +40,9 @@ import Data.String (IsString (fromString))
import qualified Data.Text as T
import qualified Data.Text.IO as T
import Data.Typeable (Typeable)
import Development.IDE.Core.FileStore (getFileContents)
import Development.IDE.Core.Rules
import Development.IDE.Core.RuleTypes as Ghcide (GetModIface (..),
GetModSummary (..),
GhcSessionDeps (..),
HiFileResult (..),
TypeCheck (..),
tmrModule)
import Development.IDE.Core.Shake (IdeRule,
IdeState (shakeExtras),
ideLogger, knownFilesVar,
runIdeAction, use,
useWithStaleFast, use_)
import Development.IDE.GHC.Error (isInsideSrcSpan,
realSrcSpanToRange)
import Development.IDE.GHC.Util (hscEnv, prettyPrint, runGhcEnv)
import Development.IDE.Types.Location
import Development.IDE.Types.Logger (Logger (logPriority),
Priority (..))
import Development.Shake (RuleResult)
import GHC (GenLocated (L), GhcRn,
import Development.IDE
import Development.IDE.Core.Shake (ShakeExtras(knownFilesVar))
import Development.IDE.GHC.Compat (GenLocated (L), GhcRn,
HsBindLR (FunBind),
HsGroup (..),
HsValBindsLR (..), HscEnv, IdP,

View File

@ -30,9 +30,7 @@ import qualified Data.Map as Map
import qualified Data.Set as S
import Data.String
import qualified Data.Text as T
import Development.IDE.Core.Rules
import Development.IDE.Types.Location
import Development.Shake
import Development.IDE
import Ide.Plugin.Config
import qualified Language.Haskell.LSP.Core as LSP
import Language.Haskell.LSP.Types