[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[O] [PATCH 03/10] Clean up various org-babel-*-maybe commands
From: |
Aaron Ecay |
Subject: |
[O] [PATCH 03/10] Clean up various org-babel-*-maybe commands |
Date: |
Mon, 1 Apr 2013 01:42:17 -0400 |
* lisp/ob-core.el (org-babel-if-in-src-block): New macro
(org-babel-execute-src-block-maybe),
(org-babel-expand-src-block-maybe),
(org-babel-load-in-session-maybe),
(org-babel-pop-to-session-maybe): Use it
org-babel-get-src-block-info is a potentially expensive operation, which
is why its ‘light’ argument exists. But in any case, it is overkill to
query the whole info, if all that is needed is whether point is in a
block or not. Factor the simplified common code out into a macro.
---
lisp/ob-core.el | 31 +++++++++++++++++--------------
1 file changed, 17 insertions(+), 14 deletions(-)
diff --git a/lisp/ob-core.el b/lisp/ob-core.el
index 723aa9d..283628e 100644
--- a/lisp/ob-core.el
+++ b/lisp/ob-core.el
@@ -365,15 +365,22 @@ of potentially harmful code."
(or (org-babel-execute-src-block-maybe)
(org-babel-lob-execute-maybe)))
+(defmacro org-babel-when-in-src-block (&rest body)
+ `(if (or (org-babel-where-is-src-block-head)
+ (org-babel-get-inline-src-block-matches))
+ (progn
+ ,@body
+ t)
+ nil))
+
(defun org-babel-execute-src-block-maybe ()
"Conditionally execute a source block.
Detect if this is context for a Babel src-block and if so
then run `org-babel-execute-src-block'."
(interactive)
- (let ((info (org-babel-get-src-block-info)))
- (if info
- (progn (org-babel-eval-wipe-error-buffer)
- (org-babel-execute-src-block current-prefix-arg info) t) nil)))
+ (org-babel-when-in-src-block
+ (org-babel-eval-wipe-error-buffer)
+ (org-babel-execute-src-block current-prefix-arg)))
;;;###autoload
(defun org-babel-view-src-block-info ()
@@ -409,10 +416,8 @@ a window into the `org-babel-get-src-block-info' function."
Detect if this is context for a org-babel src-block and if so
then run `org-babel-expand-src-block'."
(interactive)
- (let ((info (org-babel-get-src-block-info)))
- (if info
- (progn (org-babel-expand-src-block current-prefix-arg info) t)
- nil)))
+ (org-babel-when-in-src-block
+ (org-babel-expand-src-block current-prefix-arg)))
;;;###autoload
(defun org-babel-load-in-session-maybe ()
@@ -420,10 +425,8 @@ then run `org-babel-expand-src-block'."
Detect if this is context for a org-babel src-block and if so
then run `org-babel-load-in-session'."
(interactive)
- (let ((info (org-babel-get-src-block-info)))
- (if info
- (progn (org-babel-load-in-session current-prefix-arg info) t)
- nil)))
+ (org-babel-when-in-src-block
+ (org-babel-load-in-session current-prefix-arg)))
(add-hook 'org-metaup-hook 'org-babel-load-in-session-maybe)
@@ -433,8 +436,8 @@ then run `org-babel-load-in-session'."
Detect if this is context for a org-babel src-block and if so
then run `org-babel-pop-to-session'."
(interactive)
- (let ((info (org-babel-get-src-block-info)))
- (if info (progn (org-babel-pop-to-session current-prefix-arg info) t)
nil)))
+ (org-babel-when-in-src-block
+ (org-babel-pop-to-session current-prefix-arg)))
(add-hook 'org-metadown-hook 'org-babel-pop-to-session-maybe)
--
1.8.2
[O] [PATCH 03/10] Clean up various org-babel-*-maybe commands,
Aaron Ecay <=
[O] [PATCH 02/10] Clean up org-babel-expand-body: functions for awk and picolisp, Aaron Ecay, 2013/04/01
[O] [PATCH 07/10] Simplify org-babel-execute-src-block, Aaron Ecay, 2013/04/01