Function: range-list-intersection

range-list-intersection is a byte-compiled function defined in range.el.gz.

Signature

(range-list-intersection LIST RANGES)

Documentation

Return a list of numbers in LIST that are members of RANGES.

LIST is a sorted list.

Aliases

gnus-list-range-intersection (obsolete since 29.1)

Source Code

;; Defined in /usr/src/emacs/lisp/emacs-lisp/range.el.gz
(defun range-list-intersection (list ranges)
  "Return a list of numbers in LIST that are 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 (and ranges
		 (if (numberp (car ranges))
		     (= (car ranges) number)
		   ;; (caar ranges) <= number <= (cdar ranges)
		   (>= number (caar ranges))))
	(push number result)))
    (nreverse result)))