summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJose Antonio Ortega Ruiz <jao@gnu.org>2009-03-15 15:55:46 +0100
committerJose Antonio Ortega Ruiz <jao@gnu.org>2009-03-15 15:55:46 +0100
commitd7642ed7d0e3184921835644d8dde0b1b50e1e6f (patch)
treec73334a3faf2d7c1e21dbcf7467b0a93c919b287
parent660fc8e0465e48812fc6f38f82d91d22b0664118 (diff)
downloadgeiser-chez-d7642ed7d0e3184921835644d8dde0b1b50e1e6f.tar.gz
geiser-chez-d7642ed7d0e3184921835644d8dde0b1b50e1e6f.tar.bz2
Multiple values as evaluation result supported.
-rw-r--r--elisp/geiser-eval.el6
-rw-r--r--scheme/guile/geiser/evaluation.scm2
2 files changed, 7 insertions, 1 deletions
diff --git a/elisp/geiser-eval.el b/elisp/geiser-eval.el
index 8574cdc..847a198 100644
--- a/elisp/geiser-eval.el
+++ b/elisp/geiser-eval.el
@@ -142,7 +142,11 @@ EVAL, COMPILE, LOAD-FILE and COMPILE-FILE should be supported."))
(defsubst geiser-eval--retort-p (ret)
(and (listp ret) (or (assoc 'error ret) (assoc 'result ret))))
-(defsubst geiser-eval--retort-result (ret) (cdr (assoc 'result ret)))
+
+(defun geiser-eval--retort-result (ret)
+ (let ((values (cdr (assoc 'result ret))))
+ (if (> (length values) 1) (cons :values values) (car values))))
+
(defsubst geiser-eval--retort-output (ret) (cdr (assoc 'output ret)))
(defsubst geiser-eval--retort-error (ret) (cdr (assoc 'error ret)))
(defsubst geiser-eval--retort-stack (ret) (cdr (assoc 'stack ret)))
diff --git a/scheme/guile/geiser/evaluation.scm b/scheme/guile/geiser/evaluation.scm
index 1f3afc0..37f4171 100644
--- a/scheme/guile/geiser/evaluation.scm
+++ b/scheme/guile/geiser/evaluation.scm
@@ -95,6 +95,8 @@
(let ((module (or (and (list? module-name)
(resolve-module module-name))
(current-module)))
+ (evaluator (lambda (f m)
+ (call-with-values (lambda () (evaluator f m)) list)))
(result #f)
(captured-stack #f)
(error #f))