[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] emacs-25 9576e88: Fix `gnus-union' so as to behave like `c
From: |
Katsumi Yamaoka |
Subject: |
[Emacs-diffs] emacs-25 9576e88: Fix `gnus-union' so as to behave like `cl-union' |
Date: |
Wed, 23 Dec 2015 23:09:20 +0000 |
branch: emacs-25
commit 9576e885ef33d08b53d8296e262e09d9deda9523
Author: Katsumi Yamaoka <address@hidden>
Commit: Katsumi Yamaoka <address@hidden>
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.
---
lisp/gnus/gnus-group.el | 3 ++-
lisp/gnus/gnus-util.el | 19 +++++++++++++------
2 files changed, 15 insertions(+), 7 deletions(-)
diff --git a/lisp/gnus/gnus-group.el b/lisp/gnus/gnus-group.el
index b1a4933..9f272f4 100644
--- a/lisp/gnus/gnus-group.el
+++ b/lisp/gnus/gnus-group.el
@@ -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)
diff --git a/lisp/gnus/gnus-util.el b/lisp/gnus/gnus-util.el
index 40e2dcf..6759c07 100644
--- a/lisp/gnus/gnus-util.el
+++ b/lisp/gnus/gnus-util.el
@@ -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"
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] emacs-25 9576e88: Fix `gnus-union' so as to behave like `cl-union',
Katsumi Yamaoka <=