mirror of
https://github.com/vale981/emacs-jupyter
synced 2025-03-05 07:41:37 -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
|
||||
'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
|
||||
|
||||
(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'
|
||||
parameter will be used."
|
||||
(let* ((kernel (alist-get :kernel params))
|
||||
(key (concat session "-" kernel))
|
||||
(key (org-babel-jupyter-session-key params))
|
||||
(client
|
||||
(or (gethash key org-babel-jupyter-session-clients)
|
||||
(let ((client
|
||||
|
|
|
@ -1712,6 +1712,30 @@ AB[43mCD[0mEF
|
|||
(remove-text-properties (point-min) (point-max) '(face))
|
||||
(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 ()
|
||||
:tags '(org)
|
||||
(ert-info ("scalar suppresses table output")
|
||||
|
|
Loading…
Add table
Reference in a new issue