mirror of
https://github.com/haskell/haskell-language-server.git
synced 2024-09-19 04:37:25 +03:00
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:
parent
e8bdd77921
commit
1d1ab3bad0
@ -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
2
ghcide
@ -1 +1 @@
|
||||
Subproject commit 078e3d3c0d319f83841ccbcdc60ff5f0e243f6be
|
||||
Subproject commit 96cf8c53d0bdc16d3d2cd0559b74962593ce6dc5
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
@ -316,15 +294,15 @@ evalGhciLikeCmd cmd arg = do
|
||||
(ty, kind) <- typeKind True $ T.unpack input
|
||||
pure
|
||||
$ Just
|
||||
$ T.unlines
|
||||
$ T.unlines
|
||||
$ map ("-- " <>)
|
||||
[ input <> " :: " <> tppr kind
|
||||
, "= " <> tppr ty
|
||||
]
|
||||
]
|
||||
"type" -> do
|
||||
let (emod, expr) = parseExprMode arg
|
||||
ty <- exprType emod $ T.unpack expr
|
||||
pure $ Just $
|
||||
pure $ Just $
|
||||
"-- " <> expr <> " :: " <> tppr ty <> "\n"
|
||||
_ -> E.throw $ GhciLikeCmdNotImplemented cmd arg
|
||||
|
||||
@ -346,7 +324,7 @@ instance Show GhciLikeCmdException where
|
||||
showsPrec _ GhciLikeCmdNotImplemented{..} =
|
||||
showString "unknown command '" .
|
||||
showString (T.unpack ghciCmdName) . showChar '\''
|
||||
|
||||
|
||||
instance E.Exception GhciLikeCmdException
|
||||
|
||||
parseGhciLikeCmd :: Text -> Maybe (Text, Text)
|
||||
|
@ -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))
|
||||
|
||||
-- ---------------------------------------------------------------------
|
||||
|
||||
|
@ -13,7 +13,7 @@ module Ide.Plugin.Example2
|
||||
descriptor
|
||||
) where
|
||||
|
||||
import Control.DeepSeq ( NFData )
|
||||
import Control.DeepSeq (NFData)
|
||||
import Control.Monad.Trans.Maybe
|
||||
import Data.Aeson
|
||||
import Data.Binary
|
||||
@ -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
|
||||
|
@ -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
|
||||
|
@ -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()
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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"
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
-- ---------------------------------------------------------------------
|
||||
|
@ -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,
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user