From cc460a348950c79843b5c9c9b68b86c92077ace4 Mon Sep 17 00:00:00 2001 From: jakub-w Date: Fri, 7 May 2021 22:05:42 +0200 Subject: Fix Geiser for Guile 3.0.6 Fixes emacs-geiser/guile#9 In geiser-eval REPL meta-command: All `mod`, `form` and `args` are now syntax objects. The geiser-guile's logic will handle `mod` and `form` as is because they're just passed to guile's eval and compile procedures. `args` are processed by geiser-eval meta-command itself, so it's necessary to convert it back to a datum. We lose some metadata, but all elements in the `args` list are also syntax objects so I don't think it's a big deal. `syntax->datum` was introduced before guile 2 so this change is backward compatible. --- src/geiser/emacs.scm | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'src/geiser') diff --git a/src/geiser/emacs.scm b/src/geiser/emacs.scm index 6f2fc29..555add2 100644 --- a/src/geiser/emacs.scm +++ b/src/geiser/emacs.scm @@ -35,11 +35,12 @@ Meta-command used by Geiser to emit a new line." (define-meta-command ((geiser-eval geiser) repl (mod form args) . rest) "geiser-eval module form args () Meta-command used by Geiser to evaluate and compile code." - (if (null? args) - (call-with-error-handling - (lambda () (ge:compile form mod))) - (let ((proc (eval form this-module))) - (ge:eval `(,proc ,@args) mod)))) + (let ((args (syntax->datum args))) + (if (null? args) + (call-with-error-handling + (lambda () (ge:compile form mod))) + (let ((proc (eval form this-module))) + (ge:eval `(,proc ,@args) mod))))) (define-meta-command ((geiser-load-file geiser) repl file) "geiser-load-file file -- cgit v1.2.3