Function: gnus-range-nconcat
gnus-range-nconcat is a byte-compiled function defined in
gnus-range.el.gz.
Signature
(gnus-range-nconcat &rest RANGES)
Documentation
Return a range comprising all the RANGES, which are pre-sorted.
RANGES will be destructively altered.
Source Code
;; Defined in /usr/src/emacs/lisp/gnus/gnus-range.el.gz
(defun gnus-range-nconcat (&rest ranges)
"Return a range comprising all the RANGES, which are pre-sorted.
RANGES will be destructively altered."
(setq ranges (delete nil ranges))
(let* ((result (range-normalize (pop ranges)))
(last (last result)))
(dolist (range ranges)
(setq range (range-normalize range))
;; Normalize the single-number case, so that we don't need to
;; special-case that so much.
(when (numberp (car last))
(setcar last (cons (car last) (car last))))
(when (numberp (car range))
(setcar range (cons (car range) (car range))))
(if (= (1+ (cdar last)) (caar range))
(progn
(setcdr (car last) (cdar range))
(setcdr last (cdr range)))
(setcdr last range)
;; Denormalize back, since we couldn't join the ranges up.
(when (= (caar range) (cdar range))
(setcar range (caar range)))
(when (= (caar last) (cdar last))
(setcar last (caar last))))
(setq last (last last)))
(if (and (consp (car result))
(= (length result) 1))
(car result)
result)))