projects
/
gnus
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
qp.el (quoted-printable-decode-region): Inline+CSE+strength-reduction
[gnus]
/
lisp
/
gnus-range.el
diff --git
a/lisp/gnus-range.el
b/lisp/gnus-range.el
index
a4262df
..
091276e
100644
(file)
--- a/
lisp/gnus-range.el
+++ b/
lisp/gnus-range.el
@@
-1,7
+1,6
@@
;;; gnus-range.el --- range and sequence functions for Gnus
;;; gnus-range.el --- range and sequence functions for Gnus
-;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1996-2012 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
;; Keywords: news
;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
;; Keywords: news
@@
-53,11
+52,13
@@
If RANGE is a single range, return (RANGE). Otherwise, return RANGE."
(defun gnus-set-difference (list1 list2)
"Return a list of elements of LIST1 that do not appear in LIST2."
(defun gnus-set-difference (list1 list2)
"Return a list of elements of LIST1 that do not appear in LIST2."
- (let ((list1 (copy-sequence list1)))
- (while list2
- (setq list1 (delq (car list2) list1))
- (setq list2 (cdr list2)))
- list1))
+ (let ((hash2 (make-hash-table :test 'eq))
+ (result nil))
+ (dolist (elt list2) (puthash elt t hash2))
+ (dolist (elt list1)
+ (unless (gethash elt hash2)
+ (setq result (cons elt result))))
+ (nreverse result)))
(defun gnus-range-nconcat (&rest ranges)
"Return a range comprising all the RANGES, which are pre-sorted.
(defun gnus-range-nconcat (&rest ranges)
"Return a range comprising all the RANGES, which are pre-sorted.
@@
-117,10
+118,10
@@
Both ranges must be in ascending order."
;; All done with range2
(setq r nil))
((< max1 min2)
;; All done with range2
(setq r nil))
((< max1 min2)
- ;; No overlap: range1 prece
ed
s range2
+ ;; No overlap: range1 prece
de
s range2
(pop r))
((< max2 min1)
(pop r))
((< max2 min1)
- ;; No overlap: range2 prece
ed
s range1
+ ;; No overlap: range2 prece
de
s range1
(pop range2))
((and (<= min2 min1) (<= max1 max2))
;; Complete overlap: range1 removed
(pop range2))
((and (<= min2 min1) (<= max1 max2))
;; Complete overlap: range1 removed
@@
-233,10
+234,10
@@
RANGE1 and RANGE2 have to be sorted over <."
(setq range1 (cdr range1)
range2 (cdr range2))
(while (and min1 min2)
(setq range1 (cdr range1)
range2 (cdr range2))
(while (and min1 min2)
- (cond ((< max1 min2) ; range1 prece
ed
s range2
+ (cond ((< max1 min2) ; range1 prece
de
s range2
(setq range1 (cdr range1)
min1 nil))
(setq range1 (cdr range1)
min1 nil))
- ((< max2 min1) ; range2 prece
ed
s range1
+ ((< max2 min1) ; range2 prece
de
s range1
(setq range2 (cdr range2)
min2 nil))
(t ; some sort of overlap is occurring
(setq range2 (cdr range2)
min2 nil))
(t ; some sort of overlap is occurring
@@
-593,15
+594,6
@@
LIST is a sorted list."
(setq sum
(+ sum (if (consp x) (- (cdr x) (car x) -1) 1))))))))
(setq sum
(+ sum (if (consp x) (- (cdr x) (car x) -1) 1))))))))
-(defun gnus-sublist-p (list sublist)
- "Test whether all elements in SUBLIST are members of LIST."
- (let ((sublistp t))
- (while sublist
- (unless (memq (pop sublist) list)
- (setq sublistp nil
- sublist nil)))
- sublistp))
-
(defun gnus-range-add (range1 range2)
"Add RANGE2 to RANGE1 (nondestructively)."
(unless (listp (cdr range1))
(defun gnus-range-add (range1 range2)
"Add RANGE2 to RANGE1 (nondestructively)."
(unless (listp (cdr range1))