emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] getting directory of org installation in elisp


From: Rainer M Krug
Subject: Re: [O] getting directory of org installation in elisp
Date: Fri, 23 May 2014 16:01:32 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (darwin)

Bastien <address@hidden> writes:

> Hi Rainer,
>
> Rainer M Krug <address@hidden> 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=s 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 
|              " while ('org:functions' %in% search()) { 
detach(pos=grep('org:functions', search())) } 
|               attach( what = NULL, name = 'org:functions' ) ")
|             (list
|              (format " userdir <- '%s' 
|               for( f in dir(userdir, pattern='.R', full.names=TRUE) ){ 
try(source(f, keep.source = FALSE)) } " org-babel-R-directory-in-org))
|             (list (format "     .org.createEnvironment('%s')" 
org-babel-R-variable-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 
|   (mapconcat 'identity
|            (append (butlast (split-string (locate-library "org") "/") 2) 
|                    '("etc" "R" ""))
|            "/")
|   "Original org directory from which the *.R files will be loaded.
| This value should *not* be changed and is determined by the 
| installation location of org.")
`----


>
> Thanks,

Thanks,

Rainer

Footnotes: 
[1]  https://github.com/rkrug/orgmode-dev

-- 
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:      address@hidden

Skype:      RMkrug

PGP: 0x0F52F982

Attachment: pgprMIlDUDiPR.pgp
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]