Function: treesit-outline-search
treesit-outline-search is a byte-compiled function defined in
treesit.el.gz.
Signature
(treesit-outline-search &optional BOUND MOVE BACKWARD LOOKING-AT)
Documentation
Search for the next outline heading in the syntax tree.
For BOUND, MOVE, BACKWARD, LOOKING-AT, see the descriptions in
outline-search-function.
Source Code
;; Defined in /usr/src/emacs/lisp/treesit.el.gz
(defun treesit-outline-search (&optional bound move backward looking-at)
"Search for the next outline heading in the syntax tree.
For BOUND, MOVE, BACKWARD, LOOKING-AT, see the descriptions in
`outline-search-function'."
(if looking-at
(when-let* ((node (or (treesit-thing-at (pos-eol) treesit-outline-predicate)
(treesit-thing-at (pos-bol) treesit-outline-predicate)))
(start (treesit-node-start node)))
(eq (pos-bol) (save-excursion (goto-char start) (pos-bol))))
(let* ((bob-pos
;; `treesit-navigate-thing' can't find a thing at bobp,
;; so use `looking-at' to match at bobp.
(and (bobp) (treesit-outline-search bound move backward t) (point)))
(pos
;; When function wants to find the current outline, point
;; is at the beginning of the current line. When it wants
;; to find the next outline, point is at the second column.
(unless bob-pos
(if (eq (point) (pos-bol))
(if (bobp) (point) (1- (point)))
(pos-eol))))
(found (or bob-pos
(treesit-navigate-thing pos (if backward -1 1) 'beg
treesit-outline-predicate))))
(if found
(if (or (not bound) (if backward (>= found bound) (<= found bound)))
(progn
(goto-char found)
(goto-char (pos-bol))
(set-match-data (list (point) (pos-eol)))
t)
(when move (goto-char bound))
nil)
(when move (goto-char (or bound (if backward (point-min) (point-max)))))
nil))))