From 9696250e53d143b86582b6761cd887f5b4aa8cca Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Fri, 22 Jun 2012 15:30:13 +0200 Subject: [PATCH] org-element: Small refactoring * contrib/lisp/org-element.el (org-element-map): Remove use of `every' function. --- contrib/lisp/org-element.el | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/contrib/lisp/org-element.el b/contrib/lisp/org-element.el index d71b7b3f1..b7167850b 100644 --- a/contrib/lisp/org-element.el +++ b/contrib/lisp/org-element.el @@ -3338,12 +3338,21 @@ Nil values returned from FUN do not appear in the results." (unless (listp no-recursion) (setq no-recursion (list no-recursion))) ;; Recursion depth is determined by --CATEGORY. (let* ((--category - (cond - ((every (lambda (el) (memq el org-element-greater-elements)) types) - 'greater-elements) - ((every (lambda (el) (memq el org-element-all-elements)) types) - 'elements) - (t 'objects))) + (catch 'found + (let ((category 'greater-elements)) + (mapc (lambda (type) + (cond ((memq type org-element-all-objects) + ;; If one object is found, the function + ;; has to recurse into every object. + (throw 'found 'objects)) + ((not (memq type org-element-greater-elements)) + ;; If one regular element is found, the + ;; function has to recurse, at lest, into + ;; every element it encounters. + (and (not (eq category 'elements)) + (setq category 'elements))))) + types) + category))) --acc --walk-tree (--walk-tree