* [babel] noweb does not work (as expected)
@ 2009-11-09 3:47 Torsten Wagner
2009-11-09 4:33 ` Thomas S. Dye
` (2 more replies)
0 siblings, 3 replies; 11+ messages in thread
From: Torsten Wagner @ 2009-11-09 3:47 UTC (permalink / raw)
To: Org Mode Mailing List
Hi everyone,
I tried to use the noweb-syntax to tangle all the pieces of source code blocks
together as proposed by Tom.
However, for some reasons it does not work.
I notice there are two different syntax for noweb. One propsed on worg and the
other in examples here in the mailing list. Which one will be correct ? or are
both correct but with different purpose ?
I used the latest git-version and even tried the branch noweb-evaluate
What I used was a source code block at the end of my org-file like:
All other blocks are defined above.
#+srcname: makefile()
#+begin_src python :tangle simulate_ofdm :exports none
<<block1>>
<<block2>>
<<block3>>
<<block4>>
<<block5>>
#+end_src
#+resname: makefile
However
the tangled file results only in
#!/usr/bin/env python
# generated by org-babel-tangle
# [[file:~/test_noweb.org::*Result][makefile]]
# makefile ends here
An execution of block shows nothing on the *Shell output* buffer
It seems somehow I missunderstand which part of a block will replace a
<<noweb>> variable. I thouht it will be replaced by the complete source block
content during tangle.
Any ideas ?
Thanks,
Torsten
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [babel] noweb does not work (as expected)
2009-11-09 3:47 [babel] noweb does not work (as expected) Torsten Wagner
@ 2009-11-09 4:33 ` Thomas S. Dye
2009-11-09 7:38 ` Torsten Wagner
2009-11-09 4:41 ` Dan Davison
2009-11-10 3:02 ` [babel] (solved) " Torsten Wagner
2 siblings, 1 reply; 11+ messages in thread
From: Thomas S. Dye @ 2009-11-09 4:33 UTC (permalink / raw)
To: Torsten Wagner; +Cc: Org Mode Mailing List
[-- Attachment #1.1: Type: text/plain, Size: 3312 bytes --]
On Nov 8, 2009, at 5:47 PM, Torsten Wagner wrote:
> Hi everyone,
>
> I tried to use the noweb-syntax to tangle all the pieces of source
> code blocks
> together as proposed by Tom.
>
> However, for some reasons it does not work.
> I notice there are two different syntax for noweb. One propsed on
> worg and the
> other in examples here in the mailing list. Which one will be
> correct ? or are
> both correct but with different purpose ?
>
> I used the latest git-version and even tried the branch noweb-evaluate
>
> What I used was a source code block at the end of my org-file like:
> All other blocks are defined above.
>
> #+srcname: makefile()
> #+begin_src python :tangle simulate_ofdm :exports none
> <<block1>>
> <<block2>>
> <<block3>>
> <<block4>>
> <<block5>>
> #+end_src
> #+resname: makefile
>
> However
> the tangled file results only in
>
> #!/usr/bin/env python
> # generated by org-babel-tangle
> # [[file:~/test_noweb.org::*Result][makefile]]
>
> # makefile ends here
>
> An execution of block shows nothing on the *Shell output* buffer
> It seems somehow I missunderstand which part of a block will replace a
> <<noweb>> variable. I thouht it will be replaced by the complete
> source block
> content during tangle.
>
> Any ideas ?
>
> Thanks,
>
> Torsten
>
>
> _______________________________________________
> Emacs-orgmode mailing list
> Remember: use `Reply All' to send replies to the list.
> Emacs-orgmode@gnu.org
> http://lists.gnu.org/mailman/listinfo/emacs-orgmode
Hi Torsten,
I've been working successfully with your makefile idea. Here is one
that works for me:
--------------------------------------
#+begin_src R :noweb :session 135cultural
<<r-load-libraries>>
<<r-connect>>
# run queries
<<r-135-artifacts-wt-cultural>>
<<r-135-artifacts-ct-cultural>>
<<r-135-inverts-cultural>>
<<r-135-verts-cultural>>
# reshape query results and run PCA
<<r-135-reshape>>
<<r-135-merge>>
<<r-135-prcomp>>
# make biplots
<<r-135-plot-pca-1-2-cultural>>
<<r-135-plot-pca-2-3-cultural>>
# segment plot
<<r-135-stars-cultural>>
# make tables for LaTeX
# <<r-135-table-pca>>
<<r-disconnect>>
#+end_src
-------------------------------------------------
A typical source block looks like this:
-------------------------------------------------
#+srcname: r-load-libraries
#+begin_src R
library(RMySQL)
library(reshape)
library(xtable)
#+end_src
-------------------------------------------------
Note that I don't :tangle this, but use the :noweb feature, instead.
Also, my "makefile" runs all its :noweb source blocks in a :session,
where the environment set up by each source block can persist and be
referenced by other source blocks. This particular makefile has run
successfully dozens of times, as I fix little things and add new ones.
I don't know if this is the best way to accomplish this, or if it is
what you are trying to achieve at the moment. But, it looks to me as
if you might want to :noweb instead of :tangle and perhaps establish
a :session in case your source blocks need to communicate with one
another.
HTH,
Tom
Thomas S. Dye, Ph.D.
T. S. Dye & Colleagues, Archaeologists, Inc.
Phone: (808) 529-0866 Fax: (808) 529-0884
http://www.tsdye.com
[-- Attachment #1.2: Type: text/html, Size: 6916 bytes --]
[-- Attachment #2: Type: text/plain, Size: 204 bytes --]
_______________________________________________
Emacs-orgmode mailing list
Remember: use `Reply All' to send replies to the list.
Emacs-orgmode@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-orgmode
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [babel] noweb does not work (as expected)
2009-11-09 3:47 [babel] noweb does not work (as expected) Torsten Wagner
2009-11-09 4:33 ` Thomas S. Dye
@ 2009-11-09 4:41 ` Dan Davison
2009-11-09 7:16 ` Torsten Wagner
2009-11-10 3:02 ` [babel] (solved) " Torsten Wagner
2 siblings, 1 reply; 11+ messages in thread
From: Dan Davison @ 2009-11-09 4:41 UTC (permalink / raw)
To: Torsten Wagner; +Cc: Org Mode Mailing List
Hi Torsten,
Torsten Wagner <torsten.wagner@gmail.com> writes:
> Hi everyone,
>
> I tried to use the noweb-syntax to tangle all the pieces of source code blocks
> together as proposed by Tom.
>
> However, for some reasons it does not work.
> I notice there are two different syntax for noweb. One propsed on worg and the
> other in examples here in the mailing list. Which one will be correct ? or are
> both correct but with different purpose ?
<<block-1>> inserts the body of block 'block-1'. <<block-1()> inserts
the *result* of evaluating block-1, and <<block-1(x=3.3)>> inserts the
result of evaluating it with the specified argument value. I've just
added documentation of this to Worg.
>
> I used the latest git-version and even tried the branch noweb-evaluate
>
> What I used was a source code block at the end of my org-file like:
> All other blocks are defined above.
Can you provide the exact contents of the file you're having trouble
with? If I have
----------------------------------------------------------------
* test tangle
#+srcname: block1
#+begin_src python
x = 1
#+end_src
#+srcname: makefile()
#+begin_src python :tangle simulate_ofdm :exports none
This is makefile
<<block1>>
#+end_src
----------------------------------------------------------------
then for me org-babel-tangle produces
----------------------------------------------------------------
#!/usr/bin/env python
# generated by org-babel-tangle
# [[file:/tmp/zz.org::*test%20tangle][makefile]]
This is makefile
x = 1
# makefile ends here
----------------------------------------------------------------
Dan
>
> #+srcname: makefile()
> #+begin_src python :tangle simulate_ofdm :exports none
> <<block1>>
> <<block2>>
> <<block3>>
> <<block4>>
> <<block5>>
> #+end_src
> #+resname: makefile
>
> However
> the tangled file results only in
>
> #!/usr/bin/env python
> # generated by org-babel-tangle
> # [[file:~/test_noweb.org::*Result][makefile]]
>
> # makefile ends here
>
> An execution of block shows nothing on the *Shell output* buffer
> It seems somehow I missunderstand which part of a block will replace a
> <<noweb>> variable. I thouht it will be replaced by the complete source block
> content during tangle.
>
> Any ideas ?
>
> Thanks,
>
> Torsten
>
>
> _______________________________________________
> Emacs-orgmode mailing list
> Remember: use `Reply All' to send replies to the list.
> Emacs-orgmode@gnu.org
> http://lists.gnu.org/mailman/listinfo/emacs-orgmode
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [babel] noweb does not work (as expected)
2009-11-09 4:41 ` Dan Davison
@ 2009-11-09 7:16 ` Torsten Wagner
2009-11-09 16:04 ` Dan Davison
0 siblings, 1 reply; 11+ messages in thread
From: Torsten Wagner @ 2009-11-09 7:16 UTC (permalink / raw)
To: Dan Davison; +Cc: Org Mode Mailing List
Hi Dan,
thanks for trying helping me out
actually your example works for me after switching back to git-babel master
branch.
However, my file does still not work and I can not see a difference between your
and mine file.
I will try to minimize it now to the point where it either works or still
fails and post it here.
Could you please tell me which of the branches in the babel-git includes the
best working version for noweb usage.
I got a bit confused with all this branches.
Maybe I do something wrong during the installation from git. I actually only
run standard make; make install;
and I set a symlink of the contrib folder into my .emacs.d from where emacs
will find the babel files. Actually I'm wondering why the contribs are not
copied by make into the elisp-path.
Furthermore, I noticed that babel-git uses a complete org-mode branch for the
development of org-babel. Is this to keep org-mode freezed and to control
merging with the main org-mode developments?
I once read about git submodules [1]. Maybe this is interesting for org-babel.
Thanks again for help
Torsten
[1] http://book.git-scm.com/5_submodules.html
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [babel] noweb does not work (as expected)
2009-11-09 4:33 ` Thomas S. Dye
@ 2009-11-09 7:38 ` Torsten Wagner
2009-11-09 16:32 ` Thomas S. Dye
0 siblings, 1 reply; 11+ messages in thread
From: Torsten Wagner @ 2009-11-09 7:38 UTC (permalink / raw)
To: Thomas S. Dye, Org Mode Mailing List
Hi Tom,
If I try to use the noweb way, I always got error messages which tells me that
org-babel can not read the result correctly
>
> #+srcname: r-load-libraries
> #+begin_src R
> library(RMySQL)
> library(reshape)
> library(xtable)
> #+end_src
As I see you do not use any special header here which means results is set to
value, right? However, there is no special return line to org-babel either. In
my understanding and according to my error messages library(xtable) would be
evaluated as the result of this block...
However this results in error messages at least for python.
Which org-babel version due you use (which branch)?
Maybe you or someone else can bring some more light into this :results topic.
I somehow miss the option :results none to avoid any results which should be
useful if the source code block is just a piece of a bigger arrangement. For
literate programming and RR it might be essential to spread blocks over the
file which will be tangled together (by tangle or a noweb block). However not
all need provide a result but just need to run in the same session. Maybe just
the last block of such an arrangement will come up with a result suitable for
org-babel.
Actually I prefer the idea of :noweb instead of tangle, which seems to me more
flexible and faster.
Just need to get it running
Thanks
Torsten
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [babel] noweb does not work (as expected)
2009-11-09 7:16 ` Torsten Wagner
@ 2009-11-09 16:04 ` Dan Davison
2009-11-10 1:51 ` Torsten Wagner
0 siblings, 1 reply; 11+ messages in thread
From: Dan Davison @ 2009-11-09 16:04 UTC (permalink / raw)
To: Torsten Wagner; +Cc: Org Mode Mailing List
Hi Torsten,
Torsten Wagner <torsten.wagner@gmail.com> writes:
<...>
> Could you please tell me which of the branches in the babel-git includes the
> best working version for noweb usage.
Important: The only version of org-babel that's intended for users is
the version in current org-mode. I.e. the current master branch of
Carsten's org-mode repository. The other repository (the babel repo) is
for development only. Any stable improvements in there are rapidly
merged into Carsten's repo.
> I got a bit confused with all this branches.
> Maybe I do something wrong during the installation from git. I actually only
> run standard make; make install;
Personally I don't bother with make or make install when switching
between git branches. I just load straight from the .el files. But like
I said, unless you're making changes to the code, just use the main
org-mode git branch in whatever way you normally would.
> and I set a symlink of the contrib folder into my .emacs.d from where emacs
> will find the babel files. Actually I'm wondering why the contribs are not
> copied by make into the elisp-path.
>
> Furthermore, I noticed that babel-git uses a complete org-mode branch for the
> development of org-babel. Is this to keep org-mode freezed and to control
> merging with the main org-mode developments?
> I once read about git submodules [1]. Maybe this is interesting for org-babel.
Disclaimer: I only started using git submodules last night.
I think the main point is that the current set up means that org-mode
and org-babel share a common history of commits. My current idea of git
submodules is that I would include something as a submodule when it is a
module that gets used by multiple different projects, and so doesn't
'belong' to any project in particular. But org-babel belongs to org-mode
and has no independent existence and I think it makes sense for it to be
developed in an org-mode repo.
But away from org-mode, git submodules look really cool -- they seem to
be exactly what I was looking for to organize projects which share some
code in common.
Dan
>
> Thanks again for help
>
> Torsten
>
> [1] http://book.git-scm.com/5_submodules.html
>
>
> _______________________________________________
> Emacs-orgmode mailing list
> Remember: use `Reply All' to send replies to the list.
> Emacs-orgmode@gnu.org
> http://lists.gnu.org/mailman/listinfo/emacs-orgmode
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [babel] noweb does not work (as expected)
2009-11-09 7:38 ` Torsten Wagner
@ 2009-11-09 16:32 ` Thomas S. Dye
2009-11-10 1:40 ` Torsten Wagner
0 siblings, 1 reply; 11+ messages in thread
From: Thomas S. Dye @ 2009-11-09 16:32 UTC (permalink / raw)
To: Torsten Wagner; +Cc: Org Mode Mailing List
On Nov 8, 2009, at 9:38 PM, Torsten Wagner wrote:
> Hi Tom,
>
> If I try to use the noweb way, I always got error messages which
> tells me that
> org-babel can not read the result correctly
>
>>
>> #+srcname: r-load-libraries
>> #+begin_src R
>> library(RMySQL)
>> library(reshape)
>> library(xtable)
>> #+end_src
>
>
> As I see you do not use any special header here which means results
> is set to
> value, right? However, there is no special return line to org-babel
> either. In
> my understanding and according to my error messages library(xtable)
> would be
> evaluated as the result of this block...
>
> However this results in error messages at least for python.
>
> Which org-babel version due you use (which branch)?
>
> Maybe you or someone else can bring some more light into
> this :results topic.
> I somehow miss the option :results none to avoid any results which
> should be
> useful if the source code block is just a piece of a bigger
> arrangement. For
> literate programming and RR it might be essential to spread blocks
> over the
> file which will be tangled together (by tangle or a noweb block).
> However not
> all need provide a result but just need to run in the same session.
> Maybe just
> the last block of such an arrangement will come up with a result
> suitable for
> org-babel.
>
> Actually I prefer the idea of :noweb instead of tangle, which seems
> to me more
> flexible and faster.
>
> Just need to get it running
>
> Thanks
>
> Torsten
Hi Torsten,
It's not clear to me what outcome you desire. Tangling should result
in a source file that can serve as input to a compiler or
interpreter. The combination of :noweb and :session lets you write
literate programs that are sent directly to an interpreter, which
presumably creates some useful output along the way (my example makes
some graphs after a lot of data reshaping), but might be used just to
set up an environment in the interpreter, which then can be
manipulated directly in the session buffer.
I presumed that your reference to makefile meant that you were heading
for the :noweb, :session route. I find this useful because I can
query the state of variables in the session and put the results in a
LaTeX source block. Of course, the same thing would be possible to
insert the results into the org file.
I'm using the version of org-babel that comes with org-mode version
6.32trans. I think I last updated about a week ago. I'm not
competent to work at the bleeding edge. Besides that, I find the org-
babel distributed with org-mode to be mature for such a young piece of
software, and it does pretty much everything I ask it to do.
HTH,
Tom
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [babel] noweb does not work (as expected)
2009-11-09 16:32 ` Thomas S. Dye
@ 2009-11-10 1:40 ` Torsten Wagner
0 siblings, 0 replies; 11+ messages in thread
From: Torsten Wagner @ 2009-11-10 1:40 UTC (permalink / raw)
To: Thomas S. Dye, Org Mode Mailing List
> Hi Torsten,
Hi Tom,
> It's not clear to me what outcome you desire. Tangling should result
> in a source file that can serve as input to a compiler or
> interpreter. The combination of :noweb and :session lets you write
> literate programs that are sent directly to an interpreter, which
> presumably creates some useful output along the way (my example makes
> some graphs after a lot of data reshaping), but might be used just to
> set up an environment in the interpreter, which then can be
> manipulated directly in the session buffer.
Actually I'm looking for a way to execute several of my source code buffers in
a comfortable and semiautomatic way to do exactly what you described. Joggling
around with my measurement data... bend badly statistics until it fit to my
world ;) and finally create a plot, table or even a single number. The blocks
should be aware of each other (same session) and I like to have a single local
place to control the order in which the source code blocks are executed and be
able to tweak around with some variables or add quickly.
Thus, this sound really like :noweb and :session will do this.
However, sometimes I would prefer to see the code all tangled together in one
chunk. This might be esp. interesting for several purposes.
a) Give the pure code to someone else,
b) Make a somehow stand-alone-version without org-babel e.g. to execute it
over and over again on another org-babel free machine,
c) Debugging and bug searching might be easier since you can clearly see the
interfaces between the source code blocks without to much org-mode in between.
I guess at the moment I could create two blocks ... one :noweb, :nosession for
the interactive work on the project and one with :tangle which put all this
together into a single file. I never tried :tangle and :noweb together.
Actually, they should not conflict so fare. However, at the worg-page all
options are given as mutual exclusive.
I will give at a trial... as soon as I make my file working under both methods.
Best regards,
Torsten
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [babel] noweb does not work (as expected)
2009-11-09 16:04 ` Dan Davison
@ 2009-11-10 1:51 ` Torsten Wagner
2009-11-10 5:33 ` Eric Schulte
0 siblings, 1 reply; 11+ messages in thread
From: Torsten Wagner @ 2009-11-10 1:51 UTC (permalink / raw)
To: Dan Davison, Org Mode Mailing List
Hi Dan
> Important: The only version of org-babel that's intended for users is
> the version in current org-mode. I.e. the current master branch of
> Carsten's org-mode repository. The other repository (the babel repo) is
> for development only. Any stable improvements in there are rapidly
> merged into Carsten's repo.
O.k. thanks for the clarification. I started using babel-git since in an older
thread someone refereed that the functionality is no in a branch of babel-git.
I did not know that you merge quickly with Carstens org-mode git.
Depending on the speed of merging, you might like to use tags in babel-git
signaling at which commit you merged org-babel back to org-mode. Then people
can quickly run a git diff to see if the particular change they are looking for
is already in merged to org-mode or not.
> I think the main point is that the current set up means that org-mode
> and org-babel share a common history of commits. My current idea of git
> submodules is that I would include something as a submodule when it is a
> module that gets used by multiple different projects...
As far as I understand git submodules (but I never get in real use to them
yet) they can be considered as a part of a project which keeps it own history.
If that is right it might be perfect for org-mode and org-babel. You can
develop on top of the org-mode git and does not cluttering the history of org-
mode git.
However, as far as I read there are some potential flaws which, if used wrong,
can create some serious problems.
Many thanks for helping me so fare
Torsten
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [babel] (solved) noweb does not work (as expected)
2009-11-09 3:47 [babel] noweb does not work (as expected) Torsten Wagner
2009-11-09 4:33 ` Thomas S. Dye
2009-11-09 4:41 ` Dan Davison
@ 2009-11-10 3:02 ` Torsten Wagner
2 siblings, 0 replies; 11+ messages in thread
From: Torsten Wagner @ 2009-11-10 3:02 UTC (permalink / raw)
To: Org Mode Mailing List
Hi,
finally I found the problem. As Dan mentioned there is a difference for
<<block1>>
<<block1()>>
<<block1(a=1)>>
For some reason I was sticking with block1() and override it over and over
again. No it seems to work go into the right direction. Python still seems not
to like the code if its created by :noweb. However :tangle code seems to run
fine.
I will try to sort this out now.
By the way, :noweb and :tangle seems to work nicely together which gives the
freedom to go one or the other way to execute the source code blocks
During fiddling around the last day, I found some quirks and "nice to have"
requests. Should I simply post them on the list ?
Thanks again for helping me
Torsten
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [babel] noweb does not work (as expected)
2009-11-10 1:51 ` Torsten Wagner
@ 2009-11-10 5:33 ` Eric Schulte
0 siblings, 0 replies; 11+ messages in thread
From: Eric Schulte @ 2009-11-10 5:33 UTC (permalink / raw)
To: Torsten Wagner; +Cc: Dan Davison, Org Mode Mailing List
Torsten Wagner <torsten.wagner@gmail.com> writes:
>> I think the main point is that the current set up means that org-mode
>> and org-babel share a common history of commits. My current idea of git
>> submodules is that I would include something as a submodule when it is a
>> module that gets used by multiple different projects...
>
> As far as I understand git submodules (but I never get in real use to
> them yet) they can be considered as a part of a project which keeps it
> own history. If that is right it might be perfect for org-mode and
> org-babel. You can develop on top of the org-mode git and does not
> cluttering the history of org- mode git. However, as far as I read
> there are some potential flaws which, if used wrong, can create some
> serious problems.
>
Hi Torsten,
Having used git submodules in a couple of projects I would shy away from
the added complexity which submodules introduce. In my experience the
implicit requirement of submodules for users to execute 'git submodule
init' and 'git submodule update' commands whenever they update their
source code can lead to a lot of confusion.
Best -- Eric
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2009-11-10 5:33 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-11-09 3:47 [babel] noweb does not work (as expected) Torsten Wagner
2009-11-09 4:33 ` Thomas S. Dye
2009-11-09 7:38 ` Torsten Wagner
2009-11-09 16:32 ` Thomas S. Dye
2009-11-10 1:40 ` Torsten Wagner
2009-11-09 4:41 ` Dan Davison
2009-11-09 7:16 ` Torsten Wagner
2009-11-09 16:04 ` Dan Davison
2009-11-10 1:51 ` Torsten Wagner
2009-11-10 5:33 ` Eric Schulte
2009-11-10 3:02 ` [babel] (solved) " Torsten Wagner
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).