1
0
mirror of https://git.savannah.gnu.org/git/emacs/org-mode.git synced 2025-02-02 20:55:13 +00:00

adding literate programming section to ob-worg, and fixing small tangle bug

This commit is contained in:
Eric Schulte 2009-08-14 19:34:23 -06:00
parent 15ea7ae5ed
commit 36be1d4058
2 changed files with 74 additions and 4 deletions

View File

@ -93,7 +93,7 @@ then run `org-babel-pop-to-session'."
(defun org-babel-named-src-block-regexp-for-name (name)
"Regexp used to match named src block."
(concat "#\\+srcname:[ \t]*" (regexp-quote name) "[ \t\n]*"
org-babel-src-block-regexp))
(substring org-babel-src-block-regexp 1)))
(defun org-babel-set-interpreters (var value)
(set-default var value)

View File

@ -1,5 +1,5 @@
#+OPTIONS: H:3 num:nil toc:2 \n:nil @:t ::t |:t ^:t -:t f:t *:t TeX:t LaTeX:t skip:nil d:(HIDE) tags:not-in-toc
#+STARTUP: align fold nodlcheck hidestars oddeven lognotestate
#+STARTUP: align fold nodlcheck hidestars oddeven lognotestate hideblocks
#+SEQ_TODO: TODO(t) INPROGRESS(i) WAITING(w@) | DONE(d) CANCELED(c@)
#+TAGS: Write(w) Update(u) Fix(f) Check(c)
#+TITLE: Org-babel
@ -322,8 +322,75 @@ to coexist and cooperate inside of a single document.
:PROPERTIES:
:CUSTOM_ID: literate-programming
:END:
- org-babel-tangle
- org-babel-load-file
[[http://en.wikipedia.org/wiki/Literate_programming][Literate Programming]] (LP) is a style of programming in which the final
product is a work of literature (i.e. is intended for human
consumption) which is structured in such a way that machine readable
source code can be automatically extracted from the primary document.
LP tools support two main operations, *weaving* (the extraction of
human-consumable documentation) and *tangling* (the extraction of
computer-consumable code).
- weave :: Org-mode's [[http://orgmode.org/manual/Exporting.html#Exporting][existing exporting functionality]] enables the
generation of html or LaTeX documentation.
- tangle :: The =org-babel-tangle= function can be used to extract
code from LP Org-mode files into source code files which
can then be compiled and used by a computer.
The organization of the source code blocks in the created
files is controlled through both the use of =tangle=
[[header-arguments][header arguments]] and through the expansion of [[http://www.cs.tufts.edu/~nr/noweb/][Noweb]] syntax
source block references. These are demonstrated in the
[[literate-programming-example][following example]].
*** Literate Programming Example
:PROPERTIES:
:CUSTOM_ID: literate-programming-example
:END:
Tangling functionality is controlled by the =tangle= family of
[[header-arguments]]. These arguments can be used to turn tangling on or
off (the default) on the source code block, or the outline heading
level.
The following demonstrates the combination of three source code blocks
into a single source code file using =org-babel-tangle=.
The following two blocks will not be tangled by default since it has
no =tangle= header argument.
#+srcname: hello-world-prefix
#+begin_src sh
echo "/-----------------------------------------------------------\\"
#+end_src
#+srcname: hello-world-postfix
#+begin_src sh
echo "\-----------------------------------------------------------/"
#+end_src
The third block does have a =tangle= header argument indicating the
name of the file to which it should be written. It also has Noweb
style references to the two previous source code blocks which will be
expanded on tangling to include them in the output file as well.
#+srcname: hello-world
#+begin_src sh :tangle hello
# <<hello-world-prefix>>
echo "| hello world |"
# <<hello-world-postfix>>
#+end_src
Calling =org-babel-tangle= will result in the following being written
to the =hello.sh= file.
#+srcname: hello-world-output
#+begin_src sh
#+end_src
* Reference / Documentation
:PROPERTIES:
:CUSTOM_ID: reference-and-documentation
@ -353,6 +420,9 @@ The basic syntax of source-code blocks is as follows:
edited with `org-edit-special'.
**** Header Arguments
:PROPERTIES:
:CUSTOM_ID: header-arguments
:END:
- results :: results arguments specify what should be done with the
output of source-code blocks