From: "Eric H. Neilsen, Jr." <neilsen@fnal.gov> To: emacs-orgmode@gnu.org Subject: A tool for creating source code files from example and src blocks in org files Date: Tue, 02 Jun 2009 13:50:58 -0500 [thread overview] Message-ID: <4A257492.5030300@fnal.gov> (raw) 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
next reply other threads:[~2009-06-02 18:51 UTC|newest] Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top 2009-06-02 18:50 Eric H. Neilsen, Jr. [this message] 2009-06-03 8:53 ` Chris Gray 2009-06-16 14:03 ` Bastien 2009-06-26 19:15 ` Eric Schulte 2009-06-27 20:31 ` Eric Schulte 2009-06-03 13:27 Eric H. Neilsen, Jr.
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style List information: https://www.orgmode.org/ * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=4A257492.5030300@fnal.gov \ --to=neilsen@fnal.gov \ --cc=emacs-orgmode@gnu.org \ --subject='Re: A tool for creating source code files from example and src blocks in org files' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Code repositories for project(s) associated with this 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).