emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Rainer M Krug <Rainer@krugs.de>
To: Bastien <bzg@gnu.org>
Cc: emacs-orgmode@gnu.org
Subject: Re: getting directory of org installation in elisp
Date: Fri, 23 May 2014 16:01:32 +0200	[thread overview]
Message-ID: <m2egzkmw5f.fsf@krugs.de> (raw)
In-Reply-To: <87egzk7hdr.fsf@bzg.ath.cx> (Bastien's message of "Fri, 23 May 2014 15:28:38 +0200")

[-- Attachment #1: Type: text/plain, Size: 3277 bytes --]

Bastien <bzg@gnu.org> writes:

> Hi Rainer,
>
> Rainer M Krug <Rainer@krugs.de> 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:      Rainer@krugs.de

Skype:      RMkrug

PGP: 0x0F52F982

[-- Attachment #2: Type: application/pgp-signature, Size: 494 bytes --]

  reply	other threads:[~2014-05-23 14:01 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-23  8:15 getting directory of org installation in elisp Rainer M Krug
2014-05-23 13:28 ` Bastien
2014-05-23 14:01   ` Rainer M Krug [this message]
2014-05-23 20:11     ` Aaron Ecay
2014-05-30 12:17     ` Bastien
2014-05-30 15:47       ` Rainer M Krug

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=m2egzkmw5f.fsf@krugs.de \
    --to=rainer@krugs.de \
    --cc=bzg@gnu.org \
    --cc=emacs-orgmode@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).