@@ -20,6 +20,7 @@ import Data.Hashable
20
20
import Data.HashMap.Strict (HashMap )
21
21
import qualified Data.HashMap.Strict as HashMap
22
22
import qualified Data.List.NonEmpty as NE
23
+ import qualified Data.Map.Strict as Map
23
24
import qualified Data.Maybe as Maybe
24
25
import qualified Data.Text as T
25
26
import qualified Data.Text.Encoding as Encoding
@@ -66,8 +67,13 @@ import qualified Language.LSP.VFS as VFS
66
67
import Text.Regex.TDFA
67
68
68
69
70
+ import Data.Either.Extra (eitherToMaybe )
69
71
import qualified Data.Text ()
72
+ import qualified Development.IDE.GHC.Compat as T
73
+ import Development.IDE.Spans.Common (spanDocToMarkdown ,
74
+ spanDocToMarkdownForTest )
70
75
import qualified Ide.Plugin.Cabal.CabalAdd as CabalAdd
76
+ import Ide.Plugin.Cabal.CabalInfoParser (parseCabalInfo )
71
77
import System.Exit (ExitCode (ExitSuccess ))
72
78
import System.Process (readProcessWithExitCode )
73
79
@@ -368,9 +374,14 @@ hover ide _ msgParam = getHoverMessage >>= showHoverMessage
368
374
let depsNames = map dependencyName $ allBuildDepends $ flattenPackageDescription gpd
369
375
guard $ txt `elem` depsNames
370
376
371
- cabalInfo <- MaybeT $ liftIO $ execCabalInfo txt
377
+ cabalInfoRaw <- MaybeT $ liftIO $ execCabalInfo txt
378
+ cabalInfoData <- hoistMaybe $ eitherToMaybe $ parseCabalInfo cabalInfoRaw
372
379
373
- pure [txt <> " \n " , cabalInfo, documentationText txt]
380
+ let fields = cabalInfoData Map. ! txt
381
+ let description = T. unlines $ fields Map. ! " Description"
382
+ let descriptionMarkdown = T. pack $ spanDocToMarkdownForTest $ T. unpack description
383
+
384
+ pure [txt <> " \n " , descriptionMarkdown <> " \n " , documentationText txt]
374
385
375
386
showHoverMessage = \ case
376
387
Nothing -> pure $ InR Null
0 commit comments