Function: range-list-difference
range-list-difference is a byte-compiled function defined in
range.el.gz.
Signature
(range-list-difference LIST RANGES)
Documentation
Return a list of numbers in LIST that are not members of RANGES.
LIST is a sorted list.
Aliases
gnus-list-range-difference (obsolete since 29.1)
gnus-inverse-list-range-intersection
Source Code
;; Defined in /usr/src/emacs/lisp/emacs-lisp/range.el.gz
(defun range-list-difference (list ranges)
"Return a list of numbers in LIST that are not members of RANGES.
LIST is a sorted list."
(setq ranges (range-normalize ranges))
(let (number result)
(while (setq number (pop list))
(while (and ranges
(if (numberp (car ranges))
(< (car ranges) number)
(< (cdar ranges) number)))
(setq ranges (cdr ranges)))
(when (or (not ranges)
(if (numberp (car ranges))
(not (= (car ranges) number))
;; not ((caar ranges) <= number <= (cdar ranges))
(< number (caar ranges))))
(push number result)))
(nreverse result)))