Achim Gratz <strom...@nexgo.de> writes: > t...@tsdye.com (Thomas S. Dye) writes: >> The attached patch defines a new header argument, :special, which wraps >> the results of Org babel source block execution in a #BEGIN_ ... #+END_ >> block. The block name is taken from a new variable >> org-babel-wrap-special, which is initialized as "results". > > What is the rationale for feeding the block name via a configuration > variable rather then a value to the header argument ":special"? > > > Regards, > Achim.
Attached is an alternate patch and an example of its use. This patch introduces a ":wrap" header argument which accepts an optional value used to specify the name of the block with which to wrap results. If this looks workable we could push it up once it gets some documentation and tests. Cheers,
#+Title: demonstrating the new :wrap header argument #+begin_src emacs-lisp :wrap schulte '((1 2) (3 4)) #+end_src #+results: #+BEGIN_schulte | 1 | 2 | | 3 | 4 | #+END_schulte
>From 45b2335d5c6fba995ffe6556e5a1c9112ea392af Mon Sep 17 00:00:00 2001 From: Eric Schulte <eric.schu...@gmx.com> Date: Sun, 8 Jan 2012 12:54:13 -0700 Subject: [PATCH] introduce new ":wrap" header argument for wrapping results in named blocks * lisp/ob.el (org-babel-common-header-args-w-values): Add the new header argument name. (org-babel-insert-result): Respect the value of the :wrap header argument when inserting results. (org-babel-result-end): Find the end of arbitrarily named result blocks. --- lisp/ob.el | 15 +++++++++------ 1 files changed, 9 insertions(+), 6 deletions(-) diff --git a/lisp/ob.el b/lisp/ob.el index 0288eb3..b51cc51 100644 --- a/lisp/ob.el +++ b/lisp/ob.el @@ -386,7 +386,8 @@ then run `org-babel-pop-to-session'." (session . :any) (shebang . :any) (tangle . ((tangle yes no :any))) - (var . :any))) + (var . :any) + (wrap . :any))) (defconst org-babel-header-arg-names (mapcar #'car org-babel-common-header-args-w-values) @@ -1754,6 +1755,9 @@ code ---- the results are extracted in the syntax of the source (setq end (point-marker)) ;; possibly wrap result (cond + ((assoc :wrap (nth 2 info)) + (let ((name (or (cdr (assoc :wrap (nth 2 info))) "results"))) + (wrap (concat "#+BEGIN_" name) (concat "#+END_" name)))) ((member "html" result-params) (wrap "#+BEGIN_HTML" "#+END_HTML")) ((member "latex" result-params) @@ -1804,11 +1808,10 @@ code ---- the results are extracted in the syntax of the source ((looking-at "^\\([ \t]*\\):RESULTS:") (re-search-forward (concat "^" (match-string 1) ":END:"))) (t - (let ((case-fold-search t) - (blocks-re (regexp-opt - (list "latex" "html" "example" "src" "result" "org")))) - (if (looking-at (concat "[ \t]*#\\+begin_" blocks-re)) - (progn (re-search-forward (concat "[ \t]*#\\+end_" blocks-re) nil t) + (let ((case-fold-search t)) + (if (looking-at (concat "[ \t]*#\\+begin_\\([^ \t\n\r]+\\)")) + (progn (re-search-forward (concat "[ \t]*#\\+end_" (match-string 1)) + nil t) (forward-char 1)) (while (looking-at "[ \t]*\\(: \\|\\[\\[\\)") (forward-line 1)))) -- 1.7.8.1
-- Eric Schulte http://cs.unm.edu/~eschulte/