From 651418895d507001f161e2e22ca9b85647bca19b Mon Sep 17 00:00:00 2001 From: Yuan Fu <casouri@gmail.com> Date: Sat, 29 Mar 2025 21:15:02 -0700 Subject: Tighten the criteria for a defun in typescript-ts-mode (bug#77369) * lisp/progmodes/typescript-ts-mode.el: (typescript-ts-mode--defun-predicate): New function. (typescript-ts-base-mode): Use new predicate. --- lisp/progmodes/typescript-ts-mode.el | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/lisp/progmodes/typescript-ts-mode.el b/lisp/progmodes/typescript-ts-mode.el index 9051a841887..bc4b635735f 100644 --- a/lisp/progmodes/typescript-ts-mode.el +++ b/lisp/progmodes/typescript-ts-mode.el @@ -523,6 +523,17 @@ See `treesit-thing-settings' for more information.") 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))) + (defun typescript-ts-mode--defun-name (node) "Return the defun name of NODE. Return nil if there is no name or if NODE is not a defun node." @@ -573,7 +584,9 @@ This mode is intended to be inherited by concrete major modes." (setq-local electric-layout-rules '((?\; . after) (?\{ . after) (?\} . before))) ;; Navigation. - (setq-local treesit-defun-type-regexp typescript-ts-mode--defun-type-regexp) + (setq-local treesit-defun-type-regexp + (cons typescript-ts-mode--defun-type-regexp + #'typescript-ts-mode--defun-predicate)) (setq-local treesit-defun-name-function #'typescript-ts-mode--defun-name) (setq-local treesit-thing-settings -- cgit v1.2.3