Subject: Re: bug#65470: 29.1.50; js-ts-mode: regex pattern can cause incorrect parenthesis matching

From: Eli Zaretskii <[email-masked]>
Date: Sat, 16 Sep 2023 14:20:16 +0300

> Cc: [email-masked], [email-masked], [email-masked],
>  [email-masked], [email-masked], [email-masked]
> Date: Sat, 16 Sep 2023 08:54:32 +0300
> From: Eli Zaretskii <[email-masked]>
> 
> > Date: Fri, 15 Sep 2023 16:35:55 +0300
> > Cc: Eli Zaretskii <[email-masked]>, Yuan Fu <[email-masked]>,
> >  Theodor Thornhill <[email-masked]>,
> >  Jostein Kjønigsen <[email-masked]>, [email-masked],
> >  [email-masked]
> > From: Dmitry Gutov <[email-masked]>
> > 
> > On 15/09/2023 15:11, Jostein Kjønigsen wrote:
> > >> This patch seems to fix that and bring JSX syntax highlighting back:
> > >>
> > >> diff --git a/lisp/progmodes/typescript-ts-mode.el b/lisp/progmodes/typescript-ts-mode.el
> > >> index 57382c9cb31..7108ff49b28 100644
> > >> --- a/lisp/progmodes/typescript-ts-mode.el
> > >> +++ b/lisp/progmodes/typescript-ts-mode.el
> > >> @@ -163,7 +163,7 @@ tsx-ts-mode--font-lock-compatibility-bb1f97b
> > >>    ;; but then raises an error if the wrong node type is used. So it is
> > >>    ;; important to check with the new node type (member_expression)
> > >>    (condition-case nil
> > >> -      (progn (treesit-query-capture language '((member_expression) @capture))
> > >> +      (progn (treesit-query-capture language '(jsx_opening_element (member_expression) @capture))
> > >> 	     '((jsx_opening_element
> > >> 		[(member_expression (identifier)) (identifier)]
> > >> 		@typescript-ts-jsx-tag-face)
> > >>
> > > I really don’t know this part of the code very well. If you’ve identified an issue/bug for a specific TSX use-case, and found a fix for it, I have no objections to it being applied.
> > 
> > No problem, pushed that to emacs-29, thanks.
> 
> This seems to cause:
> 
>     INFO     Scraping files for loaddefs...85%
>   typescript-ts-mode:0: Warning: Not registering prefix "ts".  Affects: ("tsx-ts-mode--indent-compatibility-b893426" "tsx-ts-mode--font-lock-compatibility-bb1f97b" "tsx-ts--s-p-query" "tsx-ts--syntax-propertize" "ts-ts--s-p-query" "ts-ts--syntax-propertize" "ts-ts--syntax-propertize-captures")
> 
> Stefan, what do we usually do with such warnings?

This also causes byte-compilation warnings on a system that has no
tree-sitter installed:

  In end of data:
  progmodes/typescript-ts-mode.el:498:17: Warning: the function ‘treesit-node-end’ is not known to be defined.
  progmodes/typescript-ts-mode.el:497:17: Warning: the function ‘treesit-node-start’ is not known to be defined.
  progmodes/typescript-ts-mode.el:474:6: Warning: the function ‘treesit-query-compile’ is not known to be defined.

Could you please fix these?