From 94de367220d8931af1f513d7855754432413ce2d Mon Sep 17 00:00:00 2001 From: mvoidex Date: Mon, 28 Oct 2013 12:22:18 +0400 Subject: [PATCH] List modules with its packages --- Language/Haskell/GhcMod/List.hs | 15 +++++++++++---- src/GHCMod.hs | 2 +- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/Language/Haskell/GhcMod/List.hs b/Language/Haskell/GhcMod/List.hs index 2d360d9..baf6528 100644 --- a/Language/Haskell/GhcMod/List.hs +++ b/Language/Haskell/GhcMod/List.hs @@ -5,6 +5,7 @@ import Data.List import GHC import Language.Haskell.GhcMod.GHCApi import Language.Haskell.GhcMod.Types +import Distribution.Text (display) import Packages import UniqFM @@ -12,14 +13,20 @@ import UniqFM -- | Listing installed modules. listModules :: Options -> IO String -listModules opt = convert opt . nub . sort <$> withGHCDummyFile (listMods opt) +listModules opt = convert opt . nub . sort . map dropPkgs <$> withGHCDummyFile (listMods opt) where + dropPkgs (name, pkg) + | detailed opt = name ++ " " ++ pkg + | otherwise = name -- | Listing installed modules. -listMods :: Options -> Ghc [String] +listMods :: Options -> Ghc [(String, String)] listMods opt = do initializeFlags opt getExposedModules <$> getSessionDynFlags where - getExposedModules = map moduleNameString - . concatMap exposedModules + getExposedModules = concatMap exposedModules' . eltsUFM . pkgIdMap . pkgState + exposedModules' p = + map moduleNameString (exposedModules p) + `zip` + repeat (display $ sourcePackageId p) diff --git a/src/GHCMod.hs b/src/GHCMod.hs index 2645804..459b6ed 100644 --- a/src/GHCMod.hs +++ b/src/GHCMod.hs @@ -22,7 +22,7 @@ ghcOptHelp = " [-g GHC_opt1 -g GHC_opt2 ...] " usage :: String usage = "ghc-mod version " ++ showVersion version ++ "\n" ++ "Usage:\n" - ++ "\t ghc-mod list" ++ ghcOptHelp ++ "[-l]\n" + ++ "\t ghc-mod list" ++ ghcOptHelp ++ "[-l] [-d]\n" ++ "\t ghc-mod lang [-l]\n" ++ "\t ghc-mod flag [-l]\n" ++ "\t ghc-mod browse" ++ ghcOptHelp ++ "[-l] [-o] [-d] [ ...]\n"