From mboxrd@z Thu Jan  1 00:00:00 1970
From: Viktor Rosenfeld <listuser36@googlemail.com>
Subject: Re: Tangling without clutter?
Date: Thu, 15 Mar 2012 07:25:47 +0100
Message-ID: <20120315062547.GA28824@kenny.fritz.box>
References: <44B0EAE8544C834188E8790873CDE1CC3EA752@ARCEXCHANGE.arc.local>
	<m1ehsv59g1.fsf@tsdye.com>
	<44B0EAE8544C834188E8790873CDE1CC3EA82A@ARCEXCHANGE.arc.local>
	<87y5r30zdd.fsf@gmx.com>
	<44B0EAE8544C834188E8790873CDE1CC3EA8C0@ARCEXCHANGE.arc.local>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Return-path: <emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org>
Received: from eggs.gnu.org ([208.118.235.92]:60273)
	by lists.gnu.org with esmtp (Exim 4.71)
	(envelope-from <listuser36@googlemail.com>) id 1S848I-0004Yd-KE
	for emacs-orgmode@gnu.org; Thu, 15 Mar 2012 02:25:55 -0400
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
	(envelope-from <listuser36@googlemail.com>) id 1S848G-0002YL-EK
	for emacs-orgmode@gnu.org; Thu, 15 Mar 2012 02:25:54 -0400
Received: from mail-bk0-f41.google.com ([209.85.214.41]:42647)
	by eggs.gnu.org with esmtp (Exim 4.71)
	(envelope-from <listuser36@googlemail.com>) id 1S848G-0002YG-2J
	for emacs-orgmode@gnu.org; Thu, 15 Mar 2012 02:25:52 -0400
Received: by bkwq16 with SMTP id q16so2309065bkw.0
	for <emacs-orgmode@gnu.org>; Wed, 14 Mar 2012 23:25:49 -0700 (PDT)
Content-Disposition: inline
In-Reply-To: <44B0EAE8544C834188E8790873CDE1CC3EA8C0@ARCEXCHANGE.arc.local>
List-Id: "General discussions about Org-mode." <emacs-orgmode.gnu.org>
List-Unsubscribe: <https://lists.gnu.org/mailman/options/emacs-orgmode>,
	<mailto:emacs-orgmode-request@gnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/archive/html/emacs-orgmode>
List-Post: <mailto:emacs-orgmode@gnu.org>
List-Help: <mailto:emacs-orgmode-request@gnu.org?subject=help>
List-Subscribe: <https://lists.gnu.org/mailman/listinfo/emacs-orgmode>,
	<mailto:emacs-orgmode-request@gnu.org?subject=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 Jos'h,

have you looked at the :session header argument? I use it to define
environment variables in bash that are used in later code blocks.

Something like this:

#+BEGIN_SRC sh :session foo
export W="world."
#+END_SRC

#+RESULTS:

#+BEGIN_SRC sh :session foo
echo Hello $W
#+END_SRC

If these code blocks are executed in order, the latter returns "Hello
world."

Not sure though, how it interacts with Python.

Cheers,
Viktor

Jos'h Fuller wrote:

> Hi!
> 
> > > It seems like I almost need some variant of the "tangle" argument to
> > > :noweb where syntax references are expanded for evaluation, but not
> > > for anything else.
> > >
> > 
> > Why would you want to tangle out a python src file with an un-expanded
> > noweb reference?  Either way, who am I to judge.  I've just added a new
> > "eval" option to the noweb header argument which will expand noweb
> > references *only* during interactive evaluation.
> 
> Please allow me to explain, I think it's a legitimate use case...
> 
> I would like to provide a listing of a Python function, then later in the document show a demonstration of how it's used. I just did this when preparing some documentation for another programmer who is porting an application between languages. 
> 
> So I listed the function, then after a discussion, I had a demonstration of how to use the function. I wanted the output from the demonstration to be "live", generated from the demonstration code. Therefore, I needed to reference the function defined above. Unfortunately, the reference was expanded during export so that the same block of code appeared /twice/, presenting the reader with something like this:
> 
> : Here's a function:
> :  def gorking():
> :   return "gork"
> :
> : Here's how to use the function:
> :  def gorking():
> :   return "gork"
> :
> :  print gorking()
> : 
> : Which gives us:
> :  gork
> 
> As you can see, it's rather clumsy to have the function in the output twice. It's not too bad for this example, but anything more than a few lines becomes quite a distraction! This would have been preferable:
> 
> : Here's a function:
> :  def gorking():
> :   return "gork"
> :
> : Here's how to use the function:
> :  <<function-gorking>>
> : 
> :  print gorking()
> : 
> : Which gives us:
> :  gork
> 
> The original %.org file would look like this:
> 
> : Here's a function:
> :  #+name: function-gorking
> :  #+begin_src python :tangle yes
> :  def gorking():
> :   return "gork"
> :  #+end_src
> :
> : Here's how to use the function:
> :  #+name: function-gorking-demo
> :  #+begin_src python :tangle yes
> :  <<function-gorking>>
> :
> :  print gorking()
> :  #+end_src
> : 
> : Which gives us:
> :  #+results: function-gorking-demo
> :  gork
> 
> Does that explain it better?
> 
> Thanks!
> 
> Jos'h
> 
> 
>