]> git.eshelyaron.com Git - emacs.git/commitdiff
Add a new, simple definition of `remove-duplicates'
authorLars Magne Ingebrigtsen <larsi@gnus.org>
Mon, 11 Jul 2011 13:33:05 +0000 (15:33 +0200)
committerLars Magne Ingebrigtsen <larsi@gnus.org>
Mon, 11 Jul 2011 13:33:05 +0000 (15:33 +0200)
lisp/ChangeLog
lisp/subr.el

index a3faab15c35c0da6c60f45943cdc454362185531..fb2f1a7a6e948dde3404bf8e9802a1b8004c5953 100644 (file)
@@ -1,3 +1,7 @@
+2011-07-11  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * subr.el (remove-duplicates): New conveniency function.
+
 2011-07-10  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 
        * tool-bar.el (tool-bar-mode): Clarify positive/negative arguments
index 5c9d6c8d7249e0f5f88908e4d6c76a73bc29bb6e..2b7ba17e10c5b7f14c16b56d98c00f0bf1197b3c 100644 (file)
@@ -173,7 +173,7 @@ value of last one, or nil if there are none.
     (progn
   ;; If we reload subr.el after having loaded CL, be careful not to
   ;; overwrite CL's extended definition of `dolist', `dotimes',
-  ;; `declare', `push' and `pop'.
+  ;; `declare', `push', `pop' and `remove-duplicates'.
 
 (defmacro dolist (spec &rest body)
   "Loop over a list.
@@ -250,6 +250,15 @@ the return value (nil if RESULT is omitted).
 Treated as a declaration when used at the right place in a
 `defmacro' form.  \(See Info anchor `(elisp)Definition of declare'.)"
   nil)
+
+(defun remove-duplicates (list)
+  "Return a copy of LIST with all duplicate elements removed."
+  (let ((result nil))
+    (while list
+      (unless (member (car list) result)
+       (push (car list) result))
+      (pop list))
+    (nreverse result)))
 ))
 
 (defmacro ignore-errors (&rest body)