From 107cbc74a9c4a51025555864c4895d7415c793f6 Mon Sep 17 00:00:00 2001 From: Ihor Radchenko Date: Sun, 28 Jan 2024 21:29:25 +0100 Subject: [PATCH] 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 Link: https://orgmode.org/list/CAOQTW-MdC=jiGf+3bEVtfww+izSZix7csBJ+mZ4eZ2BQHDR42w@mail.gmail.com --- etc/ORG-NEWS | 7 +++++++ lisp/ob-python.el | 6 ++++++ 2 files changed, 13 insertions(+) diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS index f4e98d78b..eb4303cf1 100644 --- a/etc/ORG-NEWS +++ b/etc/ORG-NEWS @@ -13,6 +13,13 @@ Please send Org bug reports to mailto:emacs-orgmode@gnu.org. * Version 9.7 (not released yet) ** 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 Previously, when R/Julia source block had =:session= header argument diff --git a/lisp/ob-python.el b/lisp/ob-python.el index 4d7492e2b..2f62d7353 100644 --- a/lisp/ob-python.el +++ b/lisp/ob-python.el @@ -83,6 +83,12 @@ If `org-babel-python-command' is set, then it overrides this option." :package-version '(Org . "8.0") :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) "Execute Python BODY according to PARAMS. This function is called by `org-babel-execute-src-block'."