X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=lisp%2Fgnus-range.el;h=641feadcca73dddb3ff5f25510fe27ff4a2bde4b;hb=4cacb5f23eb830e6950dba987063f413977708d7;hp=ffe47c16d9547eb5512f264d963a2ae4d40f7317;hpb=6d10b2a907addb9acc61dff650adff0e182fb6ad;p=elisp%2Fgnus.git- diff --git a/lisp/gnus-range.el b/lisp/gnus-range.el index ffe47c1..641fead 100644 --- a/lisp/gnus-range.el +++ b/lisp/gnus-range.el @@ -1,7 +1,7 @@ ;;; gnus-range.el --- range and sequence functions for Gnus -;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2004 -;; Free Software Foundation, Inc. +;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news @@ -20,8 +20,8 @@ ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. ;;; Commentary: @@ -189,9 +189,19 @@ LIST1 and LIST2 have to be sorted over <." RANGE1 and RANGE2 have to be sorted over <." (let* (out (min1 (car range1)) - (max1 (if (numberp min1) min1 (prog1 (cdr min1) (setq min1 (car min1))))) + (max1 (if (numberp min1) + (if (numberp (cdr range1)) + (prog1 (cdr range1) + (setq range1 nil)) min1) + (prog1 (cdr min1) + (setq min1 (car min1))))) (min2 (car range2)) - (max2 (if (numberp min2) min2 (prog1 (cdr min2) (setq min2 (car min2)))))) + (max2 (if (numberp min2) + (if (numberp (cdr range2)) + (prog1 (cdr range2) + (setq range2 nil)) min2) + (prog1 (cdr min2) + (setq min2 (car min2)))))) (setq range1 (cdr range1) range2 (cdr range2)) (while (and min1 min2) @@ -218,7 +228,12 @@ RANGE1 and RANGE2 have to be sorted over <." (setq min2 (car range2) max2 (if (numberp min2) min2 (prog1 (cdr min2) (setq min2 (car min2)))) range2 (cdr range2)))) - (nreverse out))) + (cond ((cdr out) + (nreverse out)) + ((numberp (car out)) + out) + (t + (car out))))) ;;;###autoload (defalias 'gnus-set-sorted-intersection 'gnus-sorted-nintersection) @@ -628,6 +643,7 @@ LIST is a sorted list." (defun gnus-range-map (func range) "Apply FUNC to each value contained by RANGE." + (setq range (gnus-range-normalize range)) (while range (let ((span (pop range))) (if (numberp span)