mirror of
https://github.com/vale981/emacs-jupyter
synced 2025-03-05 23:41:38 -05:00
Add org-babel-jupyter-src-block-session
This commit is contained in:
parent
5c1643bf77
commit
580776bf58
2 changed files with 48 additions and 1 deletions
|
@ -78,6 +78,29 @@
|
||||||
(advice-member-p
|
(advice-member-p
|
||||||
'ob-jupyter (intern (concat "org-babel-execute:" lang)))))
|
'ob-jupyter (intern (concat "org-babel-execute:" lang)))))
|
||||||
|
|
||||||
|
(defun org-babel-jupyter-session-key (params)
|
||||||
|
"Return the session key based on the keys in PARAMS.
|
||||||
|
PARAMS is the arguments alist as returned by
|
||||||
|
`org-babel-get-src-block-info' and should contain a :kernel key
|
||||||
|
and a valid :session key. The session key is used to access the
|
||||||
|
clients in `org-babel-jupyter-session-clients'."
|
||||||
|
(let ((session (alist-get :session params))
|
||||||
|
(kernel (alist-get :kernel params)))
|
||||||
|
(unless (and session kernel
|
||||||
|
(not (equal session "none")))
|
||||||
|
(error "Need a valid session and a kernel to form a key"))
|
||||||
|
(concat session "-" kernel)))
|
||||||
|
|
||||||
|
(defun org-babel-jupyter-src-block-session ()
|
||||||
|
"Return the session key for the current Jupyter source block.
|
||||||
|
Return nil if the current source block is not a Jupyter block or
|
||||||
|
if there is no source block at point."
|
||||||
|
(when (org-in-src-block-p)
|
||||||
|
(cl-destructuring-bind (lang _ params . rest)
|
||||||
|
(org-babel-get-src-block-info 'light)
|
||||||
|
(when (org-babel-jupyter-language-p lang)
|
||||||
|
(org-babel-jupyter-session-key params)))))
|
||||||
|
|
||||||
;;; `ob' integration
|
;;; `ob' integration
|
||||||
|
|
||||||
(defun org-babel-variable-assignments:jupyter (params &optional lang)
|
(defun org-babel-variable-assignments:jupyter (params &optional lang)
|
||||||
|
@ -189,7 +212,7 @@ of one. The first kernel that is returned by
|
||||||
`jupyter-find-kernelspecs' when passed the value of the `:kernel'
|
`jupyter-find-kernelspecs' when passed the value of the `:kernel'
|
||||||
parameter will be used."
|
parameter will be used."
|
||||||
(let* ((kernel (alist-get :kernel params))
|
(let* ((kernel (alist-get :kernel params))
|
||||||
(key (concat session "-" kernel))
|
(key (org-babel-jupyter-session-key params))
|
||||||
(client
|
(client
|
||||||
(or (gethash key org-babel-jupyter-session-clients)
|
(or (gethash key org-babel-jupyter-session-clients)
|
||||||
(let ((client
|
(let ((client
|
||||||
|
|
|
@ -1712,6 +1712,30 @@ AB[43mCD[0mEF
|
||||||
(remove-text-properties (point-min) (point-max) '(face))
|
(remove-text-properties (point-min) (point-max) '(face))
|
||||||
(funcall test-fun 24 '(19 20 21 22 23 26 27 28 29)))))
|
(funcall test-fun 24 '(19 20 21 22 23 26 27 28 29)))))
|
||||||
|
|
||||||
|
(ert-deftest org-babel-jupyter-src-block-session ()
|
||||||
|
:tags '(org)
|
||||||
|
(jupyter-org-test
|
||||||
|
(insert "\
|
||||||
|
#+BEGIN_SRC jupyter-foo :session bar
|
||||||
|
#+END_SRC")
|
||||||
|
(goto-char (point-min))
|
||||||
|
(should-error (org-babel-jupyter-src-block-session))
|
||||||
|
(erase-buffer)
|
||||||
|
(insert "\
|
||||||
|
#+BEGIN_SRC jupyter-foo :kernel bar
|
||||||
|
#+END_SRC")
|
||||||
|
(goto-char (point-min))
|
||||||
|
(should-error (org-babel-jupyter-src-block-session))
|
||||||
|
(erase-buffer)
|
||||||
|
(insert "\
|
||||||
|
#+BEGIN_SRC jupyter-foo :session bar :kernel bar
|
||||||
|
#+END_SRC")
|
||||||
|
(goto-char (point-min))
|
||||||
|
(should (equal (org-babel-jupyter-src-block-session)
|
||||||
|
(org-babel-jupyter-session-key
|
||||||
|
(nth 2 (org-babel-get-src-block-info 'light)))))
|
||||||
|
(erase-buffer)))
|
||||||
|
|
||||||
(ert-deftest org-babel-jupyter-:results-header-arg ()
|
(ert-deftest org-babel-jupyter-:results-header-arg ()
|
||||||
:tags '(org)
|
:tags '(org)
|
||||||
(ert-info ("scalar suppresses table output")
|
(ert-info ("scalar suppresses table output")
|
||||||
|
|
Loading…
Add table
Reference in a new issue