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 <ess-help-boun...@r-project.org> On Behalf Of James W. MacDonald via ESS-help Sent: 19 November 2024 16:00 To: ess-help@r-project.org 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 <ess-help-boun...@r-project.org> On Behalf Of Gavin Kelly via ESS-help Sent: Tuesday, November 19, 2024 5:57 AM To: ess-help@r-project.org 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 ______________________________________________ ESS-help@r-project.org mailing list https://urldefense.com/v3/__https://stat.ethz.ch/mailman/listinfo/ess-help__;!!K-Hz7m0Vt54!kZsw4QAGEjvgcvGm2yIOYXWL9HXVCyZ_xygq22RiCXRtb6Q4IJz1MNikuNEZm29gn1PWPusW0iaf79DkTx1U5wmJIpk$ ______________________________________________ ESS-help@r-project.org 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 ______________________________________________ ESS-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/ess-help