runtime: Make it nicer to (ge '(R3RS)).
authorMatt Birkholz <matt@birkholz.chandler.az.us>
Sat, 27 Apr 2013 21:16:13 +0000 (14:16 -0700)
committerMatt Birkholz <matt@birkholz.chandler.az.us>
Sat, 27 Apr 2013 21:16:13 +0000 (14:16 -0700)
commitfe044480837d2c10a4422d05d5a1017343ef3b85
tree28713b4e043e69c1be62bbe1bb8b3f7dc78abf22
parent5235ffa24eda41b3d04c0122df55226eb54fb38a
runtime: Make it nicer to (ge '(R3RS)).

The default parser and unparser expect to find bindings for
e.g. *parser-table* in any given environment, but there are no such
bindings in a package with parent #f (unless you import them).  If you
don't, executing (ge '(R3RS)) puts the REPL into a tight little error
loop.  This patch makes the parser and unparser consult the (USER)
package if they don't find these bindings in the current environment.

Once "in" a package like (r3rs) it is tricky to get out(!).  Entering
(ge '(USER)) will just produce an error: unbound variable GE.  Thus
the default/repl-eval now looks for an unquoted expression and
evaluates it in the (USER) package, so you can enter ,(ge '(USER)) to
get back.
src/runtime/parse.scm
src/runtime/rep.scm
src/runtime/runtime.pkg
src/runtime/uenvir.scm
src/runtime/unpars.scm