From e3663d0e9c6ec32a70226947767850924b90bba7 Mon Sep 17 00:00:00 2001 From: Yuan Fu Date: Thu, 3 Nov 2022 11:53:49 -0700 Subject: [PATCH] Add contextual tree-sitter font-lock to ts-mode and js-mode * lisp/progmodes/js.el (js--treesit-font-lock-settings) * lisp/progmodes/ts-mode.el (ts-mode--font-lock-settings): Capture commend and strings. Add empty lines. --- lisp/progmodes/js.el | 15 ++++++++++++++- lisp/progmodes/ts-mode.el | 15 ++++++++++++++- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/lisp/progmodes/js.el b/lisp/progmodes/js.el index 92a8599d7f2..01da87f6be5 100644 --- a/lisp/progmodes/js.el +++ b/lisp/progmodes/js.el @@ -3451,10 +3451,13 @@ This function is intended for use in `after-change-functions'." (defvar js--treesit-font-lock-settings (treesit-font-lock-rules + :language 'javascript :override t :feature 'comment - `((comment) @font-lock-comment-face) + `((comment) @font-lock-comment-face + (comment) @contextual) + :language 'javascript :override t :feature 'constant @@ -3463,18 +3466,23 @@ This function is intended for use in `after-change-functions'." [(true) (false) (null)] @font-lock-constant-face (number) @font-lock-constant-face) + :language 'javascript :override t :feature 'keyword `([,@js--treesit-keywords] @font-lock-keyword-face [(this) (super)] @font-lock-keyword-face) + :language 'javascript :override t :feature 'string `((regex pattern: (regex_pattern)) @font-lock-string-face (string) @font-lock-string-face + (string) @contextual (template_string) @js--fontify-template-string + (template_string) @contextual (template_substitution ["${" "}"] @font-lock-builtin-face)) + :language 'javascript :override t :feature 'declaration @@ -3503,6 +3511,7 @@ This function is intended for use in `after-change-functions'." (identifier) @font-lock-function-name-face) value: (array (number) (function)))) + :language 'javascript :override t :feature 'identifier @@ -3514,6 +3523,7 @@ This function is intended for use in `after-change-functions'." (arrow_function parameter: (identifier) @font-lock-variable-name-face)) + :language 'javascript :override t :feature 'expression @@ -3533,6 +3543,7 @@ This function is intended for use in `after-change-functions'." left: [(identifier) @font-lock-variable-name-face (member_expression property: (property_identifier) @font-lock-variable-name-face)])) + :language 'javascript :override t :feature 'property @@ -3547,11 +3558,13 @@ This function is intended for use in `after-change-functions'." ((shorthand_property_identifier) @font-lock-variable-name-face) ((shorthand_property_identifier_pattern) @font-lock-variable-name-face)) + :language 'javascript :override t :feature 'pattern `((pair_pattern key: (property_identifier) @font-lock-variable-name-face) (array_pattern (identifier) @font-lock-variable-name-face)) + :language 'javascript :override t :feature 'jsx diff --git a/lisp/progmodes/ts-mode.el b/lisp/progmodes/ts-mode.el index 20118bc3db9..a7dee1ead88 100644 --- a/lisp/progmodes/ts-mode.el +++ b/lisp/progmodes/ts-mode.el @@ -100,10 +100,13 @@ (defvar ts-mode--font-lock-settings (treesit-font-lock-rules + :language 'tsx :override t :feature 'comment - `((comment) @font-lock-comment-face) + `((comment) @font-lock-comment-face + (comment) @contextual) + :language 'tsx :override t :feature 'constant @@ -112,18 +115,23 @@ [(true) (false) (null)] @font-lock-constant-face (number) @font-lock-constant-face) + :language 'tsx :override t :feature 'keyword `([,@ts-mode--keywords] @font-lock-keyword-face [(this) (super)] @font-lock-keyword-face) + :language 'tsx :override t :feature 'string `((regex pattern: (regex_pattern)) @font-lock-string-face (string) @font-lock-string-face + (string) @contextual (template_string) @js--fontify-template-string + (template_string) @contextual (template_substitution ["${" "}"] @font-lock-builtin-face)) + :language 'tsx :override t :feature 'declaration @@ -153,6 +161,7 @@ (identifier) (identifier) @font-lock-function-name-face) value: (array (number) (function)))) + :language 'tsx :override t :feature 'identifier @@ -183,6 +192,7 @@ [(_ (identifier) @font-lock-variable-name-face) (_ (_ (identifier) @font-lock-variable-name-face)) (_ (_ (_ (identifier) @font-lock-variable-name-face)))])) + :language 'tsx :override t :feature 'expression @@ -197,6 +207,7 @@ [(identifier) @font-lock-function-name-face (member_expression property: (property_identifier) @font-lock-function-name-face)])) + :language 'tsx :override t :feature 'property @@ -215,6 +226,7 @@ ((shorthand_property_identifier_pattern) @font-lock-variable-name-face)) + :language 'tsx :override t :feature 'pattern @@ -222,6 +234,7 @@ key: (property_identifier) @font-lock-variable-name-face) (array_pattern (identifier) @font-lock-variable-name-face)) + :language 'tsx :override t :feature 'jsx -- 2.39.5