packages feed

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]