diff --git a/doc/source-code-chapter.texi b/doc/source-code-chapter.texi index b21fd7c02..9cce3ccc3 100644 --- a/doc/source-code-chapter.texi +++ b/doc/source-code-chapter.texi @@ -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{-mode} exists, where +@code{} 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: