[R-SIG-Mac] quartz.save() and ESS (was: Linux user asks: What about that Editor you have ...)
Marc Schwartz
marc_schwartz at me.com
Sat May 16 01:58:31 CEST 2009
On May 15, 2009, at 5:09 PM, Steve Revilak wrote:
> marc_schwartz> Can you describe the problems that you are having with
> marc_schwartz> Emacs/ESS?
> marc_schwartz> marc_schwartz> I have played around with the editor
> in R.app on OSX,
> marc_schwartz> but I find the Emacs/ESS combination to be superior. In
> marc_schwartz> fact, I build Emacs 23 from CVS to have a 'real' Emacs
> marc_schwartz> on OSX, as opposed to the quirky behavior of Aquamacs.
>
> I'd like to ask a tangental question.
>
> I'm running Mac OS X 10.4.11 on a G5 PPC, and I also build Emacs from
> source.
>
> GNU Emacs 22.3.1 (powerpc-apple-darwin8.11.0, Carbon Version 1.6.0)
> of 2009-03-28 on spud.local
>
> I've recently started experimenting with ESS version 5.3.11, which I'm
> using in conjunction with R 2.9.0. About half of my time is spent in
> R.app (console and/or built-in editor), and the other half is spent
> with ESS.
>
> One thing I miss with ESS is quartz.save(). From ESS, I can open a
> quartz() device and plot to it, but quartz.save() gives the error
> 'could not find function "quartz.save"'. Here's an example:
>
> # output starting from M-x R
>
> R version 2.9.0 (2009-04-17)
> Copyright (C) 2009 The R Foundation for Statistical Computing
> ISBN 3-900051-07-0
>
> R is free software and comes with ABSOLUTELY NO WARRANTY.
> You are welcome to redistribute it under certain conditions.
> Type 'license()' or 'licence()' for distribution details.
>
> Natural language support but running in an English locale
>
> R is a collaborative project with many contributors.
> Type 'contributors()' for more information and
> 'citation()' on how to cite R or R packages in publications.
>
> Type 'demo()' for some demos, 'help()' for on-line help, or
> 'help.start()' for an HTML browser interface to help.
> Type 'q()' to quit R.
>
> [Previously saved workspace restored]
>
> > options(STERM='iESS', editor='emacsclient')
> > quartz();
> > plot(1:10, type="l")
> > quartz.save("foo.png");
> Error: could not find function "quartz.save"
>
> dev.copy() works, though.
>
> > dev.copy(device=png, filename="foo.png")
> quartz_off_screen
> 3
> > dev.off()
> quartz
> 2
>
> Is there a way to have quartz.save() work from within ESS?
The function quart.save() is defined in a file called GUI-tools.R
which is part of R.app and not part of R itself. Thus, it would not be
available by default outside of the OSX GUI.
You can see the file here:
https://svn.r-project.org/R-packages/trunk/Mac-GUI/GUI-tools.R
However, trying it here, if you have R.app installed, you can use:
source("/Applications/R.app/Contents/Resources/GUI-tools.R")
to make the function available outside of the GUI.
Running R from a regular Terminal:
> source("/Applications/R.app/Contents/Resources/GUI-tools.R")
[R.app GUI () i386-apple-darwin9.7.0]
> plot(1:10)
> quartz.save("plot.png")
quartz
2
> quartz.save("plot.pdf", type = "pdf")
quartz
2
I tried it from Emacs/ESS and as expected, it works there as well.
HTH,
Marc Schwartz
More information about the R-SIG-Mac
mailing list