[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/org 06d08e6f30 1/3: lisp/ob-scheme.el: Use synchronous
From: |
ELPA Syncer |
Subject: |
[elpa] externals/org 06d08e6f30 1/3: lisp/ob-scheme.el: Use synchronous eval. |
Date: |
Sun, 8 May 2022 06:57:42 -0400 (EDT) |
branch: externals/org
commit 06d08e6f30fdad0eaf9def55bd31b055aded1b7a
Author: Tim Van den Langenbergh <tmt_vdl@gmx.com>
Commit: Ihor Radchenko <yantar92@gmail.com>
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 | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/lisp/ob-scheme.el b/lisp/ob-scheme.el
index 72d2e029e1..b91c368a77 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,13 @@ 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))))
+ ;; `geiser-eval-region/wait' was introduced to await the
+ ;; result of async evaluation in geiser version 0.22.
+ (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")