ob-python: Set Python shell in Org edit buffer

* lisp/ob-python.el (org-babel-python-associate-session): New function
setting `python-shell-buffer-name' in *Org Src* buffer according to
source block's :session parameter.  This function will be triggered by
`org-src-associate-babel-session'.
* etc/ORG-NEWS (ob-python now sets ~python-shell-buffer-name~ in Org
edit buffers): Announce the change.

Co-authored-by: Liu Hui <liuhui1610@gmail.com>

Link: https://orgmode.org/list/CAOQTW-MdC=jiGf+3bEVtfww+izSZix7csBJ+mZ4eZ2BQHDR42w@mail.gmail.com
This commit is contained in:
Ihor Radchenko 2024-01-28 21:29:25 +01:00
parent a4a880d1f9
commit 107cbc74a9
No known key found for this signature in database
GPG Key ID: 6470762A7DA11D8B
2 changed files with 13 additions and 0 deletions

View File

@ -13,6 +13,13 @@ Please send Org bug reports to mailto:emacs-orgmode@gnu.org.
* Version 9.7 (not released yet) * Version 9.7 (not released yet)
** Important announcements and breaking changes ** Important announcements and breaking changes
*** ob-python now sets ~python-shell-buffer-name~ in Org edit buffers
When editing a Python src block, the editing buffer is now associated
with the Python shell specified by the src block's ~:session~ header,
which means users can now send code directly from the edit buffer,
e.g., using ~C-c C-c~, to the session specified in the Org buffer.
*** ~org-edit-special~ no longer force-starts session in R and Julia source blocks *** ~org-edit-special~ no longer force-starts session in R and Julia source blocks
Previously, when R/Julia source block had =:session= header argument Previously, when R/Julia source block had =:session= header argument

View File

@ -83,6 +83,12 @@ If `org-babel-python-command' is set, then it overrides this option."
:package-version '(Org . "8.0") :package-version '(Org . "8.0")
:type 'symbol) :type 'symbol)
(defun org-babel-python-associate-session (session)
"Associate Python code buffer with an Python session.
Make SESSION without earmuffs be the Python buffer name."
(setq-local python-shell-buffer-name
(org-babel-python-without-earmuffs session)))
(defun org-babel-execute:python (body params) (defun org-babel-execute:python (body params)
"Execute Python BODY according to PARAMS. "Execute Python BODY according to PARAMS.
This function is called by `org-babel-execute-src-block'." This function is called by `org-babel-execute-src-block'."