diff options
author | Jose Antonio Ortega Ruiz <jao@gnu.org> | 2011-08-20 03:31:54 +0200 |
---|---|---|
committer | Jose Antonio Ortega Ruiz <jao@gnu.org> | 2011-08-20 16:29:46 +0200 |
commit | 1627471032647e6a13149242ad9547b5124c1c4f (patch) | |
tree | 56cf76f34112cf81cfd1710853de3f116685a6b7 /scheme/racket/geiser/user.rkt | |
parent | 0ef26298d48bd0ae605096a187be35ef4759a722 (diff) | |
download | geiser-chez-1627471032647e6a13149242ad9547b5124c1c4f.tar.gz geiser-chez-1627471032647e6a13149242ad9547b5124c1c4f.tar.bz2 |
Racket: eval geiser-eval's apply arguments properly
As Stanisław Halik reported, autodoc was receiving a mlist (instead of
a list) as its argument when invoked in an R5RS context. Turns out we
were evaluating geiser-eval's arguments in the wrong context (the
procedure being applied and the arglist belong to the same namespace).
Diffstat (limited to 'scheme/racket/geiser/user.rkt')
-rw-r--r-- | scheme/racket/geiser/user.rkt | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/scheme/racket/geiser/user.rkt b/scheme/racket/geiser/user.rkt index 621b47f..4479b42 100644 --- a/scheme/racket/geiser/user.rkt +++ b/scheme/racket/geiser/user.rkt @@ -50,15 +50,17 @@ (define (geiser-eval) (define geiser-main (module->namespace 'geiser)) + (define (eval-here form) (eval form geiser-main)) (let* ([mod (read)] [lang (read)] [form (read)]) (datum->syntax #f (list 'quote (cond [(equal? form '(unquote apply)) - (let* ([proc (eval (read) geiser-main)] - [args (read)]) - (eval-in `(,proc ,@args) mod lang))] + (let* ([proc (eval-here (read))] + [args (map eval-here (read))] + [ev (lambda () (apply proc args))]) + (eval-in `(,ev) mod lang))] [else ((geiser:eval lang) form mod)]))))) (define ((geiser-read prompt)) |