From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eric Schulte Subject: Re: [PATCH] Add :special header argument Date: Sun, 08 Jan 2012 12:58:31 -0700 Message-ID: <87hb06yniw.fsf@gmx.com> References: <87ipkm3vda.fsf@Rainer.invalid> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Return-path: Received: from eggs.gnu.org ([140.186.70.92]:59184) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RjytH-0003E1-JD for emacs-orgmode@gnu.org; Sun, 08 Jan 2012 14:58:53 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RjytF-0005RV-Nd for emacs-orgmode@gnu.org; Sun, 08 Jan 2012 14:58:51 -0500 Received: from mailout-us.gmx.com ([74.208.5.67]:57512 helo=mailout-us.mail.com) by eggs.gnu.org with smtp (Exim 4.71) (envelope-from ) id 1RjytF-0005RM-CC for emacs-orgmode@gnu.org; Sun, 08 Jan 2012 14:58:49 -0500 In-Reply-To: <87ipkm3vda.fsf@Rainer.invalid> (Achim Gratz's message of "Sun, 08 Jan 2012 19:24:49 +0100") List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Achim Gratz Cc: emacs-orgmode@gnu.org --=-=-= Content-Type: text/plain Achim Gratz writes: > tsd@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, --=-=-= Content-Type: text/x-org Content-Disposition: inline; filename=wrap.org #+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 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0001-introduce-new-wrap-header-argument-for-wrapping-resu.patch >From 45b2335d5c6fba995ffe6556e5a1c9112ea392af Mon Sep 17 00:00:00 2001 From: Eric Schulte 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 --=-=-= Content-Type: text/plain -- Eric Schulte http://cs.unm.edu/~eschulte/ --=-=-=--