emacs-elpa-diffs
[Top][All Lists]
Advanced

[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")



reply via email to

[Prev in Thread] Current Thread [Next in Thread]