From d06f6d5b7342693b4065c0c361e430c4bdb065e5 Mon Sep 17 00:00:00 2001 From: Tim Van den Langenbergh Date: Sat, 23 Apr 2022 14:57:27 +0200 Subject: [PATCH] lisp/ob-scheme.el: Use synchronous eval. * ob-scheme.el (org-babel-scheme-execute-with-geiser): If available, use the synchronous `geiser-eval-region/wait' function to get the evaluation result. Works with geiser 0.18 (before introduction of async evaluation) and geiser 0.22 (which introduces `geiser-eval-region/wait'). Modified from a patch proposal by Felipe Lema. TINYCHANGE --- lisp/ob-scheme.el | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lisp/ob-scheme.el b/lisp/ob-scheme.el index 72d2e029e..f28cadd87 100644 --- a/lisp/ob-scheme.el +++ b/lisp/ob-scheme.el @@ -55,6 +55,8 @@ (declare-function geiser-mode "ext:geiser-mode" ()) (declare-function geiser-eval-region "ext:geiser-mode" (start end &optional and-go raw nomsg)) +(declare-function geiser-eval-region/wait "ext:geiser-mode" + (start end &optional timeout)) (declare-function geiser-repl-exit "ext:geiser-repl" (&optional arg)) (declare-function geiser-eval--retort-output "ext:geiser-eval" (ret)) (declare-function geiser-eval--retort-result-str "ext:geiser-eval" (ret prefix)) @@ -176,7 +178,11 @@ is true; otherwise returns the last value." (setq geiser-impl--implementation nil) (let ((geiser-debug-jump-to-debug-p nil) (geiser-debug-show-debug-p nil)) - (let ((ret (geiser-eval-region (point-min) (point-max)))) + (let ((ret (funcall (if (fboundp 'geiser-eval-region/wait) + #'geiser-eval-region/wait + #'geiser-eval-region) + (point-min) + (point-max)))) (setq result (if output (or (geiser-eval--retort-output ret) "Geiser Interpreter produced no output") -- 2.35.3