# HG changeset patch # User Kim F. Storm # Date 1119303694 0 # Node ID 99743da5284f39b7c24bcb79339d5129d7ec0bcb # Parent 4ca64c59b88b106acab126320c1b5bf096d0c113 (add-to-ordered-list): Test membership with eq. Simplify. diff -r 4ca64c59b88b -r 99743da5284f lisp/subr.el --- a/lisp/subr.el Mon Jun 20 21:37:47 2005 +0000 +++ b/lisp/subr.el Mon Jun 20 21:41:34 2005 +0000 @@ -960,12 +960,11 @@ (defun add-to-ordered-list (list-var element &optional order) "Add to the value of LIST-VAR the element ELEMENT if it isn't there yet. -The test for presence of ELEMENT is done with `equal'. +The test for presence of ELEMENT is done with `eq'. The resulting list is reordered so that the elements are in the -order given by each element's numeric list order. -Elements without a numeric list order are placed at the end of -the list. +order given by each element's numeric list order. Elements +without a numeric list order are placed at the end of the list. If the third optional argument ORDER is non-nil, set the element's list order to the given value. @@ -979,16 +978,16 @@ (put list-var 'list-order (setq ordering (make-hash-table :weakness 'key :test 'eq)))) (when order - (puthash element order ordering)) - (add-to-list list-var element) + (puthash element (and (numberp order) order) ordering)) + (unless (memq element (symbol-value list-var)) + (set list-var (cons element (symbol-value list-var)))) (set list-var (sort (symbol-value list-var) (lambda (a b) (let ((oa (gethash a ordering)) (ob (gethash b ordering))) - (cond - ((not oa) nil) - ((not ob) t) - (t (< oa ob))))))))) + (if (and oa ob) + (< oa ob) + oa))))))) ;;; Load history