1
- {-# LANGUAGE OverloadedStrings #-}
2
- module Ide.Plugin.Cabal.Dependencies (dependencyVersionHints , collectPackageDependencyVersions ) where
1
+ {-# LANGUAGE DuplicateRecordFields #-}
2
+ {-# LANGUAGE OverloadedStrings #-}
3
+
4
+ module Ide.Plugin.Cabal.Dependencies (dependencyVersionHints , collectPackageDependencyVersions , dependencyVersionLens ) where
3
5
4
6
import qualified Data.Char as Char
5
7
import qualified Data.List as List
@@ -15,9 +17,22 @@ import Development.IDE.GHC.Compat (HscEnv, filterUniqMap,
15
17
import qualified Distribution.Fields as Syntax
16
18
import qualified Distribution.Parsec.Position as Syntax
17
19
import qualified Ide.Plugin.Cabal.Completion.Types as Types
18
- import Language.LSP.Protocol.Types (InlayHint (.. ),
20
+ import Language.LSP.Protocol.Types (CodeLens (.. ), Command (.. ),
21
+ InlayHint (.. ),
19
22
InlayHintLabelPart (InlayHintLabelPart ),
20
- type (|? ) (.. ))
23
+ Range (.. ), type (|? ) (.. ))
24
+
25
+ dependencyVersionLens :: [Syntax. Field Syntax. Position ] -> HscEnv -> [CodeLens ]
26
+ dependencyVersionLens cabalFields = fmap mkCodeLens . collectPackageDependencyVersions cabalFields
27
+ where
28
+ mkCodeLens :: (Syntax. Position , Version ) -> CodeLens
29
+ mkCodeLens (pos, dependencyVersion) =
30
+ let cPos = Types. cabalPositionToLSPPosition pos
31
+ command = Command (printVersion dependencyVersion) mempty Nothing
32
+ in CodeLens
33
+ { _range = Range cPos cPos
34
+ , _command = Just command
35
+ , _data_ = Nothing }
21
36
22
37
dependencyVersionHints :: [Syntax. Field Syntax. Position ] -> HscEnv -> [InlayHint ]
23
38
dependencyVersionHints cabalFields = fmap mkHint . collectPackageDependencyVersions cabalFields
0 commit comments