|
@@ -1,8 +1,7 @@
|
|
|
-@chapter Working With Source Code or Embedded Source Code
|
|
|
+@chapter ``Working With Source Code'' or ``Embedded Source Code''
|
|
|
|
|
|
Source code can be included in Org-mode documents using a @samp{src} block:
|
|
|
|
|
|
-FIXME: This example is also in the Literal Examples section.
|
|
|
@example
|
|
|
#+BEGIN_SRC emacs-lisp
|
|
|
(defun org-xor (a b)
|
|
@@ -11,52 +10,82 @@ FIXME: This example is also in the Literal Examples section.
|
|
|
#+END_SRC
|
|
|
@end example
|
|
|
|
|
|
-Org supports the following ways of working with such code blocks:
|
|
|
+Org provides the following features for working with such code blocks:
|
|
|
|
|
|
@itemize @bullet
|
|
|
@item
|
|
|
-Editing in the appropriate Emacs major-mode (@kbd{C-c '})
|
|
|
+Editing in the appropriate Emacs major-mode (@ref{Editing Source Code})
|
|
|
@item
|
|
|
-Export with appropriate markup
|
|
|
+Export with appropriate markup (@ref{Exporting Code Blocks})
|
|
|
@item
|
|
|
-Extraction (``tangling'') into pure code files.
|
|
|
+Extraction (``tangling'') into pure code files. (@ref{Extracting Source Code})
|
|
|
@item
|
|
|
-Execution, with results captured in the Org buffer
|
|
|
+Code execution, with results captured in the Org buffer (@ref{Evaluating Code Blocks})
|
|
|
@item
|
|
|
Using code blocks in table formulas
|
|
|
@end itemize
|
|
|
|
|
|
|
|
|
-@section Syntax
|
|
|
- :PROPERTIES:
|
|
|
- :CUSTOM_ID: syntax
|
|
|
- :END:
|
|
|
|
|
|
-@subsection Source Code Block
|
|
|
-The basic syntax of source code blocks in Org-babel is as follows:
|
|
|
+@section Structure of Code Blocks
|
|
|
+
|
|
|
+The basic structure of code blocks is as follows:
|
|
|
|
|
|
@example
|
|
|
+#+srcname: name
|
|
|
#+begin_src language header-arguments switches
|
|
|
body
|
|
|
#+end_src
|
|
|
@end example
|
|
|
-@table
|
|
|
+
|
|
|
+@table @code
|
|
|
+@item name
|
|
|
+The initial name line is optional. If present it is used during code evaluation.
|
|
|
@item language
|
|
|
-The language of the code in the source code block. Valid values must
|
|
|
-be members of =org-babel-interpreters=.
|
|
|
+The language of the code in the block.
|
|
|
@item header-arguments
|
|
|
-Header arguments control many facets of the evaluation and output of
|
|
|
-source code blocks. See the [[header-arguments][Header Arguments]]
|
|
|
-section for a complete review of available header arguments.
|
|
|
+Header arguments control evaluation, export and tangling of source
|
|
|
+code blocks. See the [[header-arguments][Header Arguments]] section.
|
|
|
@item switches
|
|
|
FIXME link/relocate switches discussion in ``Literal examples'' section
|
|
|
@item body
|
|
|
-The source code to be evaluated. An important key-binding is C-c '.
|
|
|
-This calls =org-edit-src-code=, a function that brings up an edit
|
|
|
-buffer containing the code using the Emacs major mode appropriate to
|
|
|
-the language. You can edit your source code block as you regularly
|
|
|
-would in Emacs.
|
|
|
+The code
|
|
|
+@end table
|
|
|
+
|
|
|
+@section Editing Source Code
|
|
|
+
|
|
|
+Use @kbd{C-c '} to edit the code block at point. This brings up a
|
|
|
+language major-mode buffer containing the body of the code
|
|
|
+block. Saving this buffer will write the new contents back to the Org
|
|
|
+buffer. Use @kbd{C-c '} again to exit.
|
|
|
+
|
|
|
+The edit buffer has a minor mode active called
|
|
|
+@code{org-src-mode}. The following variables can be used to configure
|
|
|
+the behavior of the edit buffer. See also the customization group
|
|
|
+@code{org-edit-structure} for futher configuration options.
|
|
|
+
|
|
|
+@table @code
|
|
|
+@item org-src-lang-modes
|
|
|
+If an emacs major-mode named @code{<lang>-mode} exists, where
|
|
|
+@code{<lang>} is the language named in header line of the code block,
|
|
|
+then the edit buffer will be placed in that major-mode. This variable
|
|
|
+can be used to map arbitrary language names to existing major modes.
|
|
|
+@item org-src-window-setup
|
|
|
+Controls the way Emacs windows are rearranged when the edit buffer is created.
|
|
|
+@item org-src-preserve-indentation
|
|
|
+This variable is expecially useful for tangling languages such as
|
|
|
+python, where whitespace the indentation in the output is critical.
|
|
|
+@item org-src-ask-before-returning-to-edit-buffer
|
|
|
+By default, Org will ask before returning to an open edit buffer. Set
|
|
|
+to a non-nil value to switch without asking.
|
|
|
@end table
|
|
|
+
|
|
|
+@section Exporting Code Blocks
|
|
|
+
|
|
|
+@section Extracting Source Code
|
|
|
+
|
|
|
+@section Evaluating Code Blocks
|
|
|
+
|
|
|
This syntax can be expanded by naming the source code block.
|
|
|
|
|
|
@example
|
|
@@ -107,7 +136,7 @@ body
|
|
|
#+lob: R-plot(data=R-plot-example-data)
|
|
|
@end example
|
|
|
|
|
|
-@section Languages
|
|
|
+@subsection Languages
|
|
|
:PROPERTIES:
|
|
|
:CUSTOM_ID: languages
|
|
|
:END:
|