From: Dan Davison <davison@stats.ox.ac.uk>
To: Eric S Fraga <e.fraga@ucl.ac.uk>
Cc: emacs org-mode mailing list <emacs-orgmode@gnu.org>
Subject: Re: [babel] options to the example directive
Date: Wed, 04 Nov 2009 13:52:55 -0500 [thread overview]
Message-ID: <87vdhqcebc.fsf@stats.ox.ac.uk> (raw)
In-Reply-To: <87639qy672.wl%ucecesf@ucl.ac.uk> (Eric S. Fraga's message of "Wed, 04 Nov 2009 09:45:05 +0000")
[-- Attachment #1: Type: text/plain, Size: 892 bytes --]
Eric S Fraga <ucecesf@ucl.ac.uk> writes:
> At Tue, 03 Nov 2009 13:57:22 -0700,
> Eric Schulte wrote:
>>
>> Dan Davison <davison@stats.ox.ac.uk> writes:
>>
>> >
>> > This is a consequence of the same issue: org-exp-blocks preprocesses
>> > your src block in a pre-export buffer (a copy of the original), hands it
>> > to org-babel, which creates the results block (overwriting the version
>> > where you had manually inserted switches), and that results block lacks
>> > any switches.
>> >
>>
>> Would it be worthwhile to add a :results_switches header argument for
>> passing switches through to a results block? If that would solve the
>> problem it should be easy to implement. Best -- Eric
>
> Dan & Eric, I think this would be ideal, and results_switches is a
> perfectly fine name.
That's in branch results-switches at git://repo.or.cz/org-mode/babel.git, with patch below.
Dan
[-- Attachment #2: patch --]
[-- Type: text/plain, Size: 7163 bytes --]
diff --git a/contrib/babel/lisp/org-babel.el b/contrib/babel/lisp/org-babel.el
index 90ac447..1e04efe 100644
--- a/contrib/babel/lisp/org-babel.el
+++ b/contrib/babel/lisp/org-babel.el
@@ -175,7 +175,7 @@ the header arguments specified at the source code block."
;; (message "supplied params=%S" params) ;; debugging
(let* ((info (or info (org-babel-get-src-block-info)))
(lang (first info))
- (params (org-babel-merge-params (third info) params))
+ (params (setf (third info) (org-babel-merge-params (third info) params)))
(body (if (assoc :noweb params)
(org-babel-expand-noweb-references info) (second info)))
(processed-params (org-babel-process-params params))
@@ -192,7 +192,7 @@ the header arguments specified at the source code block."
(funcall cmd body params)))
(if (eq result-type 'value)
(setq result (org-babel-process-value-result result result-params)))
- (org-babel-insert-result result result-params)
+ (org-babel-insert-result result result-params info)
result))
(defun org-babel-load-in-session (&optional arg info)
@@ -473,7 +473,7 @@ buffer or nil if no such result exists."
(concat "#\\+resname:[ \t]*" (regexp-quote name) "[ \t\n\f\v\r]") nil t)
(move-beginning-of-line 0) (point))))
-(defun org-babel-where-is-src-block-result (&optional insert)
+(defun org-babel-where-is-src-block-result (&optional insert info)
"Return the point at the beginning of the result of the current
source block. Specifically at the beginning of the #+RESNAME:
line. If no result exists for this block then create a
@@ -482,7 +482,7 @@ line. If no result exists for this block then create a
(let* ((on-lob-line (progn (beginning-of-line 1)
(looking-at org-babel-lob-one-liner-regexp)))
(name (if on-lob-line (first (org-babel-lob-get-info))
- (fifth (org-babel-get-src-block-info))))
+ (fifth (or info (org-babel-get-src-block-info)))))
(head (unless on-lob-line (org-babel-where-is-src-block-head))) end)
(when head (goto-char head))
(or (and name (org-babel-find-named-result name))
@@ -528,7 +528,7 @@ line. If no result exists for this block then create a
(mapcar #'org-babel-read row)))
(org-table-to-lisp)))
-(defun org-babel-insert-result (result &optional insert)
+(defun org-babel-insert-result (result &optional insert info)
"Insert RESULT into the current buffer after the end of the
current source block. With optional argument INSERT controls
insertion of results in the org-mode file. INSERT can take the
@@ -566,7 +566,7 @@ code ---- the results are extracted in the syntax of the source
(if (member "file" insert) (setq result (org-babel-result-to-file result))))
(unless (listp result) (setq result (format "%S" result))))
(if (and insert (member "replace" insert) (not (member "silent" insert)))
- (org-babel-remove-result))
+ (org-babel-remove-result info))
(if (= (length result) 0)
(if (member "value" result-params)
(message "No result returned by source block")
@@ -578,28 +578,30 @@ code ---- the results are extracted in the syntax of the source
(string-equal (substring result -1) "\r"))))
(setq result (concat result "\n")))
(save-excursion
- (let ((existing-result (org-babel-where-is-src-block-result t)))
- (when existing-result (goto-char existing-result) (forward-line 1)))
- (cond
- ;; assume the result is a table if it's not a string
- ((not (stringp result))
- (insert (concat (orgtbl-to-orgtbl
- (if (and (listp (car result)) (listp (cdr (car result))))
- result (list result))
- '(:fmt (lambda (cell) (format "%S" cell)))) "\n"))
- (forward-line -1) (org-cycle))
- ((member "file" insert)
- (insert result))
- ((member "html" insert)
- (insert (format "#+BEGIN_HTML\n%s#+END_HTML\n" result)))
- ((member "latex" insert)
- (insert (format "#+BEGIN_LaTeX\n%s#+END_LaTeX\n" result)))
- ((member "code" insert)
- (insert (format "#+BEGIN_SRC %s\n%s#+END_SRC\n" lang result)))
- ((or (member "raw" insert) (member "org" insert))
- (save-excursion (insert result)) (if (org-at-table-p) (org-cycle)))
- (t
- (org-babel-examplize-region (point) (progn (insert result) (point))))))
+ (let ((existing-result (org-babel-where-is-src-block-result t info))
+ (results-switches (cdr (assoc :results_switches (third info)))))
+ (when existing-result (goto-char existing-result) (forward-line 1))
+ (setq results-switches (if results-switches (concat " " results-switches) ""))
+ (cond
+ ;; assume the result is a table if it's not a string
+ ((not (stringp result))
+ (insert (concat (orgtbl-to-orgtbl
+ (if (and (listp (car result)) (listp (cdr (car result))))
+ result (list result))
+ '(:fmt (lambda (cell) (format "%S" cell)))) "\n"))
+ (forward-line -1) (org-cycle))
+ ((member "file" insert)
+ (insert result))
+ ((member "html" insert)
+ (insert (format "#+BEGIN_HTML%s\n%s#+END_HTML\n" results-switches result)))
+ ((member "latex" insert)
+ (insert (format "#+BEGIN_LaTeX%s\n%s#+END_LaTeX\n" results-switches result)))
+ ((member "code" insert)
+ (insert (format "#+BEGIN_SRC %s%s\n%s#+END_SRC\n" lang results-switches result)))
+ ((or (member "raw" insert) (member "org" insert))
+ (save-excursion (insert result)) (if (org-at-table-p) (org-cycle)))
+ (t
+ (org-babel-examplize-region (point) (progn (insert result) (point)) results-switches)))))
(message "finished"))))
(defun org-babel-result-to-org-string (result)
@@ -607,11 +609,11 @@ code ---- the results are extracted in the syntax of the source
relies on `org-babel-insert-result'."
(with-temp-buffer (org-babel-insert-result result) (buffer-string)))
-(defun org-babel-remove-result ()
+(defun org-babel-remove-result (&optional info)
"Remove the result of the current source block."
(interactive)
(save-excursion
- (goto-char (org-babel-where-is-src-block-result t)) (forward-line 1)
+ (goto-char (org-babel-where-is-src-block-result t info)) (forward-line 1)
(delete-region (point) (org-babel-result-end))))
(defun org-babel-result-end ()
@@ -643,7 +645,7 @@ RESULT, and the display being the `file-name-nondirectory' if
non-nil."
(concat "[[file:" result "]]"))
-(defun org-babel-examplize-region (beg end)
+(defun org-babel-examplize-region (beg end results-switches)
"Comment out region using the ': ' org example quote."
(interactive "*r")
(let ((size (abs (- (line-number-at-pos end)
@@ -660,7 +662,7 @@ non-nil."
(move-beginning-of-line 1) (insert ": ") (forward-line 1)))
(t
(goto-char beg)
- (insert "#+begin_example\n")
+ (insert (format "#+begin_example%s\n" results-switches))
(forward-char (- end beg))
(insert "#+end_example\n"))))))
[-- Attachment #3: Type: text/plain, Size: 23 bytes --]
>
> Thanks,
> eric
[-- Attachment #4: Type: text/plain, Size: 204 bytes --]
_______________________________________________
Emacs-orgmode mailing list
Remember: use `Reply All' to send replies to the list.
Emacs-orgmode@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-orgmode
next prev parent reply other threads:[~2009-11-04 18:53 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-11-03 14:55 [babel] options to the example directive Eric S Fraga
2009-11-03 17:34 ` Dan Davison
2009-11-03 20:57 ` Eric Schulte
2009-11-04 9:45 ` Eric S Fraga
2009-11-04 18:52 ` Dan Davison [this message]
2009-11-04 22:01 ` Eric Schulte
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87vdhqcebc.fsf@stats.ox.ac.uk \
--to=davison@stats.ox.ac.uk \
--cc=e.fraga@ucl.ac.uk \
--cc=emacs-orgmode@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.