On 02/07/2024 15:35, Ihor Radchenko wrote:
Sam <s...@crawf.uk> writes:
I just noticed an inconsistency between the way ob-R and ob-python
select executables. For python, there are 3 variables:
org-babel-python-command, org-babel-python-command-session and
org-babel-python-command-nonsession, with the former overriding the
latter two.
This was added because it is relatively common to use different commands
for session and non-session python blocks (things like ipython
vs. python).
For R, there is only org-babel-R-command, which is ignored when running
as a session.
Is it worth trying to make the R functionality as similar as possible to
the python? If so then I'm happy to submit a patch doing just
that. However, I'm not sure what is the best way to handle giving
command-line arguments to the R interpreter when initialising a session,
because you need to set inferior-ess-program to the executable
specifically, and put any arguments in inferior-R-args.
The question is whether it is practically useful to have separate
commands for R session and R non-session blocks. For most interpreters,
it is not very useful - they use the same command.
I agree that it's unlikely that users will want separate commands
(though tools like radian do exist).
Regardless, there is still the issue that, if :session is not none, then
babel will ignore org-babel-R-command, as it just makes a call to
run-ess-R. So even if you don't want to add more variables (which
ultimately I'd agree with), it might still be worth wrapping that call
in something like
(let ((inferior-ess-R-program (or org-babel-R-command
inferior-ess-R-program)))
...)