From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rainer M Krug Subject: Re: getting directory of org installation in elisp Date: Fri, 23 May 2014 16:01:32 +0200 Message-ID: References: <87egzk7hdr.fsf@bzg.ath.cx> Mime-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha1; protocol="application/pgp-signature" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:59985) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Wnq2d-0001x5-3h for emacs-orgmode@gnu.org; Fri, 23 May 2014 10:01:51 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Wnq2X-0000bH-2i for emacs-orgmode@gnu.org; Fri, 23 May 2014 10:01:47 -0400 In-Reply-To: <87egzk7hdr.fsf@bzg.ath.cx> (Bastien's message of "Fri, 23 May 2014 15:28:38 +0200") List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Bastien Cc: emacs-orgmode@gnu.org --=-=-= Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Bastien writes: > Hi Rainer, > > Rainer M Krug writes: > >> I want to load some R code into org when using R with org (i.e. in >> ob-R.el) which would be part of org mode. Therefore I have two >> questions: > > I'm not sure I understand: why do you need to put R code in an > external file? For testing purpose? No - there is quite a bit of R code in ob-R.el which gives quite abit of options for customization. As R users are usually more comfortable with using R then elisp, I am moving the R code into external .R files which are loaded and the code in these is used for variable transfer and (planned) the wrapping when creating graphs. Fallbacks, i.e. default code stored in ob-R.el when the file can not be loaded, id=3Ds in the process of being implemented. You can see how it looks in [1] where my changes are sitting. And I want to load this R code into R, controlled from org. Here is the relevant code: ,---- | (defun org-babel-expand-body:R (body params &optional graphics-file) | "Expand BODY according to PARAMS, return the expanded body." | (mapconcat 'identity | (append | (when (cdr (assoc :prologue params)) | (list (cdr (assoc :prologue params)))) | (list=20 | " while ('org:functions' %in% search()) { detach(pos=3Dgrep('org:= functions', search())) }=20 | attach( what =3D NULL, name =3D 'org:functions' ) ") | (list | (format " userdir <- '%s'=20 | for( f in dir(userdir, pattern=3D'.R', full.names=3DTRUE) ){ try= (source(f, keep.source =3D FALSE)) } " org-babel-R-directory-in-org)) | (list (format " .org.createEnvironment('%s')" org-babel-R-vari= able-environment-name )) | (org-babel-variable-assignments:R params) | (list body) | (when (cdr (assoc :epilogue params)) | (list (cdr (assoc :epilogue params))))) | "\n")) `---- > >> 1) Where can I put the R code? My idea would be to put it in >> ORGDIR/etc/R/ - would this be OK with the general philosophy of directory >> structures? >> >> 2) How can I get the ORGDIR under elisp, so that I can use it to load >> From ORGDIR/R/*.R ? > > I can't parse this too :) If that helps, please send a patch with > what you would do, and we'll discuss from the patch. I am using at the moment the following construct to get the directory I want: ,---- | (defvar org-babel-R-directory-in-org=20 | (mapconcat 'identity | (append (butlast (split-string (locate-library "org") "/") 2)=20 | '("etc" "R" "")) | "/") | "Original org directory from which the *.R files will be loaded. | This value should *not* be changed and is determined by the=20 | installation location of org.") `---- > > Thanks, Thanks, Rainer Footnotes:=20 [1] https://github.com/rkrug/orgmode-dev =2D-=20 Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc (Conservation Biology,= UCT), Dipl. Phys. (Germany) Centre of Excellence for Invasion Biology Stellenbosch University South Africa Tel : +33 - (0)9 53 10 27 44 Cell: +33 - (0)6 85 62 59 98 Fax : +33 - (0)9 58 10 27 44 Fax (D): +49 - (0)3 21 21 25 22 44 email: Rainer@krugs.de Skype: RMkrug PGP: 0x0F52F982 --=-=-= Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG/MacGPG2 v2.0.22 (Darwin) iQEcBAEBAgAGBQJTf1TAAAoJENvXNx4PUvmCEbsH/0mp1J69GEkcbfeN00pdMmWX gmamPotdJefu5898aQed3zMVSRAD4Pyp3N7axQzU8C9JlNO8krGSKdLe7F4ZeyOG C1D4fJp1Lzd0XF0E+c8KQGO7bwNUrVqn9K+NmQFUUILeejJE3h3pLIcEk5bUGiSp 9FPtDCmS6Fi08+/hSBMh5vmuAtZCrIkVG2AKRT+nO+W8qjq8gXabmb0loX/ZAv4v 1Aj0x5lCLh8EJ1EN+DSOfoQREcM8PI+MugFKQKOJZpoImR0jMQ9PXov1hwMH67GK im3AzmYSWn5YvPKSyVYqZ4sE1EhdROGMHvNythXURFhw2NWrjXgM5FW4Er8nUzA= =yj5s -----END PGP SIGNATURE----- --=-=-=--