Skip to content

Commit 4b922a6

Browse files
committed
Add output of cabal info to package hover tooltip
1 parent 15f7862 commit 4b922a6

File tree

1 file changed

+13
-1
lines changed
  • plugins/hls-cabal-plugin/src/Ide/Plugin

1 file changed

+13
-1
lines changed

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

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,8 @@ import Text.Regex.TDFA
6868

6969
import qualified Data.Text ()
7070
import qualified Ide.Plugin.Cabal.CabalAdd as CabalAdd
71+
import System.Exit (ExitCode (ExitSuccess))
72+
import System.Process (readProcessWithExitCode)
7173

7274
data Log
7375
= LogModificationTime NormalizedFilePath FileVersion
@@ -366,7 +368,9 @@ hover ide _ msgParam = getHoverMessage >>= showHoverMessage
366368
let depsNames = map dependencyName $ allBuildDepends $ flattenPackageDescription gpd
367369
guard $ txt `elem` depsNames
368370

369-
pure [txt <> "\n", documentationText txt]
371+
cabalInfo <- MaybeT $ liftIO $ execCabalInfo txt
372+
373+
pure [txt <> "\n", cabalInfo, documentationText txt]
370374

371375
showHoverMessage = \case
372376
Nothing -> pure $ InR Null
@@ -396,6 +400,14 @@ hover ide _ msgParam = getHoverMessage >>= showHoverMessage
396400
getMatch (_, _, _, [dependency]) = Just dependency
397401
getMatch (_, _, _, _) = Nothing -- impossible case
398402

403+
execCabalInfo :: T.Text -> IO (Maybe T.Text)
404+
execCabalInfo package = do
405+
(exitCode, stdout, _stderr) <- readProcessWithExitCode "cabal" ["info", T.unpack package] ""
406+
if exitCode == System.Exit.ExitSuccess then
407+
pure $ Just $ T.pack stdout
408+
else
409+
pure Nothing
410+
399411
documentationText :: T.Text -> T.Text
400412
documentationText package = "[Documentation](https://hackage.haskell.org/package/" <> package <> ")"
401413

0 commit comments

Comments
 (0)