Procházet zdrojové kódy

Added a less functional Org-mode copy of the cl reduce function.

* lisp/org.el (org-reduce): Added a less functional Org-mode copy of
  the cl reduce function.
Eric Schulte před 13 roky
rodič
revize
15417f67c4
1 změnil soubory, kde provedl 12 přidání a 0 odebrání
  1. 12 0
      lisp/org.el

+ 12 - 0
lisp/org.el

@@ -19660,6 +19660,18 @@ Taken from `count' in cl-seq.el with all keyword arguments removed."
       (if (funcall predicate e) (push e res)))
     (nreverse res)))
 
+(defun org-reduce (cl-func cl-seq &rest cl-keys)
+  "Reduce two-argument FUNCTION across SEQ.
+Taken from `reduce' in cl-seq.el with all keyword arguments but
+\":initial-value\" removed."
+  (let ((cl-accum (cond ((memq :initial-value cl-keys)
+                         (cadr (memq :initial-value cl-keys)))
+                        (cl-seq (pop cl-seq))
+                        (t (funcall cl-func)))))
+    (while cl-seq
+      (setq cl-accum (funcall cl-func cl-accum (pop cl-seq))))
+    cl-accum))
+
 (defun org-back-over-empty-lines ()
   "Move backwards over whitespace, to the beginning of the first empty line.
 Returns the number of empty lines passed."