[Rd] Injecting source reference from external editors (emacs).
Vitalie Spinu
spinuvit at gmail.com
Wed Nov 16 17:18:33 CET 2011
Hi everyone,
I would like to inject source reference into R objects from external editor. In
my case it's emacs with ESS and ess-tracebug
(http://code.google.com/p/ess-tracebug/).
Currently the user has to source the file before the src references become
available. I would like to spare her, and insert the source references "on-line"
during normal interaction (i.e. sending chunks of code from emacs buffers)
With new additions in R-14 I started looking into it and discovered that an
encapsulation
eval(parse(text = "tf <- function(a){a^5
b <- a;
return(b)
}", srcfile = srcfile("@buffer@")))
does quite a good job, and the debugger would display something like:
Browse[2]> debug at @buffer@#2: b <- a
Browse[2]> debug at @buffer@#3: return(b)
which is great, and could be used for what I want.
The problem is that I have to interfere with the user's input, which might not
be a good idea always. Is there (will be?) a more direct way of doing
this without encapsulation?
Currently when a function "tf<-function(a){a^5}" is created at R
prompt, R associates
with it a srcref with empty srcfile reference.
I wonder if it would be possible to instruct R that next evaluation will be from
buffer "Xbuf" at line N, something like
setSrcSource(srcobject="buffX", srcline=45)
so that any input that follows, would get a srcref pointing to "buffX" starting
from line 45 instead of just empty reference?
At the end of the evaluation I would just reset R with
setSrcSource(NULL)
Thanks,
Vitalie.
More information about the R-devel
mailing list