Skip to content

Commit 36d9b9f

Browse files
committed
Add markdownified description on depdendency hover
1 parent 0b2597c commit 36d9b9f

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

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

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import Data.Hashable
2020
import Data.HashMap.Strict (HashMap)
2121
import qualified Data.HashMap.Strict as HashMap
2222
import qualified Data.List.NonEmpty as NE
23+
import qualified Data.Map.Strict as Map
2324
import qualified Data.Maybe as Maybe
2425
import qualified Data.Text as T
2526
import qualified Data.Text.Encoding as Encoding
@@ -66,8 +67,13 @@ import qualified Language.LSP.VFS as VFS
6667
import Text.Regex.TDFA
6768

6869

70+
import Data.Either.Extra (eitherToMaybe)
6971
import qualified Data.Text ()
72+
import qualified Development.IDE.GHC.Compat as T
73+
import Development.IDE.Spans.Common (spanDocToMarkdown,
74+
spanDocToMarkdownForTest)
7075
import qualified Ide.Plugin.Cabal.CabalAdd as CabalAdd
76+
import Ide.Plugin.Cabal.CabalInfoParser (parseCabalInfo)
7177
import System.Exit (ExitCode (ExitSuccess))
7278
import System.Process (readProcessWithExitCode)
7379

@@ -368,9 +374,14 @@ hover ide _ msgParam = getHoverMessage >>= showHoverMessage
368374
let depsNames = map dependencyName $ allBuildDepends $ flattenPackageDescription gpd
369375
guard $ txt `elem` depsNames
370376

371-
cabalInfo <- MaybeT $ liftIO $ execCabalInfo txt
377+
cabalInfoRaw <- MaybeT $ liftIO $ execCabalInfo txt
378+
cabalInfoData <- hoistMaybe $ eitherToMaybe $ parseCabalInfo cabalInfoRaw
372379

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]
374385

375386
showHoverMessage = \case
376387
Nothing -> pure $ InR Null

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
{-# LANGUAGE OverloadedStrings #-}
22

33
-- | This module allows you to parse the output of @cabal info@.
4+
-- This is basically a placeholder implementation until cabal info provides
5+
-- machine readable output or Cabal provides an API for this.
46
module Ide.Plugin.Cabal.CabalInfoParser (parseCabalInfo, cabalInfo) where
57

68
import Data.Map.Strict (Map)

0 commit comments

Comments
 (0)