1
0
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:
Katsumi Yamaoka 2015-12-23 23:08:55 +00:00
parent 04dd5a502e
commit 9576e885ef
2 changed files with 15 additions and 7 deletions

View File

@ -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)

View File

@ -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"