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)))