From f383f7e30c64d9f6f8b6e16703940db87b2a73fd Mon Sep 17 00:00:00 2001 From: Eric Schulte Date: Tue, 2 Jun 2009 15:31:09 -0700 Subject: [PATCH] added integration directory for org-tangle (from Eric N.'s into email) --- org-tangle-integration/README.txt | 3 + org-tangle-integration/article | 114 ++++++++++++++++++++++++++++++ org-tangle-integration/file1.sh | 9 +++ org-tangle-integration/test.org | 36 ++++++++++ 4 files changed, 162 insertions(+) create mode 100644 org-tangle-integration/README.txt create mode 100644 org-tangle-integration/article create mode 100644 org-tangle-integration/file1.sh create mode 100644 org-tangle-integration/test.org diff --git a/org-tangle-integration/README.txt b/org-tangle-integration/README.txt new file mode 100644 index 000000000..505f2c94c --- /dev/null +++ b/org-tangle-integration/README.txt @@ -0,0 +1,3 @@ +text line 1 +text line 2 +text line 3 diff --git a/org-tangle-integration/article b/org-tangle-integration/article new file mode 100644 index 000000000..253867084 --- /dev/null +++ b/org-tangle-integration/article @@ -0,0 +1,114 @@ +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 + diff --git a/org-tangle-integration/file1.sh b/org-tangle-integration/file1.sh new file mode 100644 index 000000000..6ebd76862 --- /dev/null +++ b/org-tangle-integration/file1.sh @@ -0,0 +1,9 @@ +# 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" diff --git a/org-tangle-integration/test.org b/org-tangle-integration/test.org new file mode 100644 index 000000000..ad9b15383 --- /dev/null +++ b/org-tangle-integration/test.org @@ -0,0 +1,36 @@ +* 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