Evaluating code in .Rnw (R/tex) buffers
Anthony Rossini
rossini at u.washington.edu
Tue Mar 26 21:11:03 CET 2002
Yes, I've used it for a while. It's nice, though I wish they'd not used .Rnw for the extension.
The process problem is not going to be easily solved, short of doing the code right (which means probably mmm-mode, not the noweb-mode hacks). What you suggest may not work, since noweb-mode re-initializes the sub-mode and does something similar to narrow-to-region. Part of the problem can be realized by actually doing noweb programming in multiple languages.
As far as the Sweave stuff, we probably can add a hot-key to do it.
best,
-tony
On Tue, 26 Mar 2002, Stephen Eglen wrote:
> Hi,
>
> I have recently started using Sweave, the R/S package by Friedrich
> Leisch that allows R and LaTeX code to be intermixed in the same
> document. It is a very nice package, if you've not seen it
> (http://www.ci.tuwien.ac.at/~leisch/Sweave).
>
> Has anyone else started using ESS for writing .Rnw files? If so, I
> had a couple of questions:
>
> 1. Everytime the point jumps out of a code chunk, the major mode
> correctly switches from R to LaTeX. In the same buffer, if I return
> into a code chunk, and evaluate a line of code (using
> e.g. ess-eval-line-and-step), I am again asked which "Process to load
> into:".
>
> For example, do "M-x R" then load the following into a file,
> e.g. test.Rnw:
> ----------------------------------------------------------------------
> % -*- mode: noweb; noweb-default-code-mode: R-mode; -*-
> \documentclass[12pt]{article}
>
> \begin{document}
>
> Some \LaTeX code
> <<>>=
> rnorm(3)
> @
>
> Another chunk
> <<>>=
> 2+5
> @
> \end{document}
> ----------------------------------------------------------------------
>
> If I put point on the "rnorm" line, then M-x ess-eval-line-and-step, I
> am prompted which process to send the line to, before the line is
> evaluated. If I move out of that chunk and then back in, it will then
> ask me again which process I want to send the line to.
>
> It seems that everytime I re-enter the code chunk, the variable
> ess-local-process-name is reset to nil. This happens since the
> variables in S-editing-alist get reset to the cdr. In the case of
> ess-local-process-name name, there is no "default value", so if it
> already has got a value, perhaps it should keep that value, rather
> than being reset to nil?
>
> So, my suggestion is to test within ess-setq-vars-local that cdr of
> each alist entry is non-nil before setting the value:
>
> (defun ess-setq-vars-local (alist &optional buf)
> "Set language variables from ALIST, in buffer BUF, if desired."
> (if buf (set-buffer buf))
> (mapcar (lambda (pair)
> (make-local-variable (car pair))
> (if (cdr pair) ;; add this test?
> (set (car pair) (eval (cdr pair)))))
> alist)
> (ess-write-to-dribble-buffer
> (format "(ess-setq-vars-LOCAL): language=%s, dialect=%s, buf=%s, comint..echoes=%s, comint..sender=%s\n"
> ess-language ess-dialect buf comint-process-echoes comint-input-sender)))
>
>
> 2. Has anyone else got any shortcuts for running Sweave on the
> current .Rnw buffer? At the moment, once I've finished editing the
> .Rnw file, I switch to the *R* buffer and then run the command:
>
> > Sweave("chap1.Rnw"); system("latex chap1")
>
> So, if anyone had any suggestions on keybindings/approaches, I'd be
> glad to hear of them.
>
>
> Best wishes,
> Stephen Eglen
>
> -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
> ess-help mailing list -- To (un)subscribe, send
> subscribe or unsubscribe
> (in the "body", not the subject !) To: ess-help-request at stat.math.ethz.ch
> _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
>
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
ess-help mailing list -- To (un)subscribe, send
subscribe or unsubscribe
(in the "body", not the subject !) To: ess-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
More information about the ESS-help
mailing list