@@ -9,7 +9,8 @@ module Ide.Plugin.Cabal (descriptor, haskellInteractionDescriptor, Log (..)) whe
9
9
10
10
import Control.Concurrent.Strict
11
11
import Control.DeepSeq
12
- import Control.Lens ((^.) )
12
+ import Control.Lens (_Just , (^.) ,
13
+ (^?) )
13
14
import Control.Monad.Extra
14
15
import Control.Monad.IO.Class
15
16
import Control.Monad.Trans.Class (lift )
@@ -382,20 +383,33 @@ cabalAddCodeAction state plId (CodeActionParams _ _ (TextDocumentIdentifier uri)
382
383
383
384
lens :: PluginMethodHandler IdeState LSP. Method_TextDocumentCodeLens
384
385
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
390
394
395
+ pure $ InL packageDependenciesLens
391
396
392
397
hints :: PluginMethodHandler IdeState LSP. Method_TextDocumentInlayHint
393
398
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
399
413
400
414
-- | Handler for hover messages.
401
415
--
0 commit comments