branch: externals/org
commit 5b366a731b2baf5ee88dab395f1a4dac1c78c3ee
Author: Ihor Radchenko <yanta...@posteo.net>
Commit: Ihor Radchenko <yanta...@posteo.net>

    org-babel-shell-initialize: Define session API backend for all the shells
    
    * lisp/ob-shell.el (org-babel-shell-initialize): Define
    org-babel-prep-session:<shell-name> and
    org-babel-<shell-name>-initiate-session functions.
    
    Without this, `org-babel-switch-to-session' does not work for ob-shell
    blocks.
---
 lisp/ob-shell.el | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/lisp/ob-shell.el b/lisp/ob-shell.el
index 2304c7ec9c..8d93eb8d9d 100644
--- a/lisp/ob-shell.el
+++ b/lisp/ob-shell.el
@@ -85,6 +85,24 @@ is modified outside the Customize interface."
                 (shell-file-name name))
            (org-babel-execute:shell body params))))
       (put fname 'definition-name 'org-babel-shell-initialize))
+    (let ((fname (intern (concat "org-babel-prep-session:" name))))
+      (defalias fname
+        (lambda (session params)
+         (:documentation
+           (format "Prepare %s SESSION according to the header arguments 
specified in PARAMS." name))
+         (let ((explicit-shell-file-name name)
+                (shell-file-name name))
+           (org-babel-prep-session:shell session params))))
+      (put fname 'definition-name 'org-babel-shell-initialize))
+    (let ((fname (intern (format "org-babel-%s-initiate-session" name))))
+      (defalias fname
+        (lambda (session _params)
+         (:documentation
+           (format "Initiate %s session named SESSION." name))
+         (let ((explicit-shell-file-name name)
+                (shell-file-name name))
+           (org-babel-sh-initiate-session session))))
+      (put fname 'definition-name 'org-babel-shell-initialize))
     (defalias (intern (concat "org-babel-variable-assignments:" name))
       #'org-babel-variable-assignments:shell
       (format "Return list of %s statements assigning to the block's \

Reply via email to