Function: c-ts-mode--defun-valid-p
c-ts-mode--defun-valid-p is a byte-compiled function defined in
c-ts-mode.el.gz.
Signature
(c-ts-mode--defun-valid-p NODE)
Documentation
Return non-nil if NODE is a valid defun node.
Ie, NODE is not nested.
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/c-ts-mode.el.gz
;;; Defun navigation
(defun c-ts-mode--defun-valid-p (node)
"Return non-nil if NODE is a valid defun node.
Ie, NODE is not nested."
(let ((top-level-p (lambda (node)
(not (treesit-node-top-level
node (rx (or "function_definition"
"type_definition"
"struct_specifier"
"enum_specifier"
"union_specifier"
"declaration")))))))
(pcase (treesit-node-type node)
;; The declaration part of a DEFUN.
("expression_statement" (c-ts-mode--emacs-defun-p node))
;; The body of a DEFUN.
("compound_statement" (c-ts-mode--emacs-defun-body-p node))
;; If NODE's type is one of these three, make sure it is
;; top-level.
((or "struct_specifier"
"enum_specifier"
"union_specifier")
(funcall top-level-p node))
;; If NODE is a declaration, make sure it's not a function
;; declaration (we only want function_definition) and is a
;; top-level declaration.
("declaration"
(and (not (equal (treesit-node-type
(treesit-node-child-by-field-name
node "declarator"))
"function_declarator"))
(funcall top-level-p node)))
;; Other types don't need further verification.
(_ t))))