mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-22 18:35:09 +00:00
Fix gnus-union' so as to behave like
cl-union'
* lisp/gnus/gnus-group.el (gnus-group-prepare-flat): Make gnus-union use `equal' to compare items in lists. * lisp/gnus/gnus-util.el (gnus-union): Make it behave like cl-union partially.
This commit is contained in:
parent
04dd5a502e
commit
9576e885ef
@ -1396,7 +1396,8 @@ if it is a string, only list groups matching REGEXP."
|
||||
(gnus-group-prepare-flat-list-dead
|
||||
(gnus-union
|
||||
not-in-list
|
||||
(setq gnus-killed-list (sort gnus-killed-list 'string<)))
|
||||
(setq gnus-killed-list (sort gnus-killed-list 'string<))
|
||||
:test 'equal)
|
||||
gnus-level-killed ?K regexp))
|
||||
|
||||
(gnus-group-set-mode-line)
|
||||
|
@ -1372,18 +1372,25 @@ Return the modified alist."
|
||||
|
||||
(if (fboundp 'union)
|
||||
(defalias 'gnus-union 'union)
|
||||
(defun gnus-union (l1 l2)
|
||||
"Set union of lists L1 and L2."
|
||||
(defun gnus-union (l1 l2 &rest keys)
|
||||
"Set union of lists L1 and L2.
|
||||
If KEYS contains the `:test' and `equal' pair, use `equal' to compare
|
||||
items in lists, otherwise use `eq'."
|
||||
(cond ((null l1) l2)
|
||||
((null l2) l1)
|
||||
((equal l1 l2) l1)
|
||||
(t
|
||||
(or (>= (length l1) (length l2))
|
||||
(setq l1 (prog1 l2 (setq l2 l1))))
|
||||
(while l2
|
||||
(or (member (car l2) l1)
|
||||
(push (car l2) l1))
|
||||
(pop l2))
|
||||
(if (eq 'equal (plist-get keys :test))
|
||||
(while l2
|
||||
(or (member (car l2) l1)
|
||||
(push (car l2) l1))
|
||||
(pop l2))
|
||||
(while l2
|
||||
(or (memq (car l2) l1)
|
||||
(push (car l2) l1))
|
||||
(pop l2)))
|
||||
l1))))
|
||||
|
||||
(declare-function gnus-add-text-properties "gnus"
|
||||
|
Loading…
Reference in New Issue
Block a user