[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Orgmode] Literate Programming with Org mode
From: |
Eric Schulte |
Subject: |
Re: [Orgmode] Literate Programming with Org mode |
Date: |
Wed, 29 Jul 2009 18:42:01 -0600 |
User-agent: |
Gnus/5.110011 (No Gnus v0.11) Emacs/23.1.50 (darwin) |
Hi Sébastien,
Thanks for the description. This is very interesting and I think
warrants a re-working of the tangle functionality in org-babel.
Given your description below I think I may try to add the Nuweb
link/reference syntax "<<source-block-name>>" to org-babel. As
source-code blocks are already named in the current org-babel setup this
wouldn't be a very significant change. Once this is added it shouldn't
be difficult to expand these links/references on export.
Under this new setup the example file you described would be analogous
to the this org-mode file.
Does this sound like it would accomplish most of what you are after?
I will reply to this message if/when I get this implemented.
Cheers -- Eric
Sébastien Vauban <address@hidden> writes:
> Hi Eric and all,
>
> Here some promised description of how I'm using Literate Programming with
> LaTeX (up to now -- soon directly from Org mode?).
>
> I write an "enhanced LaTeX" file ([1], having the `.nw' -- for Nuweb --
> extension). It is enhanced as I can put blocks of code in there (SQL blocks,
> for example), and give them a name for further referencing.
>
> Then, at some point in the file, I say how I want the code files to look like,
> by assembling the blocks in a certain order, with some glue.
>
> For example:
>
> <<Enterprise.sql>>=
> <<sql-init>>
> SELECT abcID, etpID, etpAssurATPolNum
> FROM enterprise JOIN record
> ON (etpAbcID_fk = abcID)
> WHERE etpAbcID_fk
> <<sql-cond>>
> @ %def
>
> The above file is made up of two defined blocks (`sql-init' and `sql-cond')
> plus some glue in between.
>
> The good thing is I can reuse the same blocks in other context, completely
> avoiding copy/paste of code:
>
> <<Lessons.sql>>=
> <<sql-init>>
> SELECT abcID, lesAlternNbrSem, lesNbrSem,
> CONVERT(varchar(10), lesDateDeb, @dateFmtStyleOut) AS lesDateDeb,
> CONVERT(varchar(10), lesDateFin, @dateFmtStyleOut) AS lesDateFin
> FROM lessons JOIN record
> ON (lesAbcID_fk = abcID)
> WHERE lesAbcID_fk
> <<sql-cond>>
> @ %def
>
> OK. So, my `org-lit-prog.nw' file is ready, and committed under Subversion
> (this is the only one I'm committing as it contains both the documentation of
> the code, and the source code itself).
>
> Then, I just type (in a terminal):
>
> noweb org-lit-prog.nw
>
> to extract both:
>
> o the LaTeX file [2] to be compiled into a PDF [3],
> o the different source code files (Enterprise.sql [4], Lessons.sql [5],
> [6] and [7])
>
> Just that easy to keep code and doc in sync, and get a very nice-to-read
> documentation of the code.
>
> Sometimes, I play an extra trick is made in the noweb file: I put blocks of
> static code (for which I don't especially need any noweb feature) after the
> end of the LaTeX document. That way, it gets outputted by noweb as a source
> file during the Tangle process, and included in my LaTeX document via the
> listings package.
>
> Why that trick? I could directly put the code in the body of the document!
> Yes, but I want the code to be highlighted via listings. Otherwise, it's just
> black and white display of the code...
>
> For easy access, I've put all the above files on a my Web space:
>
> [1] http://www.mygooglest.com/sva/org-lit-prog.nw
> [2] http://www.mygooglest.com/sva/org-lit-prog.tex
> [3] http://www.mygooglest.com/sva/org-lit-prog.pdf
> [4] http://www.mygooglest.com/sva/Enterprise.sql
> [5] http://www.mygooglest.com/sva/Lessons.sql
> [6] http://www.mygooglest.com/sva/Payment.sql
> [7] http://www.mygooglest.com/sva/prsNumNat.awk
>
> From what I understand, what we both wanna reach is writing all of the `.nw'
> file as an Org file directly, and let Org-babel extracts the source code files
> and the documentation out of it.
>
> What should be good in the future, when it will be ready for prime time, is
> that this becomes complete part of the export process: no tangle operation
> needed.
>
> Is the above description worth for you? Do you understand how I work when
> documenting code? Pay attention: I'm *the* expert in literate programming.
> Just an amateur being seduced by some of its features.
>
> Best regards,
> Seb
Re: [Orgmode] Literate Programming with Org mode,
Eric Schulte <=