]> code.delx.au - gnu-emacs/blobdiff - lisp/emacs-lisp/cl.el
Mark 1994-07-11 change by Kevin Rodgers as tiny.
[gnu-emacs] / lisp / emacs-lisp / cl.el
index d29c18dd0ffad7c9fa8e4478014a7f4f54eab81c..83dffb41b2d019c51e3ffd9826264c1689465209 100644 (file)
@@ -1,6 +1,7 @@
 ;;; cl.el --- Common Lisp extensions for Emacs -*-byte-compile-dynamic: t;-*-
 
-;; Copyright (C) 1993 Free Software Foundation, Inc.
+;; Copyright (C) 1993, 2001, 2002, 2003, 2004, 2005,
+;;   2006, 2007 Free Software Foundation, Inc.
 
 ;; Author: Dave Gillespie <daveg@synaptics.com>
 ;; Version: 2.02
@@ -154,7 +155,11 @@ Like (push X PLACE), except that the list is unmodified if X is `eql' to
 an element already on the list.
 \nKeywords supported:  :test :test-not :key
 \n(fn X PLACE [KEYWORD VALUE]...)"
-  (if (symbolp place) (list 'setq place (list* 'adjoin x place keys))
+  (if (symbolp place)
+      (if (null keys)
+         `(let ((x ,x))
+            (if (memql x ,place) ,place (setq ,place (cons x ,place))))
+       (list 'setq place (list* 'adjoin x place keys)))
     (list* 'callf2 'adjoin x place keys)))
 
 (defun cl-set-elt (seq n val)
@@ -580,9 +585,6 @@ If ALIST is non-nil, the new pairs are prepended to it."
 
 ;;; Miscellaneous.
 
-(put 'cl-assertion-failed 'error-conditions '(error))
-(put 'cl-assertion-failed 'error-message "Assertion failed")
-
 (defvar cl-fake-autoloads nil
   "Non-nil means don't make CL functions autoload.")