I decided to force myself to select the correct inferior-ess-r-program with the
(probably embarrassing) elisp below. My bash scripts are named either `R-4.x.y`
or` my-R-4.3.2` ... so the first function picks those from a directory. The
second uses that to swoop up the directory tree until it finds one, and the
final one is the one I call interactively that offers me a 'menu' of R to use
- there's probably a way to have it non-interactive, but I might have multiple
R versions in the same directory!
As an aside, my actual R-4.x.y script contains an expanded version of the bash
script sent previously - if there's a softlink to it beginning my-R, calling it
adds the extra 'interactive' binds. Softlinks to it called 'shiny' or 'rstudio'
(I haven't been successful in convincing colleagues of the one true way!) do
what you'd hope (either on the login node or submitting it) - I'll try to tidy
that up a bit as it's proving quite useful.
(defun gpk-rscripts (path)
"Get a list of potential R-calling scripts in path"
(append (file-name-all-completions "R-" path) (file-name-all-completions
"my-R" path))
)
(defun gpk-findr ()
(mapcan (lambda (path)
(mapcar (lambda (r) (concat path r)) (gpk-rscripts path))
)
(list (locate-dominating-file default-directory (lambda(d)
(gpk-rscripts d))))
)
)
(defun gpk-r-set ()
"Find R executables"
(interactive)
(setq inferior-ess-r-program (completing-read "R version: " (gpk-findr)) )
)
-----Original Message-----
From: ESS-help <[email protected]> On Behalf Of James W. MacDonald
via ESS-help
Sent: 19 November 2024 16:00
To: [email protected]
Subject: Re: [ESS] Emacs/ESS using Singularity container
External Sender: Use caution.
That's very helpful! One more question if you don't mind. In Lionel Henry's
solution, he changes ess-customize-alist to map inferior-ess-r-program to the
shell script that starts the container. If you have individual shell scripts in
each analysis directory, I assume you are not doing that? Or do I misunderstand
how ess-r-customize-alist works?
defun R-docker ()
(interactive)
(let ((ess-r-customize-alist
(append ess-r-customize-alist
'((inferior-ess-r-program . <shell script location goes
here>))))
(ess-R-readline t))
(R)))
Thanks so much,
Jim
-----Original Message-----
From: ESS-help <[email protected]> On Behalf Of Gavin Kelly via
ESS-help
Sent: Tuesday, November 19, 2024 5:57 AM
To: [email protected]
Subject: Re: [ESS] Emacs/ESS using Singularity container
I'm running ESS in similar HPC circumstances, and have adopted a similar
solution to the one in Lionel Henry's post. I tend to keep a shell script
along the lines of the following in every project, and it works 'fine'. It's
singularity, but I think apptainer is equivalent. Just in case it helps.
```
pwd=$(realpath ${PWD})
project_root=$(realpath $(git rev-parse --show-toplevel || echo ${pwd))
extra=--bind
$HOME/.Xauthority,$HOME/.Xdefaults,$HOME/.Xresources,$HOME/.emacs.d,$HOME/.ssh
--env DISPLAY=$DISPLAY # in real life, $extra is defined in elsewhere and is
only used in interactive sessions, not in e.g. makefiles.
cmd=R
image=bioconductor_docker_3.18-R-4.3.2.sif
singularity exec --bind ${project_root},/tmp --pwd ${pwd} --containall
--cleanenv --env
SQLITE_TMPDIR=/tmp,BIOCPARALLEL_WORKER_NUMBER=2,GITHUB_PAT=${GITHUB_PAT}
${extra} ${image} ${cmd} $@ ``` The Francis Crick Institute Limited is a
registered charity in England and Wales no. 1140062 and a company registered in
England and Wales no. 06885462, with its registered office at 1 Midland Road
London NW1 1AT
______________________________________________
[email protected] mailing list
https://urldefense.com/v3/__https://stat.ethz.ch/mailman/listinfo/ess-help__;!!K-Hz7m0Vt54!kZsw4QAGEjvgcvGm2yIOYXWL9HXVCyZ_xygq22RiCXRtb6Q4IJz1MNikuNEZm29gn1PWPusW0iaf79DkTx1U5wmJIpk$
______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/ess-help
The Francis Crick Institute Limited is a registered charity in England and
Wales no. 1140062 and a company registered in England and Wales no. 06885462,
with its registered office at 1 Midland Road London NW1 1AT
______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/ess-help