Parcourir la source

babel-doc: host of minor aesthetic changes to babel documentation

  also stripped out superfluous function documentation.
Eric Schulte il y a 15 ans
Parent
commit
b89ce3712e
1 fichiers modifiés avec 114 ajouts et 260 suppressions
  1. 114 260
      doc/org.texi

+ 114 - 260
doc/org.texi

@@ -8547,9 +8547,9 @@ be used to fontify the example:
 
 @example
 #+BEGIN_SRC emacs-lisp
-(defun org-xor (a b)
-   "Exclusive or."
-   (if a (not b) b))
+  (defun org-xor (a b)
+     "Exclusive or."
+     (if a (not b) b))
 #+END_SRC
 @end example
 
@@ -9425,9 +9425,9 @@ respectively.  For example
 
 @example
 #+BEGIN_EXAMPLE -t -w 40
-(defun org-xor (a b)
-   "Exclusive or."
-   (if a (not b) b))
+  (defun org-xor (a b)
+     "Exclusive or."
+     (if a (not b) b))
 #+END_EXAMPLE
 @end example
 
@@ -10854,9 +10854,9 @@ e.g.
 
 @example
 #+BEGIN_SRC emacs-lisp
-(defun org-xor (a b)
-   "Exclusive or."
-   (if a (not b) b))
+  (defun org-xor (a b)
+     "Exclusive or."
+     (if a (not b) b))
 #+END_SRC
 @end example
 
@@ -10867,25 +10867,25 @@ their results to a number of formats.  The following sections provide a
 thorough tour of Org-mode's sophisticated code block handling facilities.
 
 @menu
-* Structure of Code Blocks::
-* Editing Source Code::         
-* Exporting Code Blocks::       
-* Extracting Source Code::      
-* Evaluating Code Blocks::      
+* Structure of code blocks::
+* Editing source code::
+* Exporting code blocks::
+* Extracting source code::
+* Evaluating code blocks::
 * Library of Babel::
 * Languages::
-* Header Arguments::
+* Header arguments::
 * Results::
-* Noweb Reference Syntax::
-* Key Bindings & Useful Functions::
-* Batch Execution::
+* Noweb reference syntax::
+* Key bindings & useful functions::
+* Batch execution::
 @end menu
 
 
-@node Structure of Code Blocks, Editing Source Code, Working With Source Code, Working With Source Code
+@node Structure of code blocks, Editing source code, Working With Source Code, Working With Source Code
 @comment  node-name,  next,  previous,  up
-@comment  Structure of Code Blocks, Editing Source Code, Working With Source Code, Working With Source Code
-@section Structure of Code Blocks
+@comment  Structure of code blocks, Editing source code, Working With Source Code, Working With Source Code
+@section Structure of code blocks
 
 The structure of code blocks is as follows:
 
@@ -10910,17 +10910,17 @@ Switches controling exportation of the code block (see switches discussion in
 @ref{Literal examples})
 @item <header arguments>
 Optional header arguments control many aspects of evaluation, export and
-tangling of source code blocks. See the @ref{Header Arguments}
+tangling of source code blocks. See the @ref{Header arguments}
 section. Header arguments can also be set on a per-buffer or per-subtree
 basis using properties.
 @item <body>
 The code
 @end table
 
-@node Editing Source Code, Exporting Code Blocks, Structure of Code Blocks, Working With Source Code
+@node Editing source code, Exporting code blocks, Structure of code blocks, Working With Source Code
 @comment  node-name,  next,  previous,  up
-@comment  Editing Source Code, Exporting Code Blocks, Structure of Code Blocks, Working With Source Code
-@section Editing Source Code
+@comment  Editing source code, Exporting code blocks, Structure of code blocks, Working With Source Code
+@section Editing source code
 
 Use @kbd{C-c '} to edit the current code block. This brings up a language
 major-mode edit buffer containing the body of the code block. Saving this
@@ -10948,10 +10948,10 @@ By default, Org will ask before returning to an open edit buffer. Set
 to a non-nil value to switch without asking.
 @end table
 
-@node Exporting Code Blocks, Extracting Source Code, Editing Source Code, Working With Source Code
+@node Exporting code blocks, Extracting source code, Editing source code, Working With Source Code
 @comment  node-name,  next,  previous,  up
-@comment  Exporting Code Blocks, Extracting Source Code, Editing Source Code, Working With Source Code
-@section Exporting Code Blocks
+@comment  Exporting code blocks, Extracting source code, Editing source code, Working With Source Code
+@section Exporting code blocks
 
 It is possible to export the @emph{contents} of code blocks, the
 @emph{results} of code block evaluation, or @emph{neither} or @emph{both}.
@@ -10982,16 +10982,16 @@ exported as well.
 No part of the code block or it's results will be exported.
 @end table
 
-@node Extracting Source Code, Evaluating Code Blocks, Exporting Code Blocks, Working With Source Code
+@node Extracting source code, Evaluating code blocks, Exporting code blocks, Working With Source Code
 @comment  node-name,  next,  previous,  up
-@comment  Extracting Source Code, Evaluating Code Blocks, Exporting Code Blocks, Working With Source Code
-@section Extracting Source Code
+@comment  Extracting source code, Evaluating code blocks, Exporting code blocks, Working With Source Code
+@section Extracting source code
 
 Creating pure source code files by extracting code from source blocks is
 referred to as ``tangling'' -- a term adopted from the literate programming
 community.  During ``tangling'' of code blocks their bodies are expanded
 using @code{org-babel-expand-src-block} which can expand both variable and
-``noweb'' (see @ref{Noweb Reference Syntax}) style references.
+``noweb'' (see @ref{Noweb reference syntax}) style references.
 
 @subsubheading header arguments:
 @table @code
@@ -11013,15 +11013,15 @@ Tangle the current file
 Choose a file to tangle
 @end table
 
-@node Evaluating Code Blocks, Library of Babel, Extracting Source Code, Working With Source Code
+@node Evaluating code blocks, Library of Babel, Extracting source code, Working With Source Code
 @comment  node-name,  next,  previous,  up
-@comment  Evaluating Code Blocks,  , Extracting Source Code, Working With Source Code
-@section Evaluating Code Blocks
+@comment  Evaluating code blocks,  , Extracting source code, Working With Source Code
+@section Evaluating code blocks
 
 Blocks of code can be evaluated and the results incorporated into the
 org-mode buffer.  Check the value of the @code{org-babel-interpreters} for a
 list of evaluable languages on your system, also see @ref{Languages} for a
-list of supported languages.  See @ref{Structure of Code Blocks} for
+list of supported languages.  See @ref{Structure of code blocks} for
 information on the syntax used to define a code block.
 
 There are a number of ways of evaluating code blocks.  The simplest is to
@@ -11046,11 +11046,11 @@ This name is associated with the source code block to be evaluated.
 Arguments specified in this section will be passed to the code block.
 @item <header arguments>
 Header arguments can be placed after the function invocation.  See
-@ref{Header Arguments} for more information on header arguments.
+@ref{Header arguments} for more information on header arguments.
 @end table
 
 
-@node Library of Babel, Languages, Evaluating Code Blocks, Working With Source Code
+@node Library of Babel, Languages, Evaluating code blocks, Working With Source Code
 @section Library of Babel
 The ``Library of Babel'' is two things.  First it is a library of code blocks
 which can be called from any Org-mode file, and second it is an actual
@@ -11059,14 +11059,14 @@ Org-mode users may deposit functions which they believe to be generally
 useful.
 
 Code blocks defined in the``Library of Babel'' can be called remotely as if
-they were in the current Org-mode buffer (see @ref{Evaluating Code Blocks}
+they were in the current Org-mode buffer (see @ref{Evaluating code blocks}
 for information on the syntax of remote code block evaluation).
 
 Code blocks located in any Org-mode file can be loaded into the ``Library of
 Babel'' with the @code{org-babel-lob-ingest} function, bound to @key{C-c C-v
 l}.
 
-@node Languages, Header Arguments, Library of Babel, Working With Source Code
+@node Languages, Header arguments, Library of Babel, Working With Source Code
 @section Languages
 Org-babel provides support for the following languages. See the language
 specific documentation and an up to date list of languages is available at
@@ -11168,20 +11168,20 @@ of the language names from the above table).
 @end example
 
 
-@node Header Arguments, Results, Languages, Working With Source Code
-@section Header Arguments
+@node Header arguments, Results, Languages, Working With Source Code
+@section Header arguments
 
 Most code block functionality is configurable using header arguments.  This
 section provides an overview of the use of header arguments, and then
 exhaustively covers all header arguments.
 
 @menu
-* Using Header Arguments::
-* Specific Header Arguments::
+* Using Header arguments::
+* Specific Header arguments::
 @end menu
 
-@node Using Header Arguments, Specific Header Arguments, , Header Arguments
-@subsection Using Header Arguments
+@node Using Header arguments, Specific Header arguments, , Header arguments
+@subsection Using Header arguments
 
 The values of header arguments can be set in five different ways, each more
 specific (and having higher priority) than the last.
@@ -11193,7 +11193,7 @@ specific (and having higher priority) than the last.
 * Source Code Block specific header arguments::
 @end menu
 
-@node System-wide header arguments, Language Specific header arguments, , Using Header Arguments
+@node System-wide header arguments, Language Specific header arguments, , Using Header arguments
 @subsubheading System-wide header arguments
 System-wide values of header arguments can be specified by customizing the
 @code{org-babel-default-header-args} variable:
@@ -11223,18 +11223,18 @@ blocks.
 	      (assq-delete-all :noweb org-babel-default-header-args)))
 @end example
 
-@node Language Specific header arguments, Buffer Wide header arguments, System-wide header arguments, Using Header Arguments
+@node Language Specific header arguments, Buffer Wide header arguments, System-wide header arguments, Using Header arguments
 @subsubheading Language Specific header arguments
 Each language can define it's own set of default header arguments.  See the
 language-specific documentation available at
 @uref{http://orgmode.org/worg/org-contrib/babel/reference.php#languages}.
 for information on language-specific header arguments.
 
-@node Buffer Wide header arguments, header arguments in Org-mode Properties, Language Specific header arguments, Using Header Arguments
+@node Buffer Wide header arguments, header arguments in Org-mode Properties, Language Specific header arguments, Using Header arguments
 @subsubheading Buffer Wide header arguments
 FIXME
 
-@node header arguments in Org-mode Properties, Source Code Block specific header arguments, Buffer Wide header arguments, Using Header Arguments
+@node header arguments in Org-mode Properties, Source Code Block specific header arguments, Buffer Wide header arguments, Using Header arguments
 @subsubheading header arguments in Org-mode Properties
 
 Header arguments are also read from Org-mode properties (see @ref{Property
@@ -11262,7 +11262,7 @@ Properties defined in this way override the properties set in
 @code{org-set-property} function bound to @key{C-c C-x p} to set properties
 in Org-mode documents.
 
-@node Source Code Block specific header arguments, , header arguments in Org-mode Properties, Using Header Arguments
+@node Source Code Block specific header arguments, , header arguments in Org-mode Properties, Using Header arguments
 @subsubheading Source Code Block specific header arguments
 
 The most common way to assign values to header arguments is at the source
@@ -11297,8 +11297,8 @@ and for ``Library of Babel'' or function call lines as shown below.
 #+call: factorial(n=5) :exports results
 @end example
 
-@node Specific Header Arguments, , Using Header Arguments, Header Arguments
-@subsection Specific Header Arguments
+@node Specific Header arguments, , Using Header arguments, Header arguments
+@subsection Specific Header arguments
 Description of every standard (non language-specific) Org-babel header
 argument.
 
@@ -11314,7 +11314,7 @@ argument.
 * cache::
 @end menu
 
-@node var, results, , Specific Header Arguments
+@node var, results, , Specific Header arguments
 @subsubsection var
 The @code{:var} header argument is used to pass arguments to
 source code blocks.  The specifics of how arguments are included
@@ -11453,7 +11453,7 @@ Note: In Emacs, the documentation for any function or variable can be read
 using the @code{describe-function} (M-x describe function) and
 @code{describe-variable} (M-x describe variable) functions, respectively.
 
-@node results, file, var, Specific Header Arguments
+@node results, file, var, Specific Header arguments
 @subsubsection results
 
 There are three types of results header argument:
@@ -11549,7 +11549,7 @@ be prepended to the existing results.  Otherwise the new results will be
 inserted as with @code{replace}.
 @end itemize
 
-@node file, dir and remote execution, results, Specific Header Arguments
+@node file, dir and remote execution, results, Specific Header arguments
 @subsubsection file
 @code{:file} is used to specify a path for file output in which case an
 Org-mode style link (see @ref{Link format}) @code{file:} link is inserted
@@ -11566,7 +11566,7 @@ corresponding to the path indicated by @code{:file}.
 While the @code{:file} header argument can be used to specify the path to the
 output file,
 
-@node dir and remote execution, exports, file, Specific Header Arguments
+@node dir and remote execution, exports, file, Specific Header arguments
 @subsubsection dir and remote execution
 @code{:dir} specifies the /default directory/ during code block execution. If
 it is absent, then the directory associated with the current buffer is
@@ -11632,7 +11632,7 @@ it probable that the file will be created in a location to which the link
 does not point.
 @end itemize
 
-@node exports, tangle, dir and remote execution, Specific Header Arguments
+@node exports, tangle, dir and remote execution, Specific Header arguments
 @subsubsection exports
 Specify what should be included in HTML or LaTeX exports of the Org-mode
 file.
@@ -11651,7 +11651,7 @@ both the code and results are included in the exported file. E.g.,
 nothing is included in the exported file.  E.g., @code{:exports none}.
 @end itemize
 
-@node tangle, session, exports, Specific Header Arguments
+@node tangle, session, exports, Specific Header arguments
 @subsubsection tangle
 Specify whether or not the source code block should be included in tangled
 extraction of source code files.
@@ -11670,7 +11670,7 @@ as a file basename to which the block will be exported.  E.g., @code{:tangle
 basename}.
 @end itemize
 
-@node session, noweb, tangle, Specific Header Arguments
+@node session, noweb, tangle, Specific Header arguments
 @subsubsection session
 Start a session for an interpreted language where state is preserved.  This
 applies particularly to the supported languages python, R and ruby.
@@ -11681,9 +11681,9 @@ A string passed to the @code{:session} header argument will give the session
 a name.  This makes it possible to run concurrent sessions for each
 interpreted language.
 
-@node noweb, cache, session, Specific Header Arguments
+@node noweb, cache, session, Specific Header arguments
 @subsubsection noweb
-Controls the expansion of ``noweb'' style (see @ref{Noweb Reference Syntax})
+Controls the expansion of ``noweb'' style (see @ref{Noweb reference syntax})
 references in a source code block.  This header argument can have one of two
 values: @code{yes} or @code{no}.
 
@@ -11722,7 +11722,7 @@ Note that noweb replacement text that does not contain any newlines will not
 be affected by this change, so it is still possible to use inline noweb
 references.
 
-@node cache, , noweb, Specific Header Arguments
+@node cache, , noweb, Specific Header arguments
 @subsubsection cache
 Controls the use of in-buffer caching of source code block results to avoid
 re-running unchanged source code blocks.  This header argument can have one
@@ -11740,7 +11740,7 @@ executions of the source code block.  If the source code block has not
 changed since the last time it was evaluated, it will not be re-evaluated.
 @end itemize
 
-@node Results, Noweb Reference Syntax, Header Arguments, Working With Source Code
+@node Results, Noweb reference syntax, Header arguments, Working With Source Code
 @section Results
 The way in which results are handled depends on whether a session is invoked,
 as well as on whether @code{:results value} or @code{:results output} is
@@ -11820,8 +11820,8 @@ But in @code{:session} mode, the interactive interpreter receives input '2'
 and prints out its value, '2'. (Indeed, the other print statements are
 unnecessary here).
 
-@node Noweb Reference Syntax, Key Bindings & Useful Functions, Results, Working With Source Code
-@section Noweb Reference Syntax
+@node Noweb reference syntax, Key bindings & useful functions, Results, Working With Source Code
+@section Noweb reference syntax
 The ``noweb'' (see @uref{http://www.cs.tufts.edu/~nr/noweb/}) Literate
 Programming system allows named blocks of code to be referenced by using the
 familiar Noweb syntax:
@@ -11842,8 +11842,8 @@ Org-babel does not break correct code in a language, such as Ruby, where
 syntactically valid in languages that you use, then please consider setting
 the default value.
 
-@node Key Bindings & Useful Functions, Batch Execution, Noweb Reference Syntax, Working With Source Code
-@section Key Bindings & Useful Functions
+@node Key bindings & useful functions, Batch execution, Noweb reference syntax, Working With Source Code
+@section Key bindings & useful functions
 
 Org-babel re-binds many common Org-mode key sequences depending on
 the context.  Within a source-code block the following sequences
@@ -11852,213 +11852,67 @@ are rebound:
 @multitable @columnfractions 0.25 0.75
 @item @key{C-c C-c} @tab org-babel-execute-src-block
 @item @key{C-c C-o} @tab org-babel-open-src-block-result
-@item @key{C-up} @tab org-babel-load-in-session
-@item @key{M-down} @tab org-babel-pop-to-session
+@item @key{C-up}    @tab org-babel-load-in-session
+@item @key{M-down}  @tab org-babel-pop-to-session
 @end multitable
 
-Org-babel also exposes a number of functions behind the common
-=org-babel-key-prefix= of =C-c C-v=:
-@example
-#+begin_src emacs-lisp :exports none
-   (lambda (binding
-     (list (format "\\C-c \\M-b %s"
-		   (car binding))
-	   (format "[[function-%s][%s]]"
-		   (cdr binding) (cdr binding))))
-   org-babel-key-bindings)
-#+end_src
-@end example
-
 @multitable @columnfractions 0.25 0.75
-@item @key{C-c C-v t} @tab org-babel-tangle
-@item @key{C-c C-v T} @tab org-babel-tangle-file
-@item @key{C-c C-v e} @tab org-babel-execute-src-block
-@item @key{C-c C-v s} @tab org-babel-execute-subtree
+@item @key{C-c C-v a} @tab org-babel-sha1-hash
 @item @key{C-c C-v b} @tab org-babel-execute-buffer
-@item @key{C-c C-v h} @tab org-babel-sha1-hash
+@item @key{C-c C-v f} @tab org-babel-tangle-file
 @item @key{C-c C-v g} @tab org-babel-goto-named-source-block
+@item @key{C-c C-v h} @tab org-babel-describe-bindings
 @item @key{C-c C-v l} @tab org-babel-lob-ingest
+@item @key{C-c C-v p} @tab org-babel-expand-src-block
+@item @key{C-c C-v s} @tab org-babel-execute-subtree
+@item @key{C-c C-v t} @tab org-babel-tangle
+@item @key{C-c C-v z} @tab org-babel-switch-to-session
 @end multitable
 
-@subsection Functions
-@itemize @bullet
-@item org-babel-execute-src-block
-
-@example
-  org-babel-execute-src-block is an interactive Lisp function in
-  `org-babel.el'.
-
-  (org-babel-execute-src-block &optional ARG INFO PARAMS)
-
-  Evaluate the current source code block, and insert the results
-  into the buffer.  Source code execution and the collection and
-  formatting of results can be controlled through a variety of
-  header arguments.
-
-  Optionally supply a value for INFO in the form returned by
-  `org-babel-get-src-block-info'.
-
-  Optionally supply a value for PARAMS which will be merged with
-  the header arguments specified at the front of the source code
-  block.
-@end example
-
-@item org-babel-open-src-block-result
-
-@example
-  org-babel-open-src-block-result is an interactive Lisp function in
-  `org-babel.el'.
-
-  (org-babel-open-src-block-result &optional RE-RUN)
-
-  If `point' is on a src block then open the results of the
-  source code block, otherwise return nil.  With optional prefix
-  argument RE-RUN the source-code block is evaluated even if
-  results already exist.
-@end example
-
-@item org-babel-load-in-session
-
-@example
-  org-babel-load-in-session is an interactive Lisp function in
-  `org-babel.el'.
-
-  (org-babel-load-in-session &optional ARG INFO)
-
-  Load the body of the current source-code block.  Evaluate the
-  header arguments for the source block before entering the
-  session.  After loading the body this pops open the session.
-
-  [back]
-@end example
-
-@item org-babel-pop-to-session
-
-@example
-  org-babel-pop-to-session is an interactive Lisp function in
-  `org-babel.el'.
-
-  (org-babel-pop-to-session &optional ARG INFO)
-
-  Pop to the session of the current source-code block.  If
-  called with a prefix argument then evaluate the header arguments
-  for the source block before entering the session.  Copy the body
-  of the source block to the kill ring.
-
-  [back]
-@end example
-
-@item org-babel-tangle
-
-@example
-  org-babel-tangle is an interactive Lisp function in
-  `org-babel-tangle.el'.
-
-  It is bound to C-c C-v t.
-
-  (org-babel-tangle &optional TARGET-FILE LANG)
+When possible these keybindings were extended to work when the control key is
+kept pressed, resulting in the following additional keybindings.
 
-  Extract the bodies of all source code blocks from the current
-  file into their own source-specific files.  Optional argument
-  TARGET-FILE can be used to specify a default export file for all
-  source blocks.  Optional argument LANG can be used to limit the
-  exported source code blocks by language.
-@end example
-
-@item org-babel-execute-subtree
-
-@example
-  org-babel-execute-subtree is an interactive Lisp function in
-  `org-babel.el'.
-
-  It is bound to C-c C-v s.
-
-  (org-babel-execute-subtree &optional ARG)
-
-  Replace EVAL snippets in the entire subtree.
-@end example
-
-@item org-babel-execute-buffer
-
-@example
-  org-babel-execute-buffer is an interactive Lisp function in
-  `org-babel.el'.
-
-  It is bound to C-c C-v b.
-
-  (org-babel-execute-buffer &optional ARG)
-
-  Replace EVAL snippets in the entire buffer.
-@end example
-
-@item org-babel-sha1-hash
-
-@example
-  org-babel-sha1-hash is an interactive Lisp function in `org-babel.el'.
-
-  It is bound to C-c C-v h.
-
-  (org-babel-sha1-hash &optional INFO)
-
-  Not documented.
-@end example
-
-@item org-babel-goto-named-source-block
-
-@example
-  org-babel-goto-named-source-block is an interactive Lisp function in
-  `org-babel.el'.
-
-  It is bound to C-c C-v g.
-
-  (org-babel-goto-named-source-block &optional NAME)
-
-  Go to a named source-code block.
-@end example
-
-@item org-babel-lob-ingest
-
-@example
-  org-babel-lob-ingest is an interactive Lisp function in
-  `org-babel-lob.el'.
-
-  It is bound to C-c C-v l.
-
-  (org-babel-lob-ingest &optional FILE)
-
-  Add all source-blocks defined in FILE to `org-babel-library-of-babel'.
-@end example
-@end itemize
+@multitable @columnfractions 0.25 0.75
+@item @key{C-c C-v C-a} @tab org-babel-sha1-hash
+@item @key{C-c C-v C-b} @tab org-babel-execute-buffer
+@item @key{C-c C-v C-f} @tab org-babel-tangle-file
+@item @key{C-c C-v C-l} @tab org-babel-lob-ingest
+@item @key{C-c C-v C-p} @tab org-babel-expand-src-block
+@item @key{C-c C-v C-s} @tab org-babel-execute-subtree
+@item @key{C-c C-v C-t} @tab org-babel-tangle
+@item @key{C-c C-v C-z} @tab org-babel-switch-to-session
+@end multitable
 
-@node Batch Execution, , Key Bindings & Useful Functions, Working With Source Code
-@section Batch Execution
+@node Batch execution, , Key bindings & useful functions, Working With Source Code
+@section Batch execution
 It is possible to call Org-babel functions from the command line.  This shell
 script calls @code{org-babel-tangle} on every one of its arguments.
 
 Be sure to adjust the paths to fit your system.
+
 @example
-  #!/bin/sh
-  # -*- mode: shell-script -*-
-  #
-  # tangle a file with org-babel
-  #
-  DIR=`pwd`
-  FILES=""
-
-  # wrap each argument in the code required to call tangle on it
-  for i in $@@; do
-  FILES="$FILES \"$i\""
-  done
-
-  emacsclient \
-  --eval "(progn
-  (add-to-list 'load-path (expand-file-name \"~/src/org/lisp/\"))
-  (add-to-list 'load-path (expand-file-name \"~/src/org/contrib/lisp/\"))
-  (require 'org)(require 'org-exp)(require 'org-babel)
-  (mapc (lambda (file)
-         (find-file (expand-file-name file \"$DIR\"))
-         (org-babel-tangle)
-         (kill-buffer)) '($FILES)))"
+#!/bin/sh
+# -*- mode: shell-script -*-
+#
+# tangle a file with org-babel
+#
+DIR=`pwd`
+FILES=""
+
+# wrap each argument in the code required to call tangle on it
+for i in $@@; do
+FILES="$FILES \"$i\""
+done
+
+emacsclient \
+--eval "(progn
+(add-to-list 'load-path (expand-file-name \"~/src/org/lisp/\"))
+(add-to-list 'load-path (expand-file-name \"~/src/org/contrib/lisp/\"))
+(require 'org)(require 'org-exp)(require 'org-babel)
+(mapc (lambda (file)
+       (find-file (expand-file-name file \"$DIR\"))
+       (org-babel-tangle)
+       (kill-buffer)) '($FILES)))"
 @end example
 
 @node Miscellaneous, Hacking, Working With Source Code, Top