; * lisp/treesit.el (treesit-defun-at-point): Guard against nil.

This commit is contained in:
Yuan Fu 2022-12-24 16:40:00 -08:00
parent f8e219ebfa
commit 6253184afc
No known key found for this signature in database
GPG key ID: 56E19BC57664A442

View file

@ -1690,7 +1690,9 @@ previous and next sibling defuns around POS, and PARENT is the
parent defun surrounding POS. All of three could be nil if no
sound defun exists.
REGEXP and PRED are the same as in `treesit-defun-type-regexp'."
REGEXP and PRED are the same as in `treesit-defun-type-regexp'.
Assumes `treesit-defun-type-regexp' is set."
(let* ((node (treesit-node-at pos))
;; NODE-BEFORE/AFTER = NODE when POS is completely in NODE,
;; but if not, that means point could be in between two
@ -1876,11 +1878,14 @@ function is called recursively."
;; TODO: In corporate into thing-at-point.
(defun treesit-defun-at-point ()
"Return the defun at point or nil if none is found.
"Return the defun node at point or nil if none is found.
Respects `treesit-defun-tactic': return the top-level defun if it
is `top-level', return the immediate parent defun if it is
`nested'."
`nested'.
Return nil if `treesit-defun-type-regexp' is not set."
(when treesit-defun-type-regexp
(pcase-let* ((`(,regexp . ,pred)
(if (consp treesit-defun-type-regexp)
treesit-defun-type-regexp
@ -1895,7 +1900,8 @@ is `top-level', return the immediate parent defun if it is
parent)))
(if (eq treesit-defun-tactic 'top-level)
(treesit--top-level-defun node regexp pred)
node)))
node))))
(defun treesit-defun-name (node)
"Return the defun name of NODE.