Skip to content

Commit 22edd19

Browse files
committed
Disable deps CodeLens when InlayHints are available
1 parent 1b8ce5f commit 22edd19

File tree

1 file changed

+25
-11
lines changed
  • plugins/hls-cabal-plugin/src/Ide/Plugin

1 file changed

+25
-11
lines changed

plugins/hls-cabal-plugin/src/Ide/Plugin/Cabal.hs

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ module Ide.Plugin.Cabal (descriptor, haskellInteractionDescriptor, Log (..)) whe
99

1010
import Control.Concurrent.Strict
1111
import Control.DeepSeq
12-
import Control.Lens ((^.))
12+
import Control.Lens (_Just, (^.),
13+
(^?))
1314
import Control.Monad.Extra
1415
import Control.Monad.IO.Class
1516
import Control.Monad.Trans.Class (lift)
@@ -382,20 +383,33 @@ cabalAddCodeAction state plId (CodeActionParams _ _ (TextDocumentIdentifier uri)
382383

383384
lens :: PluginMethodHandler IdeState LSP.Method_TextDocumentCodeLens
384385
lens state _plId clp = do
385-
let uri = clp ^. JL.textDocument . JL.uri
386-
nfp <- getNormalizedFilePathE uri
387-
cabalFields <- runActionE "cabal.cabal-code-lens" state $ useE ParseCabalFields nfp
388-
(hscEnv -> hsc) <- runActionE "cabal.cabal-code-lens" state $ useE GhcSession nfp
389-
pure $ InL $ Dependencies.dependencyVersionLens cabalFields hsc
386+
packageDependenciesLens <-
387+
fmap (Maybe.fromMaybe mempty) $
388+
whenMaybe (not $ inlayHintCapabilityAvailable state) $ do
389+
let uri = clp ^. JL.textDocument . JL.uri
390+
nfp <- getNormalizedFilePathE uri
391+
cabalFields <- runActionE "cabal.cabal-code-lens" state $ useE ParseCabalFields nfp
392+
(hscEnv -> hsc) <- runActionE "cabal.cabal-code-lens" state $ useE GhcSession nfp
393+
pure $ Dependencies.dependencyVersionLens cabalFields hsc
390394

395+
pure $ InL packageDependenciesLens
391396

392397
hints :: PluginMethodHandler IdeState LSP.Method_TextDocumentInlayHint
393398
hints state _plId clp = do
394-
let uri = clp ^. JL.textDocument . JL.uri
395-
nfp <- getNormalizedFilePathE uri
396-
cabalFields <- runActionE "cabal.cabal-hints" state $ useE ParseCabalFields nfp
397-
(hscEnv -> hsc) <- runActionE "cabal.cabal-hints" state $ useE GhcSession nfp
398-
pure $ InL $ Dependencies.dependencyVersionHints cabalFields hsc
399+
packageDependenciesHints <-
400+
fmap (Maybe.fromMaybe mempty) $
401+
whenMaybe (inlayHintCapabilityAvailable state) $ do
402+
let uri = clp ^. JL.textDocument . JL.uri
403+
nfp <- getNormalizedFilePathE uri
404+
cabalFields <- runActionE "cabal.cabal-hints" state $ useE ParseCabalFields nfp
405+
(hscEnv -> hsc) <- runActionE "cabal.cabal-hints" state $ useE GhcSession nfp
406+
pure $ Dependencies.dependencyVersionHints cabalFields hsc
407+
pure $ InL packageDependenciesHints
408+
409+
inlayHintCapabilityAvailable :: IdeState -> Bool
410+
inlayHintCapabilityAvailable state =
411+
let clientCaps = Shake.clientCapabilities $ shakeExtras state
412+
in Maybe.isJust $ clientCaps ^? JL.textDocument . _Just . JL.inlayHint . _Just
399413

400414
-- | Handler for hover messages.
401415
--

0 commit comments

Comments
 (0)