"Charles C. Berry" writes: > On Wed, 6 Aug 2014, Aaron Ecay wrote: > >> Hi Eric, >> >> 2014ko abuztuak 6an, Eric Schulte-ek idatzi zuen: >> >> [...] >> >>> Perhaps you could begin with a patch for the regexp issue in this >>> thread? >> >> I have pushed a patch which allows us to avoid the regex issue >> entirely by using a native R method to capture the session output to a >> file. >> >> This introduces the change that the output no longer appears in the >> session buffer, but I think that’s actually an improvement: we were not >> previously echoing the commands to the buffer, such that the output >> would show up “out of the blue” without any indication of how it got >> there. > > Hi Aaron, > > I like what you are trying to do, but ... > > 1) The change has at least one bug: Remote sessions are broken by this > change. > > 2) The behavior of :results output is modified in ways that might not be > desired. i.e. warnings and errors will not show up in the output. > > Can you revert this change until the bugs are sorted out and consensus > about the proper handling of cases like '2' is reached? > > Can I also suggest that in the future before a change is pushed, that the > patch is announced so we can try it out or at least eyeball it and discuss > issues/bugs? I think that would be a good idea, or create a separate branch for testing these features. > > Details: > > Issue 1) =========== > > If I open a *.org file on a remote machine and C-c C-c on a src block that > has `:session :results output', after the usual session startup the src > block fails. The session buffer shows this > > ==== > Error in file(file, if (append) "a" else "w") : > cannot open the connection > In addition: Warning message: > In file(file, if (append) "a" else "w") : > cannot open file '/scpc:berry@:/tmp/R-1155xWV': > No such file or directory >> > === > > The file '/tmp/R-1155xWV' was created. > > I think if the tramp file localname is used. it might work. I do not know > tramp, but maybe something like > > (let output-file-localname > (if (tramp-tramp-file-p output-file) > (tramp-file-name-localname > (tramp-dissect-file-name output-file)) > output-file)) > > is good enough. > > > Issue 2) =========== > > ECM: > > #+NAME: aa > #+BEGIN_SRC R :session R2 :results output > warning("this is a warning") > 1+1 > #+END_SRC > > #+RESULTS: aa > : [1] 2 > > For some purposes having the warnings in the #+RESULTS: block is helpful. > > And when revising code, having the errors in the #+RESULTS helps - > especially if I have to put aside work in progress. Instead of capture.output, one could possibly use sink() as it can also capture error messages and warnings, as shown in the help: #+begin_src R ## capture all the output to a file. zz <- file("all.Rout", open = "wt") sink(zz) sink(zz, type = "message") try(log("a")) ## back to the console sink(type = "message") sink() file.show("all.Rout") #+end_src This combined with a try() bloxk could work? Cheers, Rainer > > HTH, > > Chuck > -- 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