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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/org 86c4038da6 1/2: ob-scheme: Allow ob-scheme to accep


From: ELPA Syncer
Subject: [elpa] externals/org 86c4038da6 1/2: ob-scheme: Allow ob-scheme to accept a remote connection
Date: Tue, 30 Jan 2024 12:58:54 -0500 (EST)

branch: externals/org
commit 86c4038da678ad8d23f6cba37d81db2f66a9e562
Author: Hunter Jozwiak <hunter.t.joz@gmail.com>
Commit: Ihor Radchenko <yantar92@posteo.net>

    ob-scheme: Allow ob-scheme to accept a remote connection
    
    * lisp/org/ob-scheme.el (org-babel-scheme-get-repl): Introduce two
    optional arguments: host and port.  If these are not given, just run
    Geiser as before.  In the case when both are given, connect to the
    remotely running Scheme process.
    * lisp/org/ob-scheme (org-babel-scheme-execute-with-geiser,
    org-babel-execute:scheme): Take these  optional arguments into account.
    * lisp/org/ob-scheme.el (org-babel-header-args:scheme): Define host
    and port header arguments for completion.
    
    TINYCHANGE
---
 lisp/ob-scheme.el | 25 ++++++++++++++++++-------
 1 file changed, 18 insertions(+), 7 deletions(-)

diff --git a/lisp/ob-scheme.el b/lisp/ob-scheme.el
index 0ff27a9654..632ab2583d 100644
--- a/lisp/ob-scheme.el
+++ b/lisp/ob-scheme.el
@@ -54,7 +54,7 @@
 (defvar geiser-debug-jump-to-debug-p)  ; Defined in geiser-debug.el
 (defvar geiser-repl-use-other-window)  ; Defined in geiser-repl.el
 (defvar geiser-repl-window-allow-split)        ; Defined in geiser-repl.el
-
+(declare-function geiser-connect "ext:geiser-repl" (impl &optional host port))
 (declare-function run-geiser "ext:geiser-repl" (impl))
 (declare-function geiser "ext:geiser-repl" (impl))
 (declare-function geiser-mode "ext:geiser-mode" ())
@@ -78,6 +78,9 @@
 
 (defvar org-babel-default-header-args:scheme '()
   "Default header arguments for scheme code blocks.")
+(defconst org-babel-header-args:scheme '((host . :any)
+                                         (port . :any))
+  "Header arguments supported in Scheme.")
 
 (defun org-babel-scheme-expand-header-arg-vars (vars)
   "Expand :var header arguments given as VARS."
@@ -121,13 +124,17 @@
   (with-current-buffer (set-buffer buffer)
     geiser-impl--implementation))
 
-(defun org-babel-scheme-get-repl (impl name)
-  "Switch to a scheme REPL, creating it if it doesn't exist."
+(defun org-babel-scheme-get-repl (impl name &optional host port)
+  "Switch to a Scheme REPL, creating it if it doesn't exist.
+
+If the variables HOST and PORT are set, connect to the running Scheme REPL."
   (let ((buffer (org-babel-scheme-get-session-buffer name)))
     (or buffer
        (progn
           (if (fboundp 'geiser)
-              (geiser impl)
+              (if (and host port)
+                  (geiser-connect impl host port)
+                (geiser impl))
             ;; Obsolete since Geiser 0.26.
            (run-geiser impl))
          (when name
@@ -164,7 +171,7 @@ org-babel-scheme-execute-with-geiser will use a temporary 
session."
        ,@body
        (current-message))))
 
-(defun org-babel-scheme-execute-with-geiser (code output impl repl)
+(defun org-babel-scheme-execute-with-geiser (code output impl repl &optional 
host port)
   "Execute code in specified REPL.
 If the REPL doesn't exist, create it using the given scheme
 implementation.
@@ -180,7 +187,7 @@ is true; otherwise returns the last value."
       (let ((geiser-repl-window-allow-split nil)
            (geiser-repl-use-other-window nil))
        (let ((repl-buffer (save-current-buffer
-                            (org-babel-scheme-get-repl impl repl))))
+                            (org-babel-scheme-get-repl impl repl host port))))
          (when (not (eq impl (org-babel-scheme-get-buffer-impl
                               (current-buffer))))
            (message "Implementation mismatch: %s (%s) %s (%s)" impl (symbolp 
impl)
@@ -244,6 +251,8 @@ This function is called by `org-babel-execute-src-block'."
                       geiser-scheme-implementation
                       geiser-default-implementation
                       (car geiser-active-implementations)))
+             (host (cdr (assq :host params)))
+             (port (cdr (assq :port params)))
             (session (org-babel-scheme-make-session-name
                       source-buffer-name (cdr (assq :session params)) impl))
             (full-body (org-babel-expand-body:scheme body params))
@@ -253,7 +262,9 @@ This function is called by `org-babel-execute-src-block'."
               full-body                       ; code
               (string= result-type "output")  ; output?
               impl                            ; implementation
-              (and (not (string= session "none")) session)))) ; session
+              (and (not (string= session "none")) session) ; session
+               host ; REPL host
+               port))) ; REPL port
        (let ((table
               (org-babel-reassemble-table
                result



reply via email to

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