]> git.eshelyaron.com Git - emacs.git/commitdiff
Add filter macro, which does what you expect.
authorEric S. Raymond <esr@thyrsus.com>
Tue, 2 Dec 2014 21:18:06 +0000 (16:18 -0500)
committerEric S. Raymond <esr@thyrsus.com>
Tue, 2 Dec 2014 21:18:06 +0000 (16:18 -0500)
* subr.el (filter): New macro. Because it's just silly for a Lisp not
to have this in 2014.  And VC mode needs it.

lisp/ChangeLog
lisp/subr.el

index 364d28e1bb748a03c2ffcd60ebabba8248271cf3..c76a721565a8dc346f37aef0b7a48b420da1f1a8 100644 (file)
@@ -1,6 +1,9 @@
 2014-12-02  Eric S. Raymond  <esr@snark.thyrsus.com>
 
-       *  vc.el, all backends: API simplification: Abolish dir-status.
+       * subr.el (filter): New macro. Because it's just silly for a Lisp
+       not to have this in 2014.  And VC needs it.
+
+       * vc.el, all backends: API simplification: Abolish dir-status.
        It's replaced by dir-status-files.
 
        * vc.el, all backends: API simplification: Remove 4th
index 6ce02b79a0a88d6f6389961b14ece5b4ac5bab78..4cc80e9be6f773b4c59760b448e99dac0953dcda 100644 (file)
@@ -222,6 +222,11 @@ Then evaluate RESULT to get return value, default nil.
          ,@(if (cdr (cdr spec))
                `((setq ,(car spec) nil) ,@(cdr (cdr spec))))))))
 
+(defmacro filter (condp lst)
+  "Return the list consisting of elements in LST for which CONDP is not nil."
+  `(delq nil
+        (mapcar (lambda (x) (and (funcall ,condp x) x)) ,lst)))
+
 (defmacro dotimes (spec &rest body)
   "Loop a certain number of times.
 Evaluate BODY with VAR bound to successive integers running from 0,