From mboxrd@z Thu Jan 1 00:00:00 1970 From: Aaron Ecay Subject: [PATCH 03/10] Clean up various org-babel-*-maybe commands Date: Mon, 1 Apr 2013 01:42:17 -0400 Message-ID: <1364794944-13826-4-git-send-email-aaronecay@gmail.com> References: <1364794944-13826-1-git-send-email-aaronecay@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Return-path: Received: from eggs.gnu.org ([208.118.235.92]:37689) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UMXVs-0002jI-QX for emacs-orgmode@gnu.org; Mon, 01 Apr 2013 01:42:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UMXVp-0000vS-V9 for emacs-orgmode@gnu.org; Mon, 01 Apr 2013 01:42:36 -0400 Received: from mail-qa0-f51.google.com ([209.85.216.51]:36698) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UMXVp-0000vH-Qq for emacs-orgmode@gnu.org; Mon, 01 Apr 2013 01:42:33 -0400 Received: by mail-qa0-f51.google.com with SMTP id hg5so710185qab.3 for ; Sun, 31 Mar 2013 22:42:33 -0700 (PDT) In-Reply-To: <1364794944-13826-1-git-send-email-aaronecay@gmail.com> 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: emacs-orgmode@gnu.org * 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