Hi Chuck, Thanks for following that up. And sorry for the long delay.
"Charles C. Berry" <ccbe...@ucsd.edu> writes: > On Thu, 17 Dec 2015, Andreas Leha wrote: > >> Hi all, >> >> I think there is a bug in the handling of results of R src blocks. What >> is the suggested way to make an R block return a link to a file? The >> obvious way appends a newline character to the file link (which is >> broken because of that). >> >> Here is an example: >> --8<---------------cut here---------------start------------->8--- >> #+NAME: TESTSRC >> #+BEGIN_SRC R :results file >> a <- file.path("junk", "test.org") >> a >> #+END_SRC >> >> #+RESULTS: TESTSRC >> [[file:junk/test.org >> ]] >> >> --8<---------------cut here---------------end--------------->8--- > > > That *is* the suggested way, and it will work in (say) emacs-lisp. The > problem for `:results value' (the default) is that a newline is added > to the result by `org-babel-R-evaluate-external-process'. > > This *might* be the fix, but I do not have time to check it thoroughly: > > diff --git a/lisp/ob-R.el b/lisp/ob-R.el > index f72cd95..f660bbd 100644 > --- a/lisp/ob-R.el > +++ b/lisp/ob-R.el > @@ -397,7 +397,7 @@ last statement in BODY, as elisp." > (org-babel-result-cond result-params > (with-temp-buffer > (insert-file-contents tmp-file) > - (buffer-string)) > + (org-babel-chomp (buffer-string) "\n")) > (org-babel-import-elisp-from-file tmp-file '(16))) > column-names-p))) > (output (org-babel-eval org-babel-R-command body)))) > > > In the meanwhile, you can work around by using `:results output' and > wrapping the result in cat(). > Using the ':results output' work around won't work on most of my code blocks as these are typically longer and more verbose. So, that really is just a work-around. I've tested your patch and it seems to work. But it does seem to need an analogous change in org-babel-R-evaluate-session to also cure blocks with ':session'. --8<---------------cut here---------------start------------->8--- diff --git a/lisp/ob-R.el b/lisp/ob-R.el index f72cd95..193548e 100644 --- a/lisp/ob-R.el +++ b/lisp/ob-R.el @@ -397,7 +397,7 @@ last statement in BODY, as elisp." (org-babel-result-cond result-params (with-temp-buffer (insert-file-contents tmp-file) - (buffer-string)) + (org-babel-chomp (buffer-string) "\n")) (org-babel-import-elisp-from-file tmp-file '(16))) column-names-p))) (output (org-babel-eval org-babel-R-command body)))) @@ -431,7 +431,7 @@ last statement in BODY, as elisp." (org-babel-result-cond result-params (with-temp-buffer (insert-file-contents tmp-file) - (buffer-string)) + (org-babel-chomp (buffer-string) "\n")) (org-babel-import-elisp-from-file tmp-file '(16))) column-names-p))) (output --8<---------------cut here---------------end--------------->8--- Regards, Andreas