diff options
Diffstat (limited to 'scheme')
| -rw-r--r-- | scheme/chibi/geiser/geiser.scm | 16 | 
1 files changed, 12 insertions, 4 deletions
| diff --git a/scheme/chibi/geiser/geiser.scm b/scheme/chibi/geiser/geiser.scm index 94f745a..5f9e25e 100644 --- a/scheme/chibi/geiser/geiser.scm +++ b/scheme/chibi/geiser/geiser.scm @@ -19,14 +19,22 @@      (write form out)      (get-output-string out))) +;;> Evaluate a \var{form} in the namespace of the \var{module}. +;;> The meaning of \var{rest} is unknown. +;;> Return the alist with the first field, \scheme{result}, holds +;;> the result of evaluation \scheme{(write)}'d and the second +;;> field, \scheme{output}, contains everyting that the evaluation +;;> would print to the standard output. +  (define (geiser:eval module form . rest)    rest    (guard (err (else (write `((result ,(show #f err)))))) -    (let ((output (open-output-string)) -          (result (if module +    (let* ((output (open-output-string)) +          (result (parameterize ((current-output-port output)) +		    (if module                        (let ((mod (module-env (find-module module))))                          (eval form mod)) -                      (eval form)))) +                      (eval form)))))        (write `((result ,(write-to-string result))                 (output . ,(get-output-string output))))))    (values)) @@ -95,7 +103,7 @@    #f)  ;;> A chibi implementation of the standard geiser's location-making -;;> subrouting. \var{file} is a string representing file name with path, +;;> subroutine. \var{file} is a string representing file name with path,  ;;> \var{line} is the line number starting from 0 (scheme way).  (define (make-location file line) | 
