emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

emacs-29 477aa047ee 1/2: rust-ts-mode: Highlight variable reassignments


From: Dmitry Gutov
Subject: emacs-29 477aa047ee 1/2: rust-ts-mode: Highlight variable reassignments
Date: Tue, 14 Feb 2023 16:55:11 -0500 (EST)

branch: emacs-29
commit 477aa047ee73d2b93c04a88700263e58cf7bab70
Author: Dmitry Gutov <dgutov@yandex.ru>
Commit: Dmitry Gutov <dgutov@yandex.ru>

    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 5c71a8ad46..f709b16ff3 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)))
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]