Function: range-compress-list
range-compress-list is a byte-compiled function defined in
range.el.gz.
Signature
(range-compress-list NUMBERS)
Documentation
Convert a sorted list of numbers to a range list.
Source Code
;; Defined in /usr/src/emacs/lisp/emacs-lisp/range.el.gz
(defun range-compress-list (numbers)
"Convert a sorted list of numbers to a range list."
(let ((first (car numbers))
(last (car numbers))
result)
(cond
((null numbers)
nil)
((not (listp (cdr numbers)))
numbers)
(t
(while numbers
(cond ((= last (car numbers)) nil) ;Omit duplicated number
((= (1+ last) (car numbers)) ;Still in sequence
(setq last (car numbers)))
(t ;End of one sequence
(setq result
(cons (if (= first last) first
(cons first last))
result))
(setq first (car numbers))
(setq last (car numbers))))
(setq numbers (cdr numbers)))
(nreverse (cons (if (= first last) first (cons first last))
result))))))