emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] [Babel][Bug] Inconsistent output from babel function depending o


From: Ethan Ligon
Subject: Re: [O] [Babel][Bug] Inconsistent output from babel function depending on how called
Date: Thu, 26 May 2011 18:04:22 -0700

On Thu, May 26, 2011 at 12:17 PM, Christian Moe <address@hidden> wrote:
>> No, this is expected (if possibly under-documented behavior).  The
>> :results header arguments are associated with the code block and *not*
>> with the #+call line.  To get the desired behavior, you must specify the
>> :results header argument on the #+call: line thusly.
>>
>> #+call: print_list(lst=list1) :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 code
> 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=list1) :results org

#+results: print_list[:results output](lst=list1)
#+BEGIN_ORG
* Item1
* Item2
#+END_ORG

but this way of calling doesn't
#+call: print_list[:results output org](lst=list2)

#+results: print_list[:results output org](lst=list2)
: * Item3
: * Item4

and neither does this way
#+call: print_list[:results org](lst=list2) :results output

#+results: print_list[:results org](lst=list2)

or this way
#+call: print_list(lst=list2) :results output org

#+results: print_list(lst=list2)
#+END_ORG
#+BEGIN_ORG

Thanks for any enlightenment!
-Ethan

-- 
Ethan Ligon, Associate Professor
Agricultural & Resource Economics
University of California, Berkeley



reply via email to

[Prev in Thread] Current Thread [Next in Thread]