@@ -14,7 +14,7 @@ import Prelude.Compat
15import Data.Foldable (traverse_)
15import Data.Foldable (traverse_)
16import Data.Maybe (mapMaybe)
16import Data.Maybe (mapMaybe)
17−import Data.List (intersperse, intercalate, nub, sort)
17+import Data.List (intersperse, intercalate, nub, sort, find)
18import Data.Tuple (swap)
18import Data.Tuple (swap)
19import Data.Version (showVersion)
19import Data.Version (showVersion)
20import qualified Data.Map as M
20import qualified Data.Map as M
@@ -486,9 +486,22 @@ handleBrowse moduleName = do
486 case env of
486 case env of
487 Left errs -> printErrors errs
487 Left errs -> printErrors errs
488 Right env' ->
488 Right env' ->
489− if moduleName `notElem` (nub . map ((\ (P.Module _ _ modName _ _ ) -> modName) . snd)) (psciLoadedModules st)
489+ if isModInEnv moduleName st
490+ then printModuleSignatures moduleName env'
491+ else case lookupUnQualifiedModName moduleName st of
492+ Just unQualifiedName ->
493+ if isModInEnv unQualifiedName st
494+ then printModuleSignatures unQualifiedName env'
495+ else failNotInEnv moduleName
497+ failNotInEnv moduleName
499+ isModInEnv modName =
500+ any ((== modName) . P.getModuleName . snd) . psciLoadedModules
501+ failNotInEnv modName =
490− then PSCI $ outputStrLn $ "Module '" ++ N.runModuleName moduleName ++ "' is not valid."
502+ PSCI $ outputStrLn $ "Module '" ++ N.runModuleName modName ++ "' is not valid."
491− else printModuleSignatures moduleName env'
503+ lookupUnQualifiedModName quaModName st =
504+ (\(modName,_,_) -> modName) <$> find ( \(_, _, mayQuaName) -> mayQuaName == Just quaModName) (psciImportedModules st)
493-- | Pretty-print errors
506-- | Pretty-print errors
494printErrors :: P.MultipleErrors -> PSCI ()
507printErrors :: P.MultipleErrors -> PSCI ()