Tighten the criteria for a defun in typescript-ts-mode (bug#77369)

* lisp/progmodes/typescript-ts-mode.el:
(typescript-ts-mode--defun-type-regexp): New
variable (backported from master).
(typescript-ts-mode--defun-predicate): New function.
(typescript-ts-base-mode): Use new predicate.
This commit is contained in:
Yuan Fu 2025-03-29 21:15:02 -07:00
parent ae7f65f3f9
commit 9869aa1a10
No known key found for this signature in database
GPG key ID: 56E19BC57664A442

View file

@ -452,6 +452,27 @@ See `treesit-thing-settings' for more information.")
"Nodes that designate sexps in TypeScript. "Nodes that designate sexps in TypeScript.
See `treesit-thing-settings' for more information.") See `treesit-thing-settings' for more information.")
(defvar typescript-ts-mode--defun-type-regexp
(rx bos (or "internal_module"
"interface_declaration"
"class_declaration"
"method_definition"
"function_declaration"
"lexical_declaration")
eos)
"Settings for `treesit-defun-type-regexp'.")
(defun typescript-ts-mode--defun-predicate (node)
"Check if NODE is a defun."
(pcase (treesit-node-type node)
("lexical_declaration"
(treesit-node-match-p
(treesit-node-child-by-field-name
(treesit-node-child node 0 'named)
"value")
"arrow_function"))
(_ t)))
;;;###autoload ;;;###autoload
(define-derived-mode typescript-ts-base-mode prog-mode "TypeScript" (define-derived-mode typescript-ts-base-mode prog-mode "TypeScript"
"Generic major mode for editing TypeScript. "Generic major mode for editing TypeScript.
@ -470,10 +491,8 @@ This mode is intended to be inherited by concrete major modes."
'((?\; . after) (?\{ . after) (?\} . before))) '((?\; . after) (?\{ . after) (?\} . before)))
;; Navigation. ;; Navigation.
(setq-local treesit-defun-type-regexp (setq-local treesit-defun-type-regexp
(regexp-opt '("class_declaration" (cons typescript-ts-mode--defun-type-regexp
"method_definition" #'typescript-ts-mode--defun-predicate))
"function_declaration"
"lexical_declaration")))
(setq-local treesit-defun-name-function #'js--treesit-defun-name) (setq-local treesit-defun-name-function #'js--treesit-defun-name)
(setq-local treesit-thing-settings (setq-local treesit-thing-settings