packages feed

hls-explicit-record-fields-plugin 2.0.0.1 → 2.1.0.0

raw patch · 2 files changed

+79/−82 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-record-fields-plugin.cabal view
@@ -1,6 +1,6 @@ cabal-version:      3.0 name:               hls-explicit-record-fields-plugin-version:            2.0.0.1+version:            2.1.0.0 synopsis:           Explicit record fields plugin for Haskell Language Server description:   Please see the README on GitHub at <https://github.com/haskell/haskell-language-server#readme>@@ -29,8 +29,8 @@     -- other-extensions:     build-depends:       , base                  >=4.12 && <5-      , ghcide                == 2.0.0.1-      , hls-plugin-api        == 2.0.0.1+      , ghcide                == 2.1.0.0+      , hls-plugin-api        == 2.1.0.0       , lsp       , lens       , hls-graph
src/Ide/Plugin/ExplicitFields.hs view
@@ -15,71 +15,71 @@   , Log   ) where -import           Control.Lens                    ((^.))-import           Control.Monad.IO.Class          (MonadIO, liftIO)-import           Control.Monad.Trans.Except      (ExceptT)-import           Data.Functor                    ((<&>))-import           Data.Generics                   (GenericQ, everything, extQ,-                                                  mkQ)-import qualified Data.HashMap.Strict             as HashMap-import           Data.Maybe                      (fromMaybe, isJust,-                                                  listToMaybe, maybeToList)-import           Data.Text                       (Text)-import           Development.IDE                 (IdeState, NormalizedFilePath,-                                                  Pretty (..), Recorder (..),-                                                  Rules, WithPriority (..),-                                                  realSrcSpanToRange)-import           Development.IDE.Core.Rules      (runAction)-import           Development.IDE.Core.RuleTypes  (TcModuleResult (..),-                                                  TypeCheck (..))-import           Development.IDE.Core.Shake      (define, use)-import qualified Development.IDE.Core.Shake      as Shake-import           Development.IDE.GHC.Compat      (HsConDetails (RecCon),-                                                  HsRecFields (..), LPat,-                                                  Outputable, getLoc, recDotDot,-                                                  unLoc)-import           Development.IDE.GHC.Compat.Core (Extension (NamedFieldPuns),-                                                  GhcPass,-                                                  HsExpr (RecordCon, rcon_flds),-                                                  HsRecField, LHsExpr, LocatedA,-                                                  Name, Pass (..), Pat (..),-                                                  RealSrcSpan, UniqFM,-                                                  conPatDetails, emptyUFM,-                                                  hfbPun, hfbRHS, hs_valds,-                                                  lookupUFM, mapConPatDetail,-                                                  mapLoc, pattern RealSrcSpan,-                                                  plusUFM_C, ufmToIntMap,-                                                  unitUFM)-import           Development.IDE.GHC.Util        (getExtensions,-                                                  printOutputable)-import           Development.IDE.Graph           (RuleResult)-import           Development.IDE.Graph.Classes   (Hashable, NFData (rnf))-import           Development.IDE.Spans.Pragmas   (NextPragmaInfo (..),-                                                  getFirstPragma,-                                                  insertNewPragma)-import           Development.IDE.Types.Logger    (Priority (..), cmapWithPrio,-                                                  logWith, (<+>))-import           GHC.Generics                    (Generic)-import           Ide.Plugin.RangeMap             (RangeMap)-import qualified Ide.Plugin.RangeMap             as RangeMap-import           Ide.PluginUtils                 (getNormalizedFilePath,-                                                  handleMaybeM, pluginResponse)-import           Ide.Types                       (PluginDescriptor (..),-                                                  PluginId (..),-                                                  PluginMethodHandler,-                                                  defaultPluginDescriptor,-                                                  mkPluginHandler)-import           Language.LSP.Types              (CodeAction (..),-                                                  CodeActionKind (CodeActionRefactorRewrite),-                                                  CodeActionParams (..),-                                                  Command, List (..),-                                                  Method (..), SMethod (..),-                                                  TextEdit (..),-                                                  WorkspaceEdit (WorkspaceEdit),-                                                  fromNormalizedUri,-                                                  normalizedFilePathToUri,-                                                  type (|?) (InR))-import qualified Language.LSP.Types.Lens         as L+import           Control.Lens                     ((^.))+import           Control.Monad.IO.Class           (MonadIO, liftIO)+import           Control.Monad.Trans.Except       (ExceptT, runExceptT)+import           Data.Functor                     ((<&>))+import           Data.Generics                    (GenericQ, everything, extQ,+                                                   mkQ)+import qualified Data.Map                         as Map+import           Data.Maybe                       (fromMaybe, isJust,+                                                   listToMaybe, maybeToList)+import           Data.Text                        (Text)+import           Development.IDE                  (IdeState, NormalizedFilePath,+                                                   Pretty (..), Recorder (..),+                                                   Rules, WithPriority (..),+                                                   realSrcSpanToRange)+import           Development.IDE.Core.PluginUtils+import           Development.IDE.Core.RuleTypes   (TcModuleResult (..),+                                                   TypeCheck (..))+import           Development.IDE.Core.Shake       (define, use)+import qualified Development.IDE.Core.Shake       as Shake+import           Development.IDE.GHC.Compat       (HsConDetails (RecCon),+                                                   HsRecFields (..), LPat,+                                                   Outputable, getLoc,+                                                   recDotDot, unLoc)+import           Development.IDE.GHC.Compat.Core  (Extension (NamedFieldPuns),+                                                   GhcPass,+                                                   HsExpr (RecordCon, rcon_flds),+                                                   HsRecField, LHsExpr,+                                                   LocatedA, Name, Pass (..),+                                                   Pat (..), RealSrcSpan,+                                                   UniqFM, conPatDetails,+                                                   emptyUFM, hfbPun, hfbRHS,+                                                   hs_valds, lookupUFM,+                                                   mapConPatDetail, mapLoc,+                                                   pattern RealSrcSpan,+                                                   plusUFM_C, ufmToIntMap,+                                                   unitUFM)+import           Development.IDE.GHC.Util         (getExtensions,+                                                   printOutputable)+import           Development.IDE.Graph            (RuleResult)+import           Development.IDE.Graph.Classes    (Hashable, NFData (rnf))+import           Development.IDE.Spans.Pragmas    (NextPragmaInfo (..),+                                                   getFirstPragma,+                                                   insertNewPragma)+import           GHC.Generics                     (Generic)+import           Ide.Logger                       (Priority (..), cmapWithPrio,+                                                   logWith, (<+>))+import           Ide.Plugin.Error                 (PluginError,+                                                   getNormalizedFilePathE)+import           Ide.Plugin.RangeMap              (RangeMap)+import qualified Ide.Plugin.RangeMap              as RangeMap+import           Ide.Types                        (PluginDescriptor (..),+                                                   PluginId (..),+                                                   PluginMethodHandler,+                                                   defaultPluginDescriptor,+                                                   mkPluginHandler)+import qualified Language.LSP.Protocol.Lens       as L+import           Language.LSP.Protocol.Message    (Method (..), SMethod (..))+import           Language.LSP.Protocol.Types      (CodeAction (..),+                                                   CodeActionKind (CodeActionKind_RefactorRewrite),+                                                   CodeActionParams (..),+                                                   Command, TextEdit (..),+                                                   WorkspaceEdit (WorkspaceEdit),+                                                   fromNormalizedUri,+                                                   normalizedFilePathToUri,+                                                   type (|?) (InL, InR))   data Log@@ -95,29 +95,29 @@  descriptor :: Recorder (WithPriority Log) -> PluginId -> PluginDescriptor IdeState descriptor recorder plId = (defaultPluginDescriptor plId)-  { pluginHandlers = mkPluginHandler STextDocumentCodeAction codeActionProvider+  { pluginHandlers = mkPluginHandler SMethod_TextDocumentCodeAction codeActionProvider   , pluginRules = collectRecordsRule recorder *> collectNamesRule   } -codeActionProvider :: PluginMethodHandler IdeState 'TextDocumentCodeAction-codeActionProvider ideState pId (CodeActionParams _ _ docId range _) = pluginResponse $ do-  nfp <- getNormalizedFilePath (docId ^. L.uri)+codeActionProvider :: PluginMethodHandler IdeState 'Method_TextDocumentCodeAction+codeActionProvider ideState pId (CodeActionParams _ _ docId range _) = do+  nfp <- getNormalizedFilePathE (docId ^. L.uri)   pragma <- getFirstPragma pId ideState nfp   CRR recMap exts <- collectRecords' ideState nfp   let actions = map (mkCodeAction nfp exts pragma) (RangeMap.filterByRange range recMap)-  pure $ List actions+  pure $ InL actions    where     mkCodeAction :: NormalizedFilePath -> [Extension] -> NextPragmaInfo -> RenderedRecordInfo -> Command |? CodeAction     mkCodeAction nfp exts pragma rec = InR CodeAction       { _title = mkCodeActionTitle exts-      , _kind = Just CodeActionRefactorRewrite+      , _kind = Just CodeActionKind_RefactorRewrite       , _diagnostics = Nothing       , _isPreferred = Nothing       , _disabled = Nothing       , _edit = Just $ mkWorkspaceEdit nfp edits       , _command = Nothing-      , _xdata = Nothing+      , _data_ = Nothing       }       where         edits = mkTextEdit rec : maybeToList pragmaEdit@@ -133,7 +133,7 @@     mkWorkspaceEdit :: NormalizedFilePath -> [TextEdit] -> WorkspaceEdit     mkWorkspaceEdit nfp edits = WorkspaceEdit changes Nothing Nothing       where-        changes = Just $ HashMap.singleton (fromNormalizedUri (normalizedFilePathToUri nfp)) (List edits)+        changes = Just $ Map.singleton (fromNormalizedUri (normalizedFilePathToUri nfp)) edits      mkCodeActionTitle :: [Extension] -> Text     mkCodeActionTitle exts =@@ -358,10 +358,7 @@       [ RecordInfoPat realSpan' (unLoc pat) | RealSrcSpan realSpan' _ <- [ getLoc pat ]] getRecPatterns _ = Nothing -collectRecords' :: MonadIO m => IdeState -> NormalizedFilePath -> ExceptT String m CollectRecordsResult-collectRecords' ideState =-  handleMaybeM "Unable to TypeCheck"-    . liftIO-    . runAction "ExplicitFields" ideState-    . use CollectRecords+collectRecords' :: MonadIO m => IdeState -> NormalizedFilePath -> ExceptT PluginError m CollectRecordsResult+collectRecords' ideState = runActionE "ExplicitFields" ideState+    . useE CollectRecords