@@ -68,6 +68,8 @@ import Text.Regex.TDFA
68
68
69
69
import qualified Data.Text ()
70
70
import qualified Ide.Plugin.Cabal.CabalAdd as CabalAdd
71
+ import System.Exit (ExitCode (ExitSuccess ))
72
+ import System.Process (readProcessWithExitCode )
71
73
72
74
data Log
73
75
= LogModificationTime NormalizedFilePath FileVersion
@@ -366,7 +368,9 @@ hover ide _ msgParam = getHoverMessage >>= showHoverMessage
366
368
let depsNames = map dependencyName $ allBuildDepends $ flattenPackageDescription gpd
367
369
guard $ txt `elem` depsNames
368
370
369
- pure [txt <> " \n " , documentationText txt]
371
+ cabalInfo <- MaybeT $ liftIO $ execCabalInfo txt
372
+
373
+ pure [txt <> " \n " , cabalInfo, documentationText txt]
370
374
371
375
showHoverMessage = \ case
372
376
Nothing -> pure $ InR Null
@@ -396,6 +400,14 @@ hover ide _ msgParam = getHoverMessage >>= showHoverMessage
396
400
getMatch (_, _, _, [dependency]) = Just dependency
397
401
getMatch (_, _, _, _) = Nothing -- impossible case
398
402
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
+
399
411
documentationText :: T. Text -> T. Text
400
412
documentationText package = " [Documentation](https://hackage.haskell.org/package/" <> package <> " )"
401
413
0 commit comments