summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Schulte <schulte.eric@gmail.com>2013-06-22 19:52:35 (GMT)
committer Eric Schulte <schulte.eric@gmail.com>2013-06-22 20:09:24 (GMT)
commit56ac8f8b6951379e323ee724d79f95f97ae2c8a1 (patch)
tree7c2f75cebfef8e41147526b2372c2ecab01d92cd
parent2d98dd80a4c8f684a755b825165c1d9fd39472fb (diff)
downloadorg-mode-56ac8f8b6951379e323ee724d79f95f97ae2c8a1.zip
org-mode-56ac8f8b6951379e323ee724d79f95f97ae2c8a1.tar.gz
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.
-rw-r--r--doc/org.texi24
-rw-r--r--lisp/ob-core.el11
-rw-r--r--lisp/ob-gnuplot.el15
3 files changed, 38 insertions, 12 deletions
diff --git a/doc/org.texi b/doc/org.texi
index 2c4e12d..2349778 100644
--- a/doc/org.texi
+++ b/doc/org.texi
@@ -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
diff --git a/lisp/ob-core.el b/lisp/ob-core.el
index 9fddae3..b8cd3f7 100644
--- a/lisp/ob-core.el
+++ b/lisp/ob-core.el
@@ -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)
diff --git a/lisp/ob-gnuplot.el b/lisp/ob-gnuplot.el
index 55d6d17..cc9186b 100644
--- a/lisp/ob-gnuplot.el
+++ b/lisp/ob-gnuplot.el
@@ -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)