(restart-mzscheme
init-argv adjust-flag-table argv init-namespace
)
PROCEDURE
Simulates starting the stand-alone version of MzScheme with the vector
of command-line strings argv
. The init-argv
,
adjust-flag-table
, and init-namespace
arguments are used
to modify the default settings for command-line flags, adjust the
parsing of command-line flags, and customize the initial namespace,
respectively.
The vector of strings init-argv
is read first with the standard
MzScheme command-line parsing. Flags that load files or evaluate
expressions (e.g., -f and -e) are ignored, but flags that
set MzScheme's modes (e.g., -g or -m) effectively set the
default mode before argv
is parsed.
Before argv
is parsed, the procedure adjust-flag-table
is
called with a command-line flag table as accepted by
parse-command-line
(see section 9). The return
value must also be a table of command-line flags, and this table is
used to parse argv
. The intent is to allow
adjust-flag-table
to add or remove flags from the standard set.
After argv
is parsed, a new thread and a namespace are created
for the ``restarted'' MzScheme. (The new namespace is installed as
the current namespace in the new thread.) In the new thread,
restarting performs the following actions:
The init-namespace
procedure is called with no arguments.
The return value is ignored.
Expressions and files specified by argv
are evaluated and
loaded. If an error occurs, the remaining expressions and files are
ignored, and the return value for restart-mzscheme
is set to
#f
.
The read-eval-print-loop
procedure is called, unless a
flag in init-argv
or argv
disables it. When
read-eval-print-loop
returns, the return value for
restart-mzscheme
is set to #t
.
Before evaluating command-line arguments, an exit handler is installed
that immediately returns from restart-mzscheme
with the value
supplied to the handler. This exit handler remains in effect when
read-eval-print-loop
is called (unless a command-line argument
changes it). If restart-mzscheme
returns normally, the return
value is determined as described above. (Note that an error in a
command-line expression followed by read-eval-print-loop
produces a #t
result. This is consistent with MzScheme's
stand-alone behavior.)