]> git.eshelyaron.com Git - emacs.git/commitdiff
(remove, remq): New functions.
authorGerd Moellmann <gerd@gnu.org>
Thu, 27 Jul 2000 20:08:47 +0000 (20:08 +0000)
committerGerd Moellmann <gerd@gnu.org>
Thu, 27 Jul 2000 20:08:47 +0000 (20:08 +0000)
lisp/subr.el

index 9bef0025d5205d2e406c0fce68622a43a4092869..767e2a8cde3f452b823b246f73780eb4d7c31df1 100644 (file)
@@ -135,6 +135,22 @@ If N is bigger than the length of X, return X."
       (setq x (cdr x)))
     x))
 
+(defun remove (elt seq)
+  "Return a copy of SEQ with all occurences of ELT removed.
+SEQ must be a list, vector, or string.  The comparison is done with `equal'."
+  (if (nlistp seq)
+      ;; If SEQ isn't a list, there's no need to copy SEQ because
+      ;; `delete' will return a new object.
+      (delete elt seq)
+    (delete elt (copy-sequence seq))))
+
+(defun remq (elt list)
+  "Return a copy of LIST with all occurences of ELT removed.
+The comparison is done with `eq'."
+  (if (memq elt list)
+      (delq elt (copy-sequence list))
+    list))
+
 (defun assoc-default (key alist &optional test default)
   "Find object KEY in a pseudo-alist ALIST.
 ALIST is a list of conses or objects.  Each element (or the element's car,