1
0
mirror of https://git.savannah.gnu.org/git/emacs/org-mode.git synced 2024-12-26 10:49:38 +00:00

additional code block execution refactoring

multiple changes to remove overly long lines.

* lisp/ob-core.el (org-babel-execute-src-block): A cond makes it more
  clear that we definitely do not execute without user confirmation.

  (org-babel-where-is-src-block-result): Overly long line.
This commit is contained in:
Eric Schulte 2013-03-09 10:14:03 -07:00 committed by Achim Gratz
parent be0883940d
commit b0bccccb5c

View File

@ -540,14 +540,22 @@ block."
(let* ((params (if params
(org-babel-process-params merged-params)
(nth 2 info)))
(cache-p (and (not arg) (cdr (assoc :cache params))
(cachep (and (not arg) (cdr (assoc :cache params))
(string= "yes" (cdr (assoc :cache params)))))
(new-hash (when cache-p (org-babel-sha1-hash info)))
(old-hash (when cache-p (org-babel-current-result-hash)))
(cache-current-p (and (not arg) new-hash (equal new-hash old-hash))))
(when (or cache-current-p
(org-babel-confirm-evaluate
(let ((i info)) (setf (nth 2 i) merged-params) i)))
(new-hash (when cachep (org-babel-sha1-hash info)))
(old-hash (when cachep (org-babel-current-result-hash)))
(cache-current-p (and (not arg) new-hash
(equal new-hash old-hash))))
(cond
(cache-current-p
(save-excursion ;; return cached result
(goto-char (org-babel-where-is-src-block-result nil info))
(end-of-line 1) (forward-char 1)
(let ((result (org-babel-read-result)))
(message (replace-regexp-in-string
"%" "%%" (format "%S" result))) result)))
((org-babel-confirm-evaluate
(let ((i info)) (setf (nth 2 i) merged-params) i))
(let* ((lang (nth 0 info))
(result-params (cdr (assoc :result-params params)))
(body (setf (nth 1 info)
@ -559,57 +567,57 @@ block."
(or (and dir (file-name-as-directory (expand-file-name dir)))
default-directory))
(org-babel-call-process-region-original ;; for tramp handler
(or (org-bound-and-true-p org-babel-call-process-region-original)
(or (org-bound-and-true-p
org-babel-call-process-region-original)
(symbol-function 'call-process-region)))
(indent (car (last info)))
result cmd)
(unwind-protect
(let ((call-process-region
(lambda (&rest args)
(apply 'org-babel-tramp-handle-call-process-region args))))
(let ((lang-check (lambda (f)
(let ((f (intern (concat "org-babel-execute:" f))))
(when (fboundp f) f)))))
(apply 'org-babel-tramp-handle-call-process-region
args))))
(let ((lang-check
(lambda (f)
(let ((f (intern (concat "org-babel-execute:" f))))
(when (fboundp f) f)))))
(setq cmd
(or (funcall lang-check lang)
(funcall lang-check (symbol-name
(cdr (assoc lang org-src-lang-modes))))
(error "No org-babel-execute function for %s!" lang))))
(if cache-current-p
(save-excursion ;; return cached result
(goto-char (org-babel-where-is-src-block-result nil info))
(end-of-line 1) (forward-char 1)
(setq result (org-babel-read-result))
(message (replace-regexp-in-string
"%" "%%" (format "%S" result))) result)
(message "executing %s code block%s..."
(capitalize lang)
(if (nth 4 info) (format " (%s)" (nth 4 info)) ""))
(if (member "none" result-params)
(progn
(funcall cmd body params)
(message "result silenced"))
(setq result
((lambda (result)
(if (and (eq (cdr (assoc :result-type params)) 'value)
(or (member "vector" result-params)
(member "table" result-params))
(not (listp result)))
(list (list result)) result))
(funcall cmd body params)))
;; if non-empty result and :file then write to :file
(when (cdr (assoc :file params))
(when result
(with-temp-file (cdr (assoc :file params))
(insert
(org-babel-format-result
result (cdr (assoc :sep (nth 2 info)))))))
(setq result (cdr (assoc :file params))))
(org-babel-insert-result
result result-params info new-hash indent lang)
(run-hooks 'org-babel-after-execute-hook)
result)))
(setq call-process-region 'org-babel-call-process-region-original))))))))
(funcall lang-check
(symbol-name
(cdr (assoc lang org-src-lang-modes))))
(error "No org-babel-execute function for %s!"
lang))))
(message "executing %s code block%s..."
(capitalize lang)
(if (nth 4 info) (format " (%s)" (nth 4 info)) ""))
(if (member "none" result-params)
(progn
(funcall cmd body params)
(message "result silenced"))
(setq result
((lambda (result)
(if (and (eq (cdr (assoc :result-type params))
'value)
(or (member "vector" result-params)
(member "table" result-params))
(not (listp result)))
(list (list result)) result))
(funcall cmd body params)))
;; if non-empty result and :file then write to :file
(when (cdr (assoc :file params))
(when result
(with-temp-file (cdr (assoc :file params))
(insert
(org-babel-format-result
result (cdr (assoc :sep (nth 2 info)))))))
(setq result (cdr (assoc :file params))))
(org-babel-insert-result
result result-params info new-hash indent lang)
(run-hooks 'org-babel-after-execute-hook)
result))
(setq call-process-region
'org-babel-call-process-region-original)))))))))
(defun org-babel-expand-body:generic (body params &optional var-lines)
"Expand BODY with PARAMS.
@ -1748,7 +1756,8 @@ following the source block."
(inlinep (when (org-babel-get-inline-src-block-matches)
(match-end 0)))
(name (if on-lob-line
(mapconcat #'identity (butlast (org-babel-lob-get-info)) "")
(mapconcat #'identity (butlast (org-babel-lob-get-info))
"")
(nth 4 (or info (org-babel-get-src-block-info 'light)))))
(head (unless on-lob-line (org-babel-where-is-src-block-head)))
found beg end)