Subject: Re: bug#59906: 29.0.60; typescript-ts-mode is not highlighting escape sequences

From: Theodor Thornhill <[email-masked]>
Date: Thu, 08 Dec 2022 16:19:51 +0100

Jostein Kjønigsen <[email-masked]> writes:

> In a buffer with typescript-ts-mode activated, write the following code:
>
> const test = "quoted\"string\" contents";
>
> The entire text, include the \" is highlighted as strings, and escape sequences are not handled:
>
> This code has the following tree-sitter syntax tree:
>
>  (lexical_declaration kind: const
>   (variable_declarator name: (identifier) value: =
>    (string " (string_fragment) (escape_sequence) (string_fragment) (escape_sequence) (string_fragment) "))
>   ;)
>
> In typescript-ts-mode we seemingly have rules to handle fontification of escape sequences: 
>
>     :language language
>     :feature 'escape-sequence
>     :override t
>     '((escape_sequence) @font-lock-escape-face))
>
> This feature is however not activated in the major-mode setup: 
>
>      (setq-local treesit-font-lock-feature-list
>                  '((comment declaration)
>                    (keyword string)
>                    (constant expression identifier number pattern property)
>                    (bracket delimiter)))
>
> Naively I assumed that simply adding this feature would activate this rule, but still \" is fontified as string.

Yeah, there was an error there.  See below patch.

Yuan, can you install this?

Theo

>From 1b0f2a181c38902804e323b064ab85cf84d88ff5 Mon Sep 17 00:00:00 2001
From: Theodor Thornhill <[email-masked]>
Date: Thu, 8 Dec 2022 16:17:49 +0100
Subject: [PATCH] Fix escape-sequence feature in typescript-ts-mode (bug#59906)

* lisp/progmodes/typescript-ts-mode.el: (typescript-ts-mode,
tsx-ts-mode): Use escape-sequence feature.
---
 lisp/progmodes/typescript-ts-mode.el | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/lisp/progmodes/typescript-ts-mode.el b/lisp/progmodes/typescript-ts-mode.el
index a56568ae78..d5ca813e34 100644
--- a/lisp/progmodes/typescript-ts-mode.el
+++ b/lisp/progmodes/typescript-ts-mode.el
@@ -362,8 +362,7 @@ typescript-ts-mode
     (setq-local treesit-font-lock-settings
                 (typescript-ts-mode--font-lock-settings 'typescript))
     (setq-local treesit-font-lock-feature-list
-                '((comment declaration)
-                  (keyword string)
+                '((comment declaration keyword string escape-sequence)
                   (constant expression identifier number pattern property)
                   (bracket delimiter)))
 
@@ -397,8 +396,7 @@ tsx-ts-mode
     (setq-local treesit-font-lock-settings
                 (typescript-ts-mode--font-lock-settings 'tsx))
     (setq-local treesit-font-lock-feature-list
-                '((comment declaration)
-                  (keyword string)
+                '((comment declaration keyword string escape-sequence)
                   (constant expression identifier jsx number pattern property)
                   (bracket delimiter)))
 
-- 
2.34.1