hls-explicit-imports-plugin 1.0.0.0 → 1.0.0.1
raw patch · 2 files changed
+71/−67 lines, 2 filesdep ~ghcidedep ~hls-plugin-apiPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: ghcide, hls-plugin-api
API changes (from Hackage documentation)
Files
hls-explicit-imports-plugin.cabal view
@@ -1,33 +1,36 @@-cabal-version: 2.2-name: hls-explicit-imports-plugin-version: 1.0.0.0-synopsis: Explicit imports plugin for Haskell Language Server-license: Apache-2.0-license-file: LICENSE-author: Pepe Iborra-maintainer: pepeiborra@gmail.com-category: Development-build-type: Simple+cabal-version: 2.2+name: hls-explicit-imports-plugin+version: 1.0.0.1+synopsis: Explicit imports plugin for Haskell Language Server+license: Apache-2.0+license-file: LICENSE+author: Pepe Iborra+maintainer: pepeiborra@gmail.com+category: Development+build-type: Simple extra-source-files:- LICENSE include/ghc-api-version.h+ LICENSE library- exposed-modules: Ide.Plugin.ExplicitImports- hs-source-dirs: src- build-depends: aeson- , base >=4.12 && <5- , containers- , deepseq- , lsp-types- , lsp- , hls-plugin-api ^>= 1.0.0.0- , ghc- , ghcide ^>= 1.0.0.0- , shake- , text- , unordered-containers+ exposed-modules: Ide.Plugin.ExplicitImports+ hs-source-dirs: src+ build-depends:+ , aeson+ , base >=4.12 && <5+ , containers+ , deepseq+ , ghc+ , ghcide ^>=1.2.0.0+ , hls-plugin-api ^>=1.1+ , lsp+ , lsp-types+ , shake+ , text+ , unordered-containers - default-language: Haskell2010- include-dirs: include- default-extensions: DataKinds, TypeOperators+ default-language: Haskell2010+ include-dirs: include+ default-extensions:+ DataKinds+ TypeOperators
src/Ide/Plugin/ExplicitImports.hs view
@@ -1,43 +1,42 @@-{-# LANGUAGE CPP #-}-{-# LANGUAGE DeriveAnyClass #-}-{-# LANGUAGE DeriveGeneric #-}-{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE CPP #-}+{-# LANGUAGE DeriveAnyClass #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-} {-# LANGUAGE DuplicateRecordFields #-}-{-# LANGUAGE NamedFieldPuns #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE RecordWildCards #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE TypeFamilies #-} #include "ghc-api-version.h" module Ide.Plugin.ExplicitImports (descriptor) where -import Control.DeepSeq-import Control.Monad.IO.Class-import Data.Aeson (ToJSON (toJSON), Value (Null))-import Data.Aeson.Types (FromJSON)-import qualified Data.HashMap.Strict as HashMap-import Data.IORef (readIORef)-import qualified Data.Map.Strict as Map-import Data.Maybe (catMaybes, fromMaybe)-import qualified Data.Text as T-import Development.IDE-import Development.IDE.Core.PositionMapping-import Development.IDE.GHC.Compat-import Development.Shake.Classes-import GHC.Generics (Generic)-import Ide.PluginUtils ( mkLspCommand )-import Ide.Types-import Language.LSP.Types-import Language.LSP.Server-import PrelNames (pRELUDE)-import RnNames- ( findImportUsage,- getMinimalImports,- )-import TcRnMonad (initTcWithGbl)-import TcRnTypes (TcGblEnv (tcg_used_gres))+import Control.DeepSeq+import Control.Monad.IO.Class+import Data.Aeson (ToJSON (toJSON),+ Value (Null))+import Data.Aeson.Types (FromJSON)+import qualified Data.HashMap.Strict as HashMap+import Data.IORef (readIORef)+import qualified Data.Map.Strict as Map+import Data.Maybe (catMaybes, fromMaybe)+import qualified Data.Text as T+import Development.IDE+import Development.IDE.Core.PositionMapping+import Development.IDE.GHC.Compat+import Development.Shake.Classes+import GHC.Generics (Generic)+import Ide.PluginUtils (mkLspCommand)+import Ide.Types+import Language.LSP.Server+import Language.LSP.Types+import PrelNames (pRELUDE)+import RnNames (findImportUsage,+ getMinimalImports)+import TcRnMonad (initTcWithGbl)+import TcRnTypes (TcGblEnv (tcg_used_gres)) importCommandId :: CommandId importCommandId = "ImportLensCommand"@@ -46,7 +45,7 @@ descriptor :: PluginId -> PluginDescriptor IdeState descriptor plId = (defaultPluginDescriptor plId)- { + { -- This plugin provides a command handler pluginCommands = [importLensCommand], -- This plugin defines a new rule@@ -140,12 +139,14 @@ _title = "Make all imports explicit" _kind = Just CodeActionQuickFix _command = Nothing- _edit = Just WorkspaceEdit {_changes, _documentChanges}+ _edit = Just WorkspaceEdit {_changes, _documentChanges, _changeAnnotations} _changes = Just $ HashMap.singleton _uri $ List edits _documentChanges = Nothing _diagnostics = Nothing _isPreferred = Nothing _disabled = Nothing+ _xdata = Nothing+ _changeAnnotations = Nothing return $ Right $ List [caExplicitImports | not (null edits)] | otherwise = return $ Right $ List []@@ -233,13 +234,13 @@ -- | Given an import declaration, generate a code lens unless it has an -- explicit import list or it's qualified generateLens :: PluginId -> Uri -> TextEdit -> IO (Maybe CodeLens)-generateLens pId uri importEdit@TextEdit {_range} = do+generateLens pId uri importEdit@TextEdit {_range, _newText} = do -- The title of the command is just the minimal explicit import decl- let title = _newText importEdit+ let title = _newText -- the code lens has no extra data _xdata = Nothing -- an edit that replaces the whole declaration with the explicit one- edit = WorkspaceEdit (Just editsMap) Nothing+ edit = WorkspaceEdit (Just editsMap) Nothing Nothing editsMap = HashMap.fromList [(uri, List [importEdit])] -- the command argument is simply the edit _arguments = Just [toJSON $ ImportCommandParams edit]