From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eric Schulte Subject: Re: org-babel order of evaluation Date: Thu, 12 Jan 2012 18:07:41 -0700 Message-ID: <87ipkgqu8w.fsf@gmx.com> References: <20120112002506.GA26183@BigDog.local> <87y5td7z2t.fsf@gmx.com> <20120112225129.GA26670@BigDog.local> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Return-path: Received: from eggs.gnu.org ([140.186.70.92]:47873) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RlVii-0003yp-LM for emacs-orgmode@gnu.org; Thu, 12 Jan 2012 20:14:18 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RlVig-00069u-W5 for emacs-orgmode@gnu.org; Thu, 12 Jan 2012 20:14:16 -0500 Received: from mailout-us.gmx.com ([74.208.5.67]:38236 helo=mailout-us.mail.com) by eggs.gnu.org with smtp (Exim 4.71) (envelope-from ) id 1RlVig-00069i-N9 for emacs-orgmode@gnu.org; Thu, 12 Jan 2012 20:14:14 -0500 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 --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Rick Frankel writes: > On Thu, Jan 12, 2012 at 04:35:31PM -0600, Leo Alekseyev wrote: >> >> Therefore, when executing an entire buffer, there is no way to have >> >> the execution of a call block dependent on the prior execution of a >> >> source block. >> >> >> > >> > It would be better to make the dependency explicit by passing the >> > results of the call line as a (potentially unused) variable to the code >> > block. =C2=A0For example; >> [snip] > > The problem w/ this is that the (potentially time consuming) dependent > will be executed twice when doing a buffer eval. > >> > There is (at least currently) no guarantee that evaluation order will = be >> > buffer order. >>=20 >> Is there some deep rationale for the current behavior that I'm not >> seeing? Are there big obstacles to enforcing ligeral execution order? > > It's because prior to 7.8, call blocks were not executed during a > buffer execute. The solution was to execute all the call blocks after > executing the src block. (Eric would have to comment on how hard it > would be to merge the two functions :). > Turns out it was not that difficult to change this behavior. You and Leo are both correct that in-buffer-order evaluation is more natural and expected than the previous behavior. I've just pushed up a fix after which evaluating the following --=-=-= Content-Type: text/x-org Content-Disposition: inline; filename=execute-in-order.org #+Title: Execute all executables in Order #+Property: results silent #+name: foo #+BEGIN_SRC sh :var it="one" echo $it >> debug #+END_SRC #+call: foo("two") #+BEGIN_SRC sh echo "three" >> debug #+END_SRC --=-=-= Content-Type: text/plain results in the creation of a "debug" file in the same directory reading; ,---- | one | two | three `---- Thanks for bringing this up, > > rick > -- Eric Schulte http://cs.unm.edu/~eschulte/ --=-=-=--