From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dan Davison Subject: Re: return link to :file when using #+call Date: Sun, 23 Jan 2011 09:14:39 +0000 Message-ID: References: <20101231000534.3e9e97ea@bill> <87oc7ueebz.fsf@gmail.com> <20110123011309.69b6a11c@bill> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from [140.186.70.92] (port=47947 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Pgw2I-0002jx-KI for emacs-orgmode@gnu.org; Sun, 23 Jan 2011 04:15:03 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Pgw2G-0000ev-QJ for emacs-orgmode@gnu.org; Sun, 23 Jan 2011 04:15:02 -0500 Received: from lo.gmane.org ([80.91.229.12]:36363) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Pgw2G-0000eS-FW for emacs-orgmode@gnu.org; Sun, 23 Jan 2011 04:15:00 -0500 Received: from list by lo.gmane.org with local (Exim 4.69) (envelope-from ) id 1Pgw2F-0000N6-BR for emacs-orgmode@gnu.org; Sun, 23 Jan 2011 10:14:59 +0100 Received: from 94.197.177.105.threembb.co.uk ([94.197.177.105]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sun, 23 Jan 2011 10:14:59 +0100 Received: from dandavison7 by 94.197.177.105.threembb.co.uk with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sun, 23 Jan 2011 10:14:59 +0100 List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: emacs-orgmode@gnu.org Myles English writes: > Thanks for your answer Eric. Recent changes as per > http://thread.gmane.org/gmane.emacs.orgmode/35396 > means that this no longer works. Thanks for bringing this up Myles. > To recap: what I would like to do is to #+call an R source > block, passing a filename, and have it write a plot to that file and > also insert a link to that file in the org file. Any ideas? > > Here is what I have tried: > > #+source: foo() > #+begin_src R :file bar.png :results graphics > plot(1,1) > #+end_src > > > #+call: foo[:file baz.png]() > > #+results: foo[:file baz.png]() > : baz.png > > baz.png contains a plot, but no file link is inserted. Yes you need :results file, so the line should be #+call: foo[:file baz.png]() :results file Explanation: In simple single-block usage, :file automatically sets :results file. But here :file in square brackets is passed to block foo, so the #+call line needs its own :results file. (And in fact :file would be wrong; see below). > > #+call: foo() > > #+results: foo() > : bar.png > > bar.png contains a plot, but no file link is inserted. Yep. Same as above, except here you haven't overridden the file name. > #+call: foo[:file biff.png]() :file biff.png > > #+results: foo[:file biff.png]() > [[file:biff.png]] > > a file link is inserted but file biff.png contains 'biff.png' Right, this one's kind of instructive for understanding this stuff. Here, foo returns its file name as a string, so "biff.png". The #+call line has been told to send its results to file with the :file argument, and it takes that literally, writing the string "biff.png" to its output file. So if what we want is a file containing graphics, we are not going to want :file on the #+call line. What we want is to interpret the string as a file name, and that's what :results file does. > > #+call: foo[:file pow.png]() :file pow.png :results graphics > > #+results: foo[:file pow.png]() > [[file:pow.png]] > > a file link is inserted but file pow.png contains 'pow.png' Same as above. #+call receives a string from foo; it can't turn that string into the desired graphics. In fact, :results graphics currently only has any effect on an R block (i.e. at an R block, or passed to an R block inside [ ... ]). Dan > > Thanks, > > Myles > > > On Wed, 05 Jan 2011 23:28:00 -0700 > "Eric Schulte" wrote: > >> Hi Myles, >> >> Currently I believe the best option is the solution you posted below, >> the file name is repeated because both the code block and the call >> line need to know the file name to create the file and the link >> respectively. >> >> Cheers -- Eric >> >> Myles English writes: >> >> > Myles English gmail.com> writes: >> > >> >> #+source: foo() >> >> #+begin_src R :file bar.png >> >> plot(1,1) >> >> #+end_src >> > >> > This works but I have to repeat the filename: >> > >> > #+call: foo[:file baz.png]() :file baz.png >> > >> > #+results: foo[:file baz.png]() >> > [[file:baz.png]] >> > >> > Myles >> > >> > >> > _______________________________________________ >> > Emacs-orgmode mailing list >> > Please use `Reply All' to send replies to the list. >> > Emacs-orgmode@gnu.org >> > http://lists.gnu.org/mailman/listinfo/emacs-orgmode > > > _______________________________________________ > Emacs-orgmode mailing list > Please use `Reply All' to send replies to the list. > Emacs-orgmode@gnu.org > http://lists.gnu.org/mailman/listinfo/emacs-orgmode