Ihor Radchenko <yanta...@posteo.net> 于2023年12月5日周二 19:48写道: > > Liu Hui <liuhui1...@gmail.com> writes: > > > When editing python src block using C-c ', the python shell is not set > > in Org edit buffer according to the :session header argument of the > > block. Consequently, commands such as python-shell-send-region cannot > > send python code to the correct python process. To address this, the > > attached patch defines org-babel-edit-prep:python in ob-python.el. > > Makes sense. > I think we may drop a note about this new feature in ORG-NEWS.
Thanks, I have added it in the attached patch. > > In addition, I tried to use org-src-associate-babel-session at first, > > but found it doesn't work because it is called when enabling > > org-src-mode, where org-src--babel-info is still nil. It seems it has > > stopped working since 203bf5870, and I think it is safe to remove it > > and related stuffs to avoid confusion. > > I do not see it being used much, except > https://github.com/frederic-santos/ob-ess-julia and > https://github.com/alphapapa/outshine > Although, ob-ess-julia is deprecated and outshine only mentions this in > "TODO" comment. > > To be safe, I'd prefer to mark `org-src-associate-babel-session' > obsolete and mention the removal in ORG-NEWS, pointing users to > `org-babel-edit-prep:..' instead. Fine by me.
From 295b28fece2f2125b40635118a5a705af4c8ce74 Mon Sep 17 00:00:00 2001 From: Liu Hui <liuhui1...@gmail.com> Date: Tue, 5 Dec 2023 11:40:38 +0800 Subject: [PATCH] Set Python shell in Org edit buffer * lisp/ob-python.el (org-babel-edit-prep:python): New function. * etc/ORG-NEWS (ob-python now sets ~python-shell-buffer-name~ in Org edit buffers): Announce the change. --- etc/ORG-NEWS | 6 ++++++ lisp/ob-python.el | 7 +++++++ 2 files changed, 13 insertions(+) diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS index aef7e1184..826ea3526 100644 --- a/etc/ORG-NEWS +++ b/etc/ORG-NEWS @@ -640,6 +640,12 @@ return a matplotlib Figure object to plot. For output results, the current figure (as returned by =pyplot.gcf()=) is cleared before evaluation, and then plotted afterwards. +*** 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 +argument. + *** =ob-maxima.el=: Support for ~batch~ and ~draw~ =ob-maxima= has two new header arguments: ~:batch~ and diff --git a/lisp/ob-python.el b/lisp/ob-python.el index 6c568a36d..8ff2c7a1d 100644 --- a/lisp/ob-python.el +++ b/lisp/ob-python.el @@ -67,6 +67,13 @@ (defcustom org-babel-python-None-to 'hline :package-version '(Org . "8.0") :type 'symbol) +(defun org-babel-edit-prep:python (info) + "Set Python shell in Org edit buffer according to INFO." + (let ((session (cdr (assq :session (nth 2 info))))) + (when (and session (not (string= session "none"))) + (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'." -- 2.25.1