prolog and epilog header arguments

* lisp/ob-gnuplot.el (org-babel-expand-body:gnuplot): Use new header
  arguments.
* lisp/ob-core.el (org-babel-common-header-args-w-values): Mention new
  header arguments.
  (org-babel-expand-body:generic): Use new header arguments.
* doc/org.texi (Specific header arguments): Document new header
  arguments.
This commit is contained in:
Eric Schulte 2013-06-22 13:52:35 -06:00
parent 2d98dd80a4
commit 56ac8f8b69
3 changed files with 38 additions and 12 deletions

View File

@ -726,6 +726,8 @@ Specific header arguments
* eval:: Limit evaluation of specific code blocks
* wrap:: Mark source block evaluation results
* post:: Post processing of code block results
* prologue:: Text to prepend to code block body
* epilogue:: Text to append to code block body
Miscellaneous
@ -14172,6 +14174,8 @@ argument in lowercase letters. The following header arguments are defined:
* eval:: Limit evaluation of specific code blocks
* wrap:: Mark source block evaluation results
* post:: Post processing of code block results
* prologue:: Text to prepend to code block body
* epilogue:: Text to append to code block body
@end menu
Additional header arguments are defined on a language-specific basis, see
@ -15118,7 +15122,7 @@ to @code{#+BEGIN_} and @code{#+END_}, which will then be used to wrap the
results. If not string is specified then the results will be wrapped in a
@code{#+BEGIN/END_RESULTS} block.
@node post, , wrap, Specific header arguments
@node post, prologue, wrap, Specific header arguments
@subsubsection @code{:post}
The @code{:post} header argument is used to post-process the results of a
code block execution. When a post argument is given, the results of the code
@ -15153,6 +15157,24 @@ argument.
:END:
@end example
@node prologue, epilogue, post, Specific header arguments
The value of the @code{prologue} header argument will be prepended to the
code block body before execution. For example, @code{:prologue "reset"} may
be used to reset a gnuplot session before execution of a particular code
block, or the following configuration may be used to do this for all gnuplot
code blocks. Also see @ref{epilogue}.
@lisp
(add-to-list 'org-babel-default-header-args:gnuplot
'((:prologue . "reset")))
@end lisp
@node epilogue, , prologue, Specific header arguments
The value of the @code{epilogue} header argument will be appended to the code
block body before execution. Also see @ref{prologue}.
@node Results of evaluation, Noweb reference syntax, Header arguments, Working With Source Code
@section Results of evaluation
@cindex code block, results of evaluation

View File

@ -444,6 +444,7 @@ then run `org-babel-switch-to-session'."
(dir . :any)
(eval . ((never query)))
(exports . ((code results both none)))
(epilogue . :any)
(file . :any)
(file-desc . :any)
(hlines . ((no yes)))
@ -455,6 +456,7 @@ then run `org-babel-switch-to-session'."
(noweb-sep . :any)
(padline . ((yes no)))
(post . :any)
(prologue . :any)
(results . ((file list vector table scalar verbatim)
(raw html latex org code pp drawer)
(replace silent none append prepend)
@ -671,7 +673,14 @@ Expand a block of code with org-babel according to its header
arguments. This generic implementation of body expansion is
called for languages which have not defined their own specific
org-babel-expand-body:lang function."
(mapconcat #'identity (append var-lines (list body)) "\n"))
(let ((pro (cdr (assoc :prologue params)))
(epi (cdr (assoc :epilogue params))))
(mapconcat #'identity
(append (when pro (list pro))
var-lines
(list body)
(when epi (list epi)))
"\n")))
;;;###autoload
(defun org-babel-expand-src-block (&optional arg info params)

View File

@ -68,13 +68,6 @@
(defvar *org-babel-gnuplot-missing* nil)
(defcustom *org-babel-gnuplot-prefix* nil
"Optional prefix to send to gnuplot before the body of every code block.
For example \"reset\" may be used to reset gnuplot between
blocks."
:group 'org-babel
:type 'string)
(defcustom *org-babel-gnuplot-terms*
'((eps . "postscript eps"))
"List of file extensions and the associated gnuplot terminal."
@ -103,7 +96,9 @@ code."
(save-window-excursion
(let* ((vars (org-babel-gnuplot-process-vars params))
(out-file (cdr (assoc :file params)))
(term (or (cdr (assoc :term params))
(prologue (cdr (assoc :prologue params)))
(epilogue (cdr (assoc :epilogue params)))
(term (or (cdr (assoc :term params))
(when out-file
(let ((ext (file-name-extension out-file)))
(or (cdr (assoc (intern (downcase ext))
@ -166,8 +161,8 @@ code."
(setq body (replace-regexp-in-string
(format "\\$%s" (car pair)) (cdr pair) body)))
vars)
(when *org-babel-gnuplot-prefix*
(funcall add-to-body *org-babel-gnuplot-prefix*)))
(when prologue (funcall add-to-body prologue))
(when epilogue (setq body (concat body "\n" epilogue))))
body))
(defun org-babel-execute:gnuplot (body params)