Function: treesit-fold--continuous-node-prefix

treesit-fold--continuous-node-prefix is a natively compiled function defined in treesit-fold.el.

Signature

(treesit-fold--continuous-node-prefix NODE PREFIX NEXT)

Documentation

Iterate through node starting from NODE and compare node-text to PREFIX; then return the last iterated node.

Argument NEXT is a boolean type. If non-nil iterate forward; otherwise iterate in backward direction.

Source Code

;; Defined in /nix/store/mpy1l6b4hlzpp59l4vbahq83hqa821ci-emacs-packages-deps/share/emacs/site-lisp/elpa/treesit-fold-0.2.1/treesit-fold.el
(defun treesit-fold--continuous-node-prefix (node prefix next)
  "Iterate through node starting from NODE and compare node-text to PREFIX;
then return the last iterated node.

Argument NEXT is a boolean type.  If non-nil iterate forward; otherwise iterate
in backward direction."
  (let* ((iter-node node) (last-node node)
         (last-line (treesit-fold--node-start-position node)) line text break
         (line-range 1) (last-line-range 1) max-line-range
         (indentation (treesit-fold--indentation (treesit-node-start iter-node)))
         next-indentation)
    (while (and iter-node (not break))
      (setq text (string-trim (treesit-node-text iter-node))
            line (treesit-fold--node-start-position iter-node)
            line-range (1+ (treesit-fold--count-matches "\n" text))
            max-line-range (max line-range last-line-range)
            next-indentation (treesit-fold--indentation (treesit-node-start iter-node)))
      (if (and (treesit-fold--in-range-p line (- last-line max-line-range) (+ last-line max-line-range))
               (string-prefix-p prefix text)
               (= indentation next-indentation))
          (setq last-node iter-node last-line line
                last-line-range (1+ (treesit-fold--count-matches "\n" text)))
        (setq break t))
      (setq iter-node (treesit-fold--next-prev-node-skip-newline iter-node next)))
    last-node))