From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eric Schulte Subject: Re: [Babel][Bug] Inconsistent output from babel function depending on how called Date: Fri, 27 May 2011 09:28:07 -0600 Message-ID: <87hb8g6u48.fsf@gmail.com> References: <87wrhdqozg.fsf@gmail.com> <4DDEA75B.4040601@christianmoe.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Return-path: Received: from eggs.gnu.org ([140.186.70.92]:44001) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QPyxU-0001Pr-K0 for emacs-orgmode@gnu.org; Fri, 27 May 2011 11:28:18 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QPyxT-0007vd-AH for emacs-orgmode@gnu.org; Fri, 27 May 2011 11:28:16 -0400 Received: from mail-pw0-f41.google.com ([209.85.160.41]:59444) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QPyxT-0007sC-0o for emacs-orgmode@gnu.org; Fri, 27 May 2011 11:28:15 -0400 Received: by pwi12 with SMTP id 12so1042830pwi.0 for ; Fri, 27 May 2011 08:28:14 -0700 (PDT) In-Reply-To: (Ethan Ligon's message of "Thu, 26 May 2011 18:04:22 -0700") 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: Ethan Ligon Cc: "Emacs-orgmode@gnu.org" , mail@christianmoe.com Ethan Ligon writes: > On Thu, May 26, 2011 at 12:17 PM, Christian Moe w= rote: >>> No, this is expected (if possibly under-documented behavior). =C2=A0The >>> :results header arguments are associated with the code block and *not* >>> with the #+call line. =C2=A0To get the desired behavior, you must speci= fy the >>> :results header argument on the #+call: line thusly. >>> >>> #+call: print_list(lst=3Dlist1) :results output org >>> >>> Best -- Eric >> >> Hi, >> >> I recently made the same mistake, and it took me a while to figure things >> out. I had assumed #+CALLs inherited all the header arguments from the c= ode >> blocks they referenced. >> >> Regarding documentation, I see now that the correct behavior is at least >> implicitly documented in the first example at >> [[info:org#Header%20arguments%20in%20function%20calls]]. >> >> It might rate an explicit explanation at >> [[info:org#Evaluating%20code%20blocks]] as well, though. >> > > I'd be happy to help with the documentation, but I still don't > understand the behavior. It seems as though some arguments > to :results need to be supplied to the code block, but others have to > be supplied to the call. In my situation, the "org" option > to :results has to be supplied to the call, while the "output" option > has to be supplied to the code block. > > What's the logic? > > Here's my setup: > > #+results: list1 > - Item1 > - Item2 > > > #+results: list2 > - Item3 > - Item4 > > #+source: print_list(lst) > #+begin_src sh > for i in $lst; do > echo "* $i" > done > #+end_src > > Here's a way of calling that works > #+call: print_list[:results output](lst=3Dlist1) :results org > > #+results: print_list[:results output](lst=3Dlist1) > #+BEGIN_ORG > * Item1 > * Item2 > #+END_ORG > > but this way of calling doesn't > #+call: print_list[:results output org](lst=3Dlist2) > > #+results: print_list[:results output org](lst=3Dlist2) > : * Item3 > : * Item4 > > and neither does this way > #+call: print_list[:results org](lst=3Dlist2) :results output > > #+results: print_list[:results org](lst=3Dlist2) > > or this way > #+call: print_list(lst=3Dlist2) :results output org > > #+results: print_list(lst=3Dlist2) > #+END_ORG > #+BEGIN_ORG > > Thanks for any enlightenment! > -Ethan Hi Ethan, There are two different places for specifying header argument in a #+call line, these places are marked with XXXX and YYYY in the following, both are optional... #+call: code_bloc_name[XXXX](arguments) YYYY Header arguments located in these two locations are treated differently. - XXXX :: Those placed in the XXXX location are passed through and applied to the code block being called. These header arguments affect how the code block is evaluated, for example [:results output] will collect the results from STDOUT of the called code block. - YYYY :: Those placed in the YYYY location are applied to the call line and do not affect the code block being called. These header arguments affect how the results are incorporated into the Org-mode buffer when the #+call line is evaluated, and how the #+call line is exported. For example ":results org" at the end of the call line will insert the results of the call line in an Org-mode block. Is this more clear? Is there a way it can be made more straightforward? If the above seems reasonable then I can add it to the documentation. Thanks -- Eric