From 477aa047ee73d2b93c04a88700263e58cf7bab70 Mon Sep 17 00:00:00 2001 From: Dmitry Gutov Date: Tue, 14 Feb 2023 19:29:30 +0200 Subject: [PATCH] rust-ts-mode: Highlight variable reassignments * lisp/progmodes/rust-ts-mode.el (rust-ts-mode): New treesit font-lock feature: 'assignment' (bug#61302). (rust-ts-mode--fontify-pattern): Remove the node lookup step. (rust-ts-mode--font-lock-settings): Update variable declaration queries to match the 'pattern' child node right away. Add highlights for 'assignment. --- lisp/progmodes/rust-ts-mode.el | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/lisp/progmodes/rust-ts-mode.el b/lisp/progmodes/rust-ts-mode.el index 5c71a8ad461..f709b16ff39 100644 --- a/lisp/progmodes/rust-ts-mode.el +++ b/lisp/progmodes/rust-ts-mode.el @@ -163,11 +163,16 @@ (macro_definition "macro_rules!" @font-lock-constant-face) (macro_definition (identifier) @font-lock-preprocessor-face) (field_declaration name: (field_identifier) @font-lock-property-face) - (parameter) @rust-ts-mode--fontify-pattern - (let_declaration) @rust-ts-mode--fontify-pattern - (for_expression) @rust-ts-mode--fontify-pattern - (let_condition) @rust-ts-mode--fontify-pattern - (match_arm) @rust-ts-mode--fontify-pattern) + (parameter pattern: (_) @rust-ts-mode--fontify-pattern) + (let_declaration pattern: (_) @rust-ts-mode--fontify-pattern) + (for_expression pattern: (_) @rust-ts-mode--fontify-pattern) + (let_condition pattern: (_) @rust-ts-mode--fontify-pattern) + (match_arm pattern: (_) @rust-ts-mode--fontify-pattern)) + + :language 'rust + :feature 'assignment + '((assignment_expression left: (_) @rust-ts-mode--fontify-pattern) + (compound_assignment_expr left: (_) @rust-ts-mode--fontify-pattern)) :language 'rust :feature 'function @@ -261,7 +266,7 @@ (treesit-available-p) `(lambda (node override start end &rest _) (let ((captures (treesit-query-capture - (treesit-node-child-by-field-name node "pattern") + node ,(treesit-query-compile 'rust '((identifier) @id (shorthand_field_identifier) @id))))) (pcase-dolist (`(_name . ,id) captures) @@ -342,7 +347,7 @@ delimiters < and >'s." (setq-local treesit-font-lock-feature-list '(( comment definition) ( keyword string) - ( attribute builtin constant escape-sequence + ( assignment attribute builtin constant escape-sequence number type) ( bracket delimiter error function operator property variable))) -- 2.39.2