Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Glasgow Haskell Compiler
GHC
Commits
e71c0818
Commit
e71c0818
authored
Oct 19, 2007
by
Simon Marlow
Browse files
implement
#1468
, :browse on its own uses the currently-loaded module
parent
471f174f
Changes
2
Hide whitespace changes
Inline
Side-by-side
compiler/ghci/InteractiveUI.hs
View file @
e71c0818
...
...
@@ -164,7 +164,7 @@ helpText =
"
\n
"
++
" <statement> evaluate/run <statement>
\n
"
++
" :add <filename> ... add module(s) to the current target set
\n
"
++
" :browse [*]<module>
display the names defined by <module>
\n
"
++
" :browse
[
[*]<module>
]
display the names defined by <module>
\n
"
++
" :cd <dir> change directory to <dir>
\n
"
++
" :cmd <expr> run the commands returned by <expr>::IO String
\n
"
++
" :ctags [<file>] create tags file for Vi (default:
\"
tags
\"
)
\n
"
++
...
...
@@ -1025,16 +1025,27 @@ shellEscape str = io (system str >> return False)
browseCmd
::
String
->
GHCi
()
browseCmd
m
=
case
words
m
of
[
'*'
:
m
]
|
looksLikeModuleName
m
->
browseModule
m
False
[
m
]
|
looksLikeModuleName
m
->
browseModule
m
True
[
'*'
:
s
]
|
looksLikeModuleName
s
->
do
m
<-
wantInterpretedModule
s
browseModule
m
False
[
s
]
|
looksLikeModuleName
s
->
do
m
<-
lookupModule
s
browseModule
m
True
[]
->
do
s
<-
getSession
(
as
,
bs
)
<-
io
$
GHC
.
getContext
s
-- Guess which module the user wants to browse. Pick
-- modules that are interpreted first. The most
-- recently-added module occurs last, it seems.
case
(
as
,
bs
)
of
(
as
@
(
_
:
_
),
_
)
->
browseModule
(
last
as
)
True
(
[]
,
bs
@
(
_
:
_
))
->
browseModule
(
last
bs
)
True
(
[]
,
[]
)
->
throwDyn
(
CmdLineError
":browse: no current module"
)
_
->
throwDyn
(
CmdLineError
"syntax: :browse <module>"
)
browseModule
::
String
->
Bool
->
GHCi
()
browseModule
m
exports_only
=
do
browseModule
::
Module
->
Bool
->
GHCi
()
browseModule
m
odl
exports_only
=
do
s
<-
getSession
modl
<-
if
exports_only
then
lookupModule
m
else
wantInterpretedModule
m
-- Temporarily set the context to the module we're interested in,
-- just so we can get an appropriate PrintUnqualified
(
as
,
bs
)
<-
io
(
GHC
.
getContext
s
)
...
...
@@ -1046,7 +1057,8 @@ browseModule m exports_only = do
mb_mod_info
<-
io
$
GHC
.
getModuleInfo
s
modl
case
mb_mod_info
of
Nothing
->
throwDyn
(
CmdLineError
(
"unknown module: "
++
m
))
Nothing
->
throwDyn
(
CmdLineError
(
"unknown module: "
++
GHC
.
moduleNameString
(
GHC
.
moduleName
modl
)))
Just
mod_info
->
do
let
names
|
exports_only
=
GHC
.
modInfoExports
mod_info
...
...
docs/users_guide/ghci.xml
View file @
e71c0818
...
...
@@ -1680,17 +1680,20 @@ $ ghci -lm
<varlistentry>
<term>
<literal>
:browse
</literal>
<optional><literal>
*
</literal></optional><replaceable>
module
</replaceable>
...
<literal>
:browse
</literal>
<optional><
optional><
literal>
*
</literal></optional><replaceable>
module
</replaceable>
</optional>
...
<indexterm><primary><literal>
:browse
</literal></primary></indexterm>
</term>
<listitem>
<para>
Displays the identifiers defined by the module
<replaceable>
module
</replaceable>
, which must be either
loaded into GHCi or be a member of a package. If the
<literal>
*
</literal>
symbol is placed before the module
name, then
<emphasis>
all
</emphasis>
the identifiers defined
in
<replaceable>
module
</replaceable>
are shown; otherwise
the list is limited to the exports of
loaded into GHCi or be a member of a package. If
<replaceable>
module
</replaceable>
is omitted, the most
recently-loaded module is used.
</para>
<para>
If the
<literal>
*
</literal>
symbol is placed before
the module name, then
<emphasis>
all
</emphasis>
the
identifiers in scope in
<replaceable>
module
</replaceable>
are
shown; otherwise the list is limited to the exports of
<replaceable>
module
</replaceable>
. The
<literal>
*
</literal>
-form is only available for modules
which are interpreted; for compiled modules (including
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment