[ESS] edit.vignette
    Erik Iverson 
    iverson at biostat.wisc.edu
       
    Thu Nov  6 19:22:54 CET 2008
    
    
  
Hello all -
I am using ESS, version 5.3.8, latest R.  I want to "edit" a vignette, 
i.e., see the R code associated with the vignette, and be able to send 
that code to my *R* buffer.
Example:
library(grid)
edit(vignette("grid"))
As my editor is emacsclient, this brings up the correct .R file in a 
buffer, and my *R* buffer shows "Waiting for Emacs".  Per a thread on 
this list, found at 
https://stat.ethz.ch/pipermail/ess-bugs/2006q2/000292.html
"edit(vignette(...)) works fine for me, the only thing that may be hard
to find out for users is that you have to press C-c C-c in the R
buffer to get back to the prompt (by default R waits for the file to
be closed), but once you have done that you can edit the vignette
code, send it line by line to R etc."
This sounds exactly like what I want.  The problem is, I switch over to 
the *R* buffer, do C-c C-c, and the buffer with the vignette with R code 
in is killed!  So I'm not able to replicate the behavior of the 
preceding paragraph.
Can anyone get that to work using the above process?
I did get what I want working by defining a function myemacs, as
myemacs <- function(file = "" , title = "") {
   system(paste(getOption("editor"), "-n", file))
}
and then calling edit.vignette like this:
edit(vignette("grid"), editor = myemacs)
This works because edit.vignette calls file.edit, which accepts a 
function name for the "editor" argument, but this solution relies on 
internal, undocumented behavior.
The key is the "-n" argument to emacsclient, which doesn't wait for the 
emacs server to return, thus the .R file is open, and the *R* buffer is 
waiting for input.
Thanks,
Erik Iverson
    
    
More information about the ESS-help
mailing list