From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andreas Leha Subject: Re: [babel] return file from R Date: Tue, 19 Jan 2016 15:20:56 +0000 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:49393) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aLY5s-0007uq-K8 for emacs-orgmode@gnu.org; Tue, 19 Jan 2016 10:21:17 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aLY5n-0006uA-KT for emacs-orgmode@gnu.org; Tue, 19 Jan 2016 10:21:16 -0500 Received: from plane.gmane.org ([80.91.229.3]:49770) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aLY5n-0006tL-DC for emacs-orgmode@gnu.org; Tue, 19 Jan 2016 10:21:11 -0500 Received: from list by plane.gmane.org with local (Exim 4.69) (envelope-from ) id 1aLY5h-0007IR-8T for emacs-orgmode@gnu.org; Tue, 19 Jan 2016 16:21:05 +0100 Received: from 193.63.221.42 ([193.63.221.42]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Tue, 19 Jan 2016 16:21:05 +0100 Received: from andreas.leha by 193.63.221.42 with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Tue, 19 Jan 2016 16:21:05 +0100 List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: emacs-orgmode@gnu.org Hi Chuck, Thanks for following that up. And sorry for the long delay. "Charles C. Berry" 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