packages feed

hls-alternate-number-format-plugin 2.0.0.1 → 2.1.0.0

raw patch · 3 files changed

+51/−49 lines, 3 filesdep ~ghcidedep ~hls-plugin-apidep ~hls-test-utilsPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: ghcide, hls-plugin-api, hls-test-utils, lsp

API changes (from Hackage documentation)

Files

hls-alternate-number-format-plugin.cabal view
@@ -1,6 +1,6 @@ cabal-version:      2.4 name:               hls-alternate-number-format-plugin-version:            2.0.0.1+version:            2.1.0.0 synopsis:           Provide Alternate Number Formats plugin for Haskell Language Server description:   Please see the README on GitHub at <https://github.com/haskell/haskell-language-server#readme>@@ -32,13 +32,13 @@     , base                 >=4.12 && < 5     , containers     , extra-    , ghcide               == 2.0.0.1+    , ghcide               == 2.1.0.0     , ghc-boot-th     , hls-graph-    , hls-plugin-api       == 2.0.0.1+    , hls-plugin-api       == 2.1.0.0     , hie-compat     , lens-    , lsp                  ^>=1.6+    , lsp                  ^>=2.1.0.0     , mtl     , regex-tdfa     , syb@@ -64,7 +64,7 @@     , base                 >=4.12 && < 5     , filepath     , hls-alternate-number-format-plugin-    , hls-test-utils       == 2.0.0.1+    , hls-test-utils       == 2.1.0.0     , lsp     , QuickCheck     , regex-tdfa
src/Ide/Plugin/AlternateNumberFormat.hs view
@@ -4,36 +4,39 @@ {-# LANGUAGE TypeOperators #-} module Ide.Plugin.AlternateNumberFormat (descriptor, Log(..)) where -import           Control.Lens                  ((^.))-import           Control.Monad.IO.Class        (MonadIO, liftIO)-import           Control.Monad.Except          (ExceptT)-import qualified Data.HashMap.Strict           as HashMap-import           Data.Text                     (Text, unpack)-import qualified Data.Text                     as T-import           Development.IDE               (GetParsedModule (GetParsedModule),-                                                IdeState, RuleResult, Rules,-                                                define, realSrcSpanToRange,-                                                runAction, use)-import qualified Development.IDE.Core.Shake    as Shake-import           Development.IDE.GHC.Compat    hiding (getSrcSpan)-import           Development.IDE.GHC.Util      (getExtensions)-import           Development.IDE.Graph.Classes (Hashable, NFData, rnf)-import           Development.IDE.Spans.Pragmas (NextPragmaInfo, getFirstPragma,-                                                insertNewPragma)-import           Development.IDE.Types.Logger  as Logger-import           GHC.Generics                  (Generic)-import           Ide.Plugin.Conversion         (AlternateFormat,-                                                ExtensionNeeded (NeedsExtension, NoExtension),-                                                alternateFormat)+import           Control.Lens                     ((^.))+import           Control.Monad.Except             (ExceptT)+import           Control.Monad.IO.Class           (MonadIO, liftIO)+import qualified Data.Map                         as Map+import           Data.Text                        (Text, unpack)+import qualified Data.Text                        as T+import           Development.IDE                  (GetParsedModule (GetParsedModule),+                                                   IdeState, RuleResult, Rules,+                                                   define, realSrcSpanToRange,+                                                   runAction, use)+import           Development.IDE.Core.PluginUtils+import qualified Development.IDE.Core.Shake       as Shake+import           Development.IDE.GHC.Compat       hiding (getSrcSpan)+import           Development.IDE.GHC.Util         (getExtensions)+import           Development.IDE.Graph.Classes    (Hashable, NFData, rnf)+import           Development.IDE.Spans.Pragmas    (NextPragmaInfo,+                                                   getFirstPragma,+                                                   insertNewPragma)+import           GHC.Generics                     (Generic)+import           Ide.Logger                       as Logger+import           Ide.Plugin.Conversion            (AlternateFormat,+                                                   ExtensionNeeded (NeedsExtension, NoExtension),+                                                   alternateFormat)+import           Ide.Plugin.Error import           Ide.Plugin.Literals-import           Ide.Plugin.RangeMap           (RangeMap)-import qualified Ide.Plugin.RangeMap           as RangeMap-import           Ide.PluginUtils               (getNormalizedFilePath,-                                                handleMaybeM, pluginResponse)+import           Ide.Plugin.RangeMap              (RangeMap)+import qualified Ide.Plugin.RangeMap              as RangeMap import           Ide.Types-import           Language.LSP.Types-import qualified Language.LSP.Types.Lens       as L+import qualified Language.LSP.Protocol.Lens       as L+import           Language.LSP.Protocol.Message+import           Language.LSP.Protocol.Types + newtype Log = LogShake Shake.Log deriving Show  instance Pretty Log where@@ -42,7 +45,7 @@  descriptor :: Recorder (WithPriority Log) -> PluginId -> PluginDescriptor IdeState descriptor recorder pId = (defaultPluginDescriptor pId)-    { pluginHandlers = mkPluginHandler STextDocumentCodeAction codeActionHandler+    { pluginHandlers = mkPluginHandler SMethod_TextDocumentCodeAction codeActionHandler     , pluginRules = collectLiteralsRule recorder     } @@ -79,9 +82,9 @@         litMap = RangeMap.fromList (realSrcSpanToRange . getSrcSpan) <$> lits     pure ([], CLR <$> litMap <*> exts) -codeActionHandler :: PluginMethodHandler IdeState 'TextDocumentCodeAction-codeActionHandler state pId (CodeActionParams _ _ docId currRange _) = pluginResponse $ do-    nfp <- getNormalizedFilePath (docId ^. L.uri)+codeActionHandler :: PluginMethodHandler IdeState 'Method_TextDocumentCodeAction+codeActionHandler state pId (CodeActionParams _ _ docId currRange _) = do+    nfp <- getNormalizedFilePathE (docId ^. L.uri)     CLR{..} <- requestLiterals pId state nfp     pragma <- getFirstPragma pId state nfp         -- remove any invalid literals (see validTarget comment)@@ -90,18 +93,18 @@         literalPairs = map (\lit -> (lit, alternateFormat lit)) litsInRange         -- make a code action for every literal and its' alternates (then flatten the result)         actions = concatMap (\(lit, alts) -> map (mkCodeAction nfp lit enabledExtensions pragma) alts) literalPairs-    pure $ List actions+    pure $ InL $ actions     where         mkCodeAction :: NormalizedFilePath -> Literal -> [GhcExtension] -> NextPragmaInfo -> AlternateFormat -> Command |? CodeAction         mkCodeAction nfp lit enabled npi af@(alt, ext) = InR CodeAction {             _title = mkCodeActionTitle lit af enabled-            , _kind = Just $ CodeActionUnknown "quickfix.literals.style"+            , _kind = Just $ CodeActionKind_Custom "quickfix.literals.style"             , _diagnostics = Nothing             , _isPreferred = Nothing             , _disabled = Nothing             , _edit = Just $ mkWorkspaceEdit nfp edits             , _command = Nothing-            , _xdata = Nothing+            , _data_ = Nothing             }             where                 edits =  [TextEdit (realSrcSpanToRange $ getSrcSpan lit) alt] <> pragmaEdit@@ -112,7 +115,7 @@         mkWorkspaceEdit :: NormalizedFilePath -> [TextEdit] -> WorkspaceEdit         mkWorkspaceEdit nfp edits = WorkspaceEdit changes Nothing Nothing             where-                changes = Just $ HashMap.fromList [(filePathToUri $ fromNormalizedFilePath nfp, List edits)]+                changes = Just $ Map.fromList [(filePathToUri $ fromNormalizedFilePath nfp, edits)]  mkCodeActionTitle :: Literal -> AlternateFormat -> [GhcExtension] -> Text mkCodeActionTitle lit (alt, ext) ghcExts@@ -127,8 +130,7 @@ needsExtension :: Extension -> [GhcExtension] -> Bool needsExtension ext ghcExts = ext `notElem` map unExt ghcExts -requestLiterals :: MonadIO m => PluginId -> IdeState -> NormalizedFilePath -> ExceptT String m CollectLiteralsResult-requestLiterals (PluginId pId) state = handleMaybeM "Could not Collect Literals"-                . liftIO-                . runAction (unpack pId <> ".CollectLiterals") state-                . use CollectLiterals+requestLiterals :: MonadIO m => PluginId -> IdeState -> NormalizedFilePath -> ExceptT PluginError m CollectLiteralsResult+requestLiterals (PluginId pId) state =+    runActionE (unpack pId <> ".CollectLiterals") state+    . useE CollectLiterals
test/Main.hs view
@@ -9,8 +9,8 @@ import qualified Data.Text                        as T import qualified Ide.Plugin.AlternateNumberFormat as AlternateNumberFormat import qualified Ide.Plugin.Conversion            as Conversion-import           Language.LSP.Types               (toEither)-import           Language.LSP.Types.Lens          (kind)+import           Language.LSP.Protocol.Lens       (kind)+import           Language.LSP.Protocol.Types      (toEither) import           Properties.Conversion            (conversions) import           System.FilePath                  ((<.>), (</>)) import           Test.Hls@@ -66,8 +66,8 @@         isAlternateNumberCodeAction CodeAction{_kind} = case _kind of           Nothing -> False           Just kind -> case kind of-            CodeActionUnknown txt -> txt == "quickfix.literals.style"-            _                     -> False+            CodeActionKind_Custom txt -> txt == "quickfix.literals.style"+            _                         -> False  -- most helpers derived from explicit-imports-plugin Main Test file