Function: treesit-range-fn-exclude-children
treesit-range-fn-exclude-children is a byte-compiled function defined
in treesit.el.gz.
Signature
(treesit-range-fn-exclude-children NODE OFFSET)
Documentation
Return ranges spanned by NODE but excluding its children.
OFFSET is added to the start and end of the overall range.
This can be used as a :range-fn in treesit-range-rules.
Source Code
;; Defined in /usr/src/emacs/lisp/treesit.el.gz
(defun treesit-range-fn-exclude-children (node offset)
"Return ranges spanned by NODE but excluding its children.
OFFSET is added to the start and end of the overall range.
This can be used as a `:range-fn' in `treesit-range-rules'."
(let* ((start (+ (treesit-node-start node) (or (car offset) 0)))
(end (+ (treesit-node-end node) (or (cdr offset) 0)))
(prev-end start)
(ranges nil))
(dolist (child (treesit-node-children node))
(let ((child-start (treesit-node-start child))
(child-end (treesit-node-end child)))
;; Filter out the case when PREV-END = CHILD-START.
(when (< prev-end child-start)
(push (cons prev-end child-start) ranges))
(setq prev-end child-end)))
(when (< prev-end end)
(push (cons prev-end end) ranges))
(nreverse ranges)))