mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-02-06 07:31:13 -08:00
(add-to-ordered-list): Test membership with eq. Simplify.
This commit is contained in:
parent
c72c50043b
commit
ef1eef065f
1 changed files with 9 additions and 10 deletions
19
lisp/subr.el
19
lisp/subr.el
|
|
@ -960,12 +960,11 @@ other hooks, such as major mode hooks, can do the job."
|
|||
|
||||
(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 @@ The return value is the new value of LIST-VAR."
|
|||
(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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue