From e9b4fa1465090dd0fb44ecccff08564eaf75667a Mon Sep 17 00:00:00 2001 From: Finn Evers Date: Sat, 15 Mar 2025 00:02:45 +0100 Subject: [PATCH] rust: Follow-up fixes for attribute highlighting (#26172) Closes #26124 This PR fixes some more cases of improper attribute highlights for rust. In #25501 I tried to address the regression in highlighting rust attributes which were introduced by #25333 . However, I failed to properly check all cases of attribute highlights as shown in the linked issue - really sorry for that! Thus, this is a follow-up fix aiming to resolve the issues the previous PR did not cover. The changes do not affect any highlighting shown in the [previous PR](https://github.com/zed-industries/zed/pull/25501): | `main` | main-working | | --- | --- | | This PR | PR-working | But resolves the mentioned regressions in the linked issue: | `main` | main_broken | | --- | --- | | This PR | PR_broken | Again, sorry for not checking this more thoroughly. Release Notes: - Fixed attributes in Rust being improperly highlighted. Co-authored-by: Marshall Bowers --- crates/languages/src/rust/highlights.scm | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/crates/languages/src/rust/highlights.scm b/crates/languages/src/rust/highlights.scm index f52b8f1f9019b8a457c7097fd34041ac08b45327..34380f0d3bf66943475c67da50ba0c23b01771fa 100644 --- a/crates/languages/src/rust/highlights.scm +++ b/crates/languages/src/rust/highlights.scm @@ -190,9 +190,15 @@ operator: "/" @operator (parameter (identifier) @variable.parameter) -(attribute_item (attribute (identifier) @attribute)) -(inner_attribute_item (attribute (identifier) @attribute)) +(attribute_item (attribute [ + (identifier) @attribute + (scoped_identifier name: (identifier) @attribute) +])) +(inner_attribute_item (attribute [ + (identifier) @attribute + (scoped_identifier name: (identifier) @attribute) +])) ; Match nested snake case identifiers in attribute items. (token_tree (identifier) @attribute (#match? @attribute "^[a-z\\d_]*$")) -; Override the attribute match for paths in scoped identifiers. -(token_tree (identifier) @variable "::") +; Override the attribute match for paths in scoped type/enum identifiers. +(token_tree (identifier) @variable "::" (identifier) @type (#match? @type "^[A-Z]"))