|
@@ -712,7 +712,7 @@ a list with the following pattern:
|
|
|
|
|
|
;;;###autoload
|
|
|
(defun org-babel-execute-src-block (&optional arg info params)
|
|
|
- "Execute the current source code block.
|
|
|
+ "Execute the current source code block and return the result.
|
|
|
Insert the results of execution into the buffer. Source code
|
|
|
execution and the collection and formatting of results can be
|
|
|
controlled through a variety of header arguments.
|
|
@@ -776,51 +776,50 @@ block."
|
|
|
(capitalize lang)
|
|
|
(let ((name (nth 4 info)))
|
|
|
(if name (format " (%s)" name) "")))
|
|
|
- (if (member "none" result-params)
|
|
|
- (progn (funcall cmd body params)
|
|
|
- (message "result silenced"))
|
|
|
- (setq result
|
|
|
- (let ((r (funcall cmd body params)))
|
|
|
- (if (and (eq (cdr (assq :result-type params)) 'value)
|
|
|
- (or (member "vector" result-params)
|
|
|
- (member "table" result-params))
|
|
|
- (not (listp r)))
|
|
|
- (list (list r))
|
|
|
- r)))
|
|
|
- (let ((file (and (member "file" result-params)
|
|
|
- (cdr (assq :file params)))))
|
|
|
- ;; If non-empty result and :file then write to :file.
|
|
|
- (when file
|
|
|
- ;; If `:results' are special types like `link' or
|
|
|
- ;; `graphics', don't write result to `:file'. Only
|
|
|
- ;; insert a link to `:file'.
|
|
|
- (when (and result
|
|
|
- (not (or (member "link" result-params)
|
|
|
- (member "graphics" result-params))))
|
|
|
- (with-temp-file file
|
|
|
- (insert (org-babel-format-result
|
|
|
- result
|
|
|
- (cdr (assq :sep params)))))
|
|
|
- ;; Set file permissions if header argument
|
|
|
- ;; `:file-mode' is provided.
|
|
|
- (when (assq :file-mode params)
|
|
|
- (set-file-modes file (cdr (assq :file-mode params)))))
|
|
|
- (setq result file))
|
|
|
- ;; Possibly perform post process provided its
|
|
|
- ;; appropriate. Dynamically bind "*this*" to the
|
|
|
- ;; actual results of the block.
|
|
|
- (let ((post (cdr (assq :post params))))
|
|
|
- (when post
|
|
|
- (let ((*this* (if (not file) result
|
|
|
- (org-babel-result-to-file
|
|
|
- file
|
|
|
- (org-babel--file-desc params result)
|
|
|
- 'attachment))))
|
|
|
- (setq result (org-babel-ref-resolve post))
|
|
|
- (when file
|
|
|
- (setq result-params (remove "file" result-params))))))
|
|
|
- (org-babel-insert-result
|
|
|
- result result-params info new-hash lang)))
|
|
|
+ (setq result
|
|
|
+ (let ((r (funcall cmd body params)))
|
|
|
+ (if (and (eq (cdr (assq :result-type params)) 'value)
|
|
|
+ (or (member "vector" result-params)
|
|
|
+ (member "table" result-params))
|
|
|
+ (not (listp r)))
|
|
|
+ (list (list r))
|
|
|
+ r)))
|
|
|
+ (let ((file (and (member "file" result-params)
|
|
|
+ (cdr (assq :file params)))))
|
|
|
+ ;; If non-empty result and :file then write to :file.
|
|
|
+ (when file
|
|
|
+ ;; If `:results' are special types like `link' or
|
|
|
+ ;; `graphics', don't write result to `:file'. Only
|
|
|
+ ;; insert a link to `:file'.
|
|
|
+ (when (and result
|
|
|
+ (not (or (member "link" result-params)
|
|
|
+ (member "graphics" result-params))))
|
|
|
+ (with-temp-file file
|
|
|
+ (insert (org-babel-format-result
|
|
|
+ result
|
|
|
+ (cdr (assq :sep params)))))
|
|
|
+ ;; Set file permissions if header argument
|
|
|
+ ;; `:file-mode' is provided.
|
|
|
+ (when (assq :file-mode params)
|
|
|
+ (set-file-modes file (cdr (assq :file-mode params)))))
|
|
|
+ (setq result file))
|
|
|
+ ;; Possibly perform post process provided its
|
|
|
+ ;; appropriate. Dynamically bind "*this*" to the
|
|
|
+ ;; actual results of the block.
|
|
|
+ (let ((post (cdr (assq :post params))))
|
|
|
+ (when post
|
|
|
+ (let ((*this* (if (not file) result
|
|
|
+ (org-babel-result-to-file
|
|
|
+ file
|
|
|
+ (org-babel--file-desc params result)
|
|
|
+ 'attachment))))
|
|
|
+ (setq result (org-babel-ref-resolve post))
|
|
|
+ (when file
|
|
|
+ (setq result-params (remove "file" result-params))))))
|
|
|
+ (if (member "none" result-params)
|
|
|
+ (message "result silenced")
|
|
|
+ (org-babel-insert-result
|
|
|
+ result result-params info new-hash lang)))
|
|
|
(run-hooks 'org-babel-after-execute-hook)
|
|
|
result)))))))
|
|
|
|
|
@@ -3229,20 +3228,19 @@ Emacs shutdown."))
|
|
|
(declare (indent 1) (debug t))
|
|
|
(org-with-gensyms (params)
|
|
|
`(let ((,params ,result-params))
|
|
|
- (unless (member "none" ,params)
|
|
|
- (if (or (member "scalar" ,params)
|
|
|
- (member "verbatim" ,params)
|
|
|
- (member "html" ,params)
|
|
|
- (member "code" ,params)
|
|
|
- (member "pp" ,params)
|
|
|
- (member "file" ,params)
|
|
|
- (and (or (member "output" ,params)
|
|
|
- (member "raw" ,params)
|
|
|
- (member "org" ,params)
|
|
|
- (member "drawer" ,params))
|
|
|
- (not (member "table" ,params))))
|
|
|
- ,scalar-form
|
|
|
- ,@table-forms)))))
|
|
|
+ (if (or (member "scalar" ,params)
|
|
|
+ (member "verbatim" ,params)
|
|
|
+ (member "html" ,params)
|
|
|
+ (member "code" ,params)
|
|
|
+ (member "pp" ,params)
|
|
|
+ (member "file" ,params)
|
|
|
+ (and (or (member "output" ,params)
|
|
|
+ (member "raw" ,params)
|
|
|
+ (member "org" ,params)
|
|
|
+ (member "drawer" ,params))
|
|
|
+ (not (member "table" ,params))))
|
|
|
+ ,scalar-form
|
|
|
+ ,@table-forms))))
|
|
|
|
|
|
(defun org-babel-temp-file (prefix &optional suffix)
|
|
|
"Create a temporary file in the `org-babel-temporary-directory'.
|