GNU bug report logs - #65470
29.1.50; js-ts-mode: regex pattern can cause incorrect parenthesis matching

Previous Next

Package: emacs;

Reported by: Augustin Chéneau (BTuin) <btuin <at> mailo.com>

Date: Wed, 23 Aug 2023 11:16:01 UTC

Severity: normal

Tags: patch

Found in version 29.1.50

Done: Eli Zaretskii <eliz <at> gnu.org>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Dmitry Gutov <dmitry <at> gutov.dev>
To: Jostein Kjønigsen <jostein <at> secure.kjonigsen.net>
Cc: Yuan Fu <casouri <at> gmail.com>, 65470 <at> debbugs.gnu.org, Theodor Thornhill <theo <at> thornhill.no>, btuin <at> mailo.com, Eli Zaretskii <eliz <at> gnu.org>, Jostein Kjønigsen <jostein <at> kjonigsen.net>
Subject: bug#65470: 29.1.50; js-ts-mode: regex pattern can cause incorrect parenthesis matching
Date: Wed, 13 Sep 2023 02:14:59 +0300
On 12/09/2023 09:29, Jostein Kjønigsen wrote:
> Good feedback. I’ve tested and included those as well. Attached is a new patch.

Thanks! Installed. It would've been better with a commit message too 
(next time).

Speaking of the TSX difficulties, though, which Yuan hinted at recently: 
I think the current fix (tsx-ts-mode--font-lock-compatibility-bb1f97b) 
is not working. To be clear, that's unrelated to the current patch.

Basically, the query for ((member_expression) @capture) succeeds, but 
then the more complex one fails with

Structure error at: 22
(jsx_opening_element [(member_expression (identifier)) (identifier)] 
@typescript-ts-jsx-tag-face) (jsx_closing_element [(member_expression 
(identifier)) (identifier)] @typescript-ts-jsx-tag-face) 
(jsx_self_closing_element [(member_expression (identifier)) 
(identifier)] @typescript-ts-jsx-tag-face)

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)





This bug report was last modified 1 year and 249 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.