Function: treesit--flatten-ranges

treesit--flatten-ranges is a byte-compiled function defined in treesit.el.gz.

Signature

(treesit--flatten-ranges RANGES)

Documentation

Flatten RANGES to be a list of (START . END) in-place and return it.

Each element in RANGES can be either (STRT . END) or ((START . END)...).

Source Code

;; Defined in /usr/src/emacs/lisp/treesit.el.gz
(defun treesit--flatten-ranges (ranges)
  "Flatten RANGES to be a list of (START . END) in-place and return it.
Each element in RANGES can be either (STRT . END) or ((START . END)...)."
  (let (head prev elm)
    (while (setq elm (car ranges))
      (if (consp (car elm))
          ;; ELM is ((START . END)...).
          (progn
            (if (null head)
                (setq head elm)
              (setcdr prev elm))
            (setq prev (last elm)))
        ;; ELM is (START . END).
        (if (null head)
            (setq head ranges)
          (setcdr prev ranges))
        (setq prev ranges))

      (setq ranges (cdr ranges)))
    head))