From bd405ab9dc1b02d76f56a94b984b7bea9e597bc2 Mon Sep 17 00:00:00 2001 From: Randy Taylor Date: Tue, 14 Feb 2023 20:40:05 -0500 Subject: [PATCH] Fix rust-ts-mode highlights overriding vc-diff buffers (Bug#61302) * lisp/progmodes/rust-ts-mode.el (rust-ts-mode--fontify-default): New function. (rust-ts-mode--font-lock-settings): Use it. --- lisp/progmodes/rust-ts-mode.el | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/lisp/progmodes/rust-ts-mode.el b/lisp/progmodes/rust-ts-mode.el index f510b7bb6c9..0b2619c51ad 100644 --- a/lisp/progmodes/rust-ts-mode.el +++ b/lisp/progmodes/rust-ts-mode.el @@ -217,7 +217,8 @@ rust-ts-mode--font-lock-settings (scoped_identifier path: (_) name: (identifier) @font-lock-type-face)) (:match "^[A-Z]" @font-lock-type-face)) - (use_as_clause path: (scoped_identifier name: (identifier) @default)) + (use_as_clause + path: (scoped_identifier name: (identifier) @rust-ts-mode--fontify-default)) ((use_declaration argument: (scoped_identifier @@ -226,14 +227,14 @@ rust-ts-mode--font-lock-settings (:match "^[A-Z]" @font-lock-type-face)) (use_declaration argument: (scoped_identifier - name: (identifier) @default)) + name: (identifier) @rust-ts-mode--fontify-default)) (use_declaration argument: (scoped_identifier path: (scoped_identifier path: (_) @font-lock-constant-face name: (identifier) @font-lock-constant-face) - name: (identifier) @default)) + name: (identifier) @rust-ts-mode--fontify-default)) (use_declaration argument: (scoped_use_list @@ -243,12 +244,12 @@ rust-ts-mode--font-lock-settings ((use_list (identifier) @font-lock-type-face) (:match "^[A-Z]" @font-lock-type-face)) - (use_list (identifier) @default) + (use_list (identifier) @rust-ts-mode--fontify-default) ((use_list (scoped_identifier path: (_) name: (identifier) @font-lock-type-face)) (:match "^[A-Z]" @font-lock-type-face)) (use_list (scoped_identifier path: (_) - name: (identifier) @default)) + name: (identifier) @rust-ts-mode--fontify-default)) (use_wildcard (scoped_identifier name: (identifier) @font-lock-constant-face)) @@ -286,7 +287,9 @@ rust-ts-mode--font-lock-settings name: (identifier) @font-lock-constant-face)) (type_identifier) @font-lock-type-face ;; Ensure function calls aren't highlighted as types. - (call_expression function: (scoped_identifier name: (identifier) @default))) + (call_expression function: + (scoped_identifier + name: (identifier) @rust-ts-mode--fontify-default))) :language 'rust :feature 'property @@ -304,7 +307,7 @@ rust-ts-mode--font-lock-settings :feature 'variable '((identifier) @font-lock-variable-name-face ;; Everything in a token_tree is an identifier. - (token_tree (identifier) @default)) + (token_tree (identifier) @rust-ts-mode--fontify-default)) :language 'rust :feature 'escape-sequence @@ -317,6 +320,12 @@ rust-ts-mode--font-lock-settings '((ERROR) @font-lock-warning-face)) "Tree-sitter font-lock settings for `rust-ts-mode'.") +(defun rust-ts-mode--fontify-default (node _ start end &rest _) + "Fontify the node with the default face." + (treesit-fontify-with-override + (treesit-node-start node) (treesit-node-end node) + 'default-face 'append start end)) + (defalias 'rust-ts-mode--fontify-pattern (and (treesit-available-p) -- 2.39.2