From: "Eric H. Neilsen, Jr." Subject: [Orgmode] A tool for creating source code files from example and src blocks in org files To: emacs-orgmode@gnu.org Date: Tue, 02 Jun 2009 13:50:58 -0500 Hi, First, thank you Carsten and others, for putting this thing together; org-mode is the most useful tool I've run across in a long time. I recently put together a few commands to create source code files from SRC and EXAMPLE blocks in org-mode files. The original idea is to be able to compile examples in my notes without needing to merge them into a separate source file by hand. As I was writing it I realized this is exactly the same tool one needs to turn org-mode into a literate programming tool (see http://www.literateprogramming.com/ ), so I adopted some of the nomenclature. (I tried literate programming a few years ago, and gave up in frustration with the tools. I am tempted to try again with org-mode.) The two user level commands are org-tangle and org-untangle, best explained through example. Running org-tangle in a buffer that looks like this: ---------------------- begin /tmp/test.org --------------------------- * Some file Some text here #+CHUNK file1.sh 1 #+BEGIN_SRC bash echo "line 1" echo "line 2" #+END_SRC more text ** Some subsection #+CHUNK file1.sh 2 #+BEGIN_SRC bash echo "line 5" echo "line 6" #+END_SRC blah blah blah #+CHUNK README.txt 1 #+BEGIN_EXAMPLE text line 1 text line 2 text line 3 #+END_EXAMPLE foo foo bar baz #+CHUNK file1.sh 1.5 #+BEGIN_SRC bash echo "line 3" echo "line 4" #+END_SRC -------------- end /tmp/test.org ---------------- results in the creation of these two files, opened in emacs buffers: ------------- begin /tmp/file1.sh ---------------- # ORGCHUNK /tmp/test.org 1 echo "line 1" echo "line 2" # ORGCHUNK /tmp/test.org 1.5 echo "line 3" echo "line 4" # ORGCHUNK /tmp/test.org 2 echo "line 5" echo "line 6" ------------- end /tmp/file1.sh --------------------- and ------------ begin /tmp/README.txt ------------- text line 1 text line 2 text line 3 ------------ end /tmp/README.txt --------------- If you then edit file1.sh and run org-untangle in the buffer, changes to it will overwrite the literal blocks in the org-mode file from whence they came. Is there any interest in this? My organization's rules for releasing code to open source projects are being revised, but I am likely to be able to do so under a BSD-like license. If there is interest, I will push to try and figure out how to do this, and maybe even see if I can do the assignment of copyright stuff needed for it to get under the main umbrella (although I am not optimistic). (If anyone feels like rewriting it, that would be even better; aside from a fairly straightforward .emacs, this is my first ever lisp code, so it is likely to need cleaning and refactoring.) -Eric -- Eric H. Neilsen, Jr. http://home.fnal.gov/~neilsen _______________________________________________ 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