diff --git a/CHANGELOG.org b/CHANGELOG.org index c7c36f6..f1efe0b 100644 --- a/CHANGELOG.org +++ b/CHANGELOG.org @@ -1,5 +1,10 @@ * master +- Fixed a regression that appears when executing an =org-mode= source + block of a previously created session. A new connection to the + session was being created before execution instead of using the old + connection. See #240. + - Fixed regression due to uppercase characters in kernel language names, e.g. R. =emacs-jupyter= would not work at all with language specific features. diff --git a/ob-jupyter.el b/ob-jupyter.el index b25e2b0..3868b02 100644 --- a/ob-jupyter.el +++ b/ob-jupyter.el @@ -371,8 +371,9 @@ the host." (org-babel-jupyter-parse-session session) kernel)) (puthash key client org-babel-jupyter-session-clients) - (let ((forget-client (lambda () (remhash key org-babel-jupyter-session-clients)))) - (add-hook 'kill-buffer-hook forget-client nil t))) + (jupyter-with-repl-buffer client + (let ((forget-client (lambda () (remhash key org-babel-jupyter-session-clients)))) + (add-hook 'kill-buffer-hook forget-client nil t)))) (oref client buffer))) (defun org-babel-jupyter-initiate-session (&optional session params) diff --git a/test/jupyter-test.el b/test/jupyter-test.el index 95caac9..c500d8d 100644 --- a/test/jupyter-test.el +++ b/test/jupyter-test.el @@ -1900,6 +1900,27 @@ next(x")))))) (should (org-babel-jupyter-session-p session)) (should (equal (org-babel-jupyter-session-name session) "foo/bar")))) +(ert-deftest org-babel-jupyter-initiate-session-by-key () + :tags '(org) + (jupyter-org-test + (let ((session (make-temp-name "jupyter"))) + (save-excursion + (insert + (format "#+begin_src jupyter-python :session %s\n1+1\n#+end_src\n" + session))) + (let* ((params (nth 2 (org-babel-get-src-block-info))) + (key (org-babel-jupyter-session-key params))) + (should-not (gethash key org-babel-jupyter-session-clients)) + (let ((buffer (org-babel-jupyter-initiate-session-by-key + session params)) + (client (gethash key org-babel-jupyter-session-clients))) + (should (bufferp buffer)) + (should client) + (should (object-of-class-p client 'jupyter-repl-client)) + (should (eq buffer (oref client buffer))) + (jupyter-test-kill-buffer buffer) + (should-not (gethash key org-babel-jupyter-session-clients))))))) + (ert-deftest ob-jupyter-no-results () :tags '(org) (jupyter-org-test-src-block "1 + 1;" ""))