[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] Set Python shell in Org edit buffer
|
From: |
Ihor Radchenko |
|
Subject: |
Re: [PATCH] Set Python shell in Org edit buffer |
|
Date: |
Tue, 09 Jan 2024 18:16:49 +0000 |
Jack Kamm <jackkamm@gmail.com> writes:
>> IMHO, it might be enough to adjust org-babel-R-associate-session as the
>> following
>...
> Otherwise, this looks good to me.
See the attached tentative patch.
>From f6fd65f8e80b6efa0a5db084a9c9f94d46e67515 Mon Sep 17 00:00:00 2001
Message-ID:
<f6fd65f8e80b6efa0a5db084a9c9f94d46e67515.1704824159.git.yantar92@posteo.net>
From: Ihor Radchenko <yantar92@posteo.net>
Date: Tue, 9 Jan 2024 19:08:44 +0100
Subject: [PATCH] ob-R, ob-julia: Do not force-start session in Org Src buffers
* lisp/ob-R.el (org-babel-R-associate-session): Set
`ess-gen-proc-buffer-name-function' to associate the right session
buffer if user requests session interaction from inside Org Src edit
buffer.
(org-babel-edit-prep:R): Remove in favor of
`org-babel-R-associate-session'.
* lisp/ob-julia.el (org-babel-julia-associate-session): Implement
analogous functionality.
(org-babel-edit-prep:julia): Remove in favor of
`org-babel-julia-associate-session'.
* etc/ORG-NEWS (~org-edit-special~ no longer force-starts session in R
and Julia source blocks): Document the change.
Link: 87r0ir2ln8.fsf@gmail.com">https://orgmode.org/list/87r0ir2ln8.fsf@gmail.com
---
etc/ORG-NEWS | 11 +++++++++++
lisp/ob-R.el | 20 ++++++--------------
lisp/ob-julia.el | 16 +++++++++-------
3 files changed, 26 insertions(+), 21 deletions(-)
diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS
index b808357d8..245e595ff 100644
--- a/etc/ORG-NEWS
+++ b/etc/ORG-NEWS
@@ -13,6 +13,17 @@ Please send Org bug reports to mailto:emacs-orgmode@gnu.org.
* Version 9.7 (not released yet)
** Important announcements and breaking changes
+*** ~org-edit-special~ no longer force-starts session in R and Julia source
blocks
+
+Previously, when R/Julia source block had =:session= header argument
+set to a session name with "earmuffs" (like =*session-name*=),
+~org-edit-special~ always started a session, if it does not exist.
+
+Now, ~org-edit-special~ arranges that a new session with correct name
+is initiated only when user explicitly executes R/Julia-mode commands
+that trigger session interactions. The same session will remain
+available in the context of Org babel.
+
*** ~org-agenda-search-headline-for-time~ now ignores all the timestamp in
headings
Previously, ~org-agenda-search-headline-for-time~ made Org agenda
diff --git a/lisp/ob-R.el b/lisp/ob-R.el
index 3d13c55a7..4b5cbf7c9 100644
--- a/lisp/ob-R.el
+++ b/lisp/ob-R.el
@@ -91,17 +91,6 @@ (defcustom org-babel-R-command "R --slave --no-save"
:version "24.1"
:type 'string)
-(defvar ess-current-process-name) ; dynamically scoped
-(defvar ess-local-process-name) ; dynamically scoped
-(defun org-babel-edit-prep:R (info)
- "Initiate R session for Org edit buffer, as needed.
-The session name is taken from INFO."
- (let ((session (cdr (assq :session (nth 2 info)))))
- (when (and session
- (string-prefix-p "*" session)
- (string-suffix-p "*" session))
- (org-babel-R-initiate-session session nil))))
-
;; The usage of utils::read.table() ensures that the command
;; read.table() can be found even in circumstances when the utils
;; package is not in the search path from R.
@@ -292,13 +281,16 @@ (defun org-babel-R-initiate-session (session params)
(ess-wait-for-process R-proc)))
(current-buffer))))))
+(defvar ess-current-process-name) ; dynamically scoped
+(defvar ess-local-process-name) ; dynamically scoped
(defun org-babel-R-associate-session (session)
"Associate R code buffer with an R session.
Make SESSION be the inferior ESS process associated with the
current code buffer."
- (setq ess-local-process-name
- (process-name (get-buffer-process session)))
- (ess-make-buffer-current))
+ (when-let ((process (get-buffer-process session)))
+ (setq ess-local-process-name (process-name process))
+ (ess-make-buffer-current))
+ (setq-local ess-gen-proc-buffer-name-function (lambda (_) session)))
(defvar org-babel-R-graphics-devices
'((:bmp "bmp" "filename")
diff --git a/lisp/ob-julia.el b/lisp/ob-julia.el
index cddd25e79..10a331e54 100644
--- a/lisp/ob-julia.el
+++ b/lisp/ob-julia.el
@@ -70,12 +70,15 @@ (defvar ess-current-process-name) ; dynamically scoped
(defvar ess-local-process-name) ; dynamically scoped
(defvar ess-eval-visibly-p) ; dynamically scoped
(defvar ess-local-customize-alist); dynamically scoped
-(defun org-babel-edit-prep:julia (info)
- (let ((session (cdr (assq :session (nth 2 info)))))
- (when (and session
- (string-prefix-p "*" session)
- (string-suffix-p "*" session))
- (org-babel-julia-initiate-session session nil))))
+(defvar ess-gen-proc-buffer-name-function) ; defined in ess-inf.el
+(defun org-babel-julia-associate-session (session)
+ "Associate R code buffer with an R session.
+Make SESSION be the inferior ESS process associated with the
+current code buffer."
+ (when-let ((process (get-buffer-process session)))
+ (setq ess-local-process-name (process-name process))
+ (ess-make-buffer-current))
+ (setq-local ess-gen-proc-buffer-name-function (lambda (_) session)))
(defun org-babel-expand-body:julia (body params &optional _graphics-file)
"Expand BODY according to PARAMS, return the expanded body."
@@ -178,7 +181,6 @@ (defun org-babel-julia-assign-elisp (name value)
(format "%s = %s" name (org-babel-julia-quote-csv-field value))))
(defvar ess-ask-for-ess-directory) ; dynamically scoped
-(defvar ess-gen-proc-buffer-name-function) ; defined in ess-inf.el
(defun org-babel-julia-initiate-session (session params)
"If there is not a current julia process then create one."
(unless (string= session "none")
--
2.43.0
--
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>
- Re: [PATCH] Set Python shell in Org edit buffer, Ihor Radchenko, 2024/01/05
- Re: [PATCH] Set Python shell in Org edit buffer, Jack Kamm, 2024/01/07
- Re: [PATCH] Set Python shell in Org edit buffer, Ihor Radchenko, 2024/01/07
- Re: [PATCH] Set Python shell in Org edit buffer, Jack Kamm, 2024/01/07
- Re: [PATCH] Set Python shell in Org edit buffer, William Denton, 2024/01/07
- Re: [PATCH] Set Python shell in Org edit buffer, Ihor Radchenko, 2024/01/08
- Re: [PATCH] Set Python shell in Org edit buffer, Jack Kamm, 2024/01/08
- Re: [PATCH] Set Python shell in Org edit buffer, Jack Kamm, 2024/01/08
- Re: [PATCH] Set Python shell in Org edit buffer,
Ihor Radchenko <=
- Re: [PATCH] Set Python shell in Org edit buffer, Jack Kamm, 2024/01/10
- [FR] Add buffer-local setting to request specific ESS process/session name (was: [PATCH] Set Python shell in Org edit buffer), Ihor Radchenko, 2024/01/10
- Re: [FR] Add buffer-local setting to request specific ESS process/session name (was: [PATCH] Set Python shell in Org edit buffer), Sparapani, Rodney, 2024/01/12
- Re: [FR] Add buffer-local setting to request specific ESS process/session name (was: [PATCH] Set Python shell in Org edit buffer), Sparapani, Rodney, 2024/01/12
- Re: [FR] Add buffer-local setting to request specific ESS process/session name (was: [PATCH] Set Python shell in Org edit buffer), Ihor Radchenko, 2024/01/10
- Re: [FR] Add buffer-local setting to request specific ESS process/session name (was: [PATCH] Set Python shell in Org edit buffer), Sparapani, Rodney, 2024/01/12
- Re: [FR] Add buffer-local setting to request specific ESS process/session name (was: [PATCH] Set Python shell in Org edit buffer), Ihor Radchenko, 2024/01/10
- Re: [External] [FR] Add buffer-local setting to request specific ESS process/session name (was: [PATCH] Set Python shell in Org edit buffer), Richard M. Heiberger, 2024/01/12
- Re: [External] [FR] Add buffer-local setting to request specific ESS process/session name (was: [PATCH] Set Python shell in Org edit buffer), Ihor Radchenko, 2024/01/10
- [PATCH] Add buffer-local setting to request specific ESS process/session name (was: [PATCH] Set Python shell in Org edit buffer), Ihor Radchenko, 2024/01/21