diff --git a/crates/rust-analyzer/src/conv.rs b/crates/rust-analyzer/src/conv.rs index 86851c1f199..b012f5dd5e9 100644 --- a/crates/rust-analyzer/src/conv.rs +++ b/crates/rust-analyzer/src/conv.rs @@ -20,7 +20,7 @@ use ra_vfs::LineEndings; use crate::{ req, - semantic_tokens::{self, ModifierSet, BUILTIN, CONTROL, MUTABLE, UNSAFE}, + semantic_tokens::{self, ModifierSet, BUILTIN, CONSTANT, CONTROL, MUTABLE, UNSAFE}, world::WorldSnapshot, Result, }; @@ -322,7 +322,7 @@ impl Conv for Highlight { HighlightTag::Constant => { mods |= SemanticTokenModifier::STATIC; mods |= SemanticTokenModifier::READONLY; - SemanticTokenType::VARIABLE + CONSTANT } HighlightTag::Macro => SemanticTokenType::MACRO, HighlightTag::Variable => SemanticTokenType::VARIABLE, diff --git a/crates/rust-analyzer/src/semantic_tokens.rs b/crates/rust-analyzer/src/semantic_tokens.rs index bf21dc68ecb..d8362409dc8 100644 --- a/crates/rust-analyzer/src/semantic_tokens.rs +++ b/crates/rust-analyzer/src/semantic_tokens.rs @@ -5,6 +5,7 @@ use std::ops; use lsp_types::{Range, SemanticToken, SemanticTokenModifier, SemanticTokenType}; pub(crate) const ATTRIBUTE: SemanticTokenType = SemanticTokenType::new("attribute"); +pub(crate) const CONSTANT: SemanticTokenType = SemanticTokenType::new("constant"); pub(crate) const MUTABLE: SemanticTokenModifier = SemanticTokenModifier::new("mutable"); pub(crate) const UNSAFE: SemanticTokenModifier = SemanticTokenModifier::new("unsafe"); @@ -33,6 +34,7 @@ pub(crate) const SUPPORTED_TYPES: &[SemanticTokenType] = &[ SemanticTokenType::PARAMETER, SemanticTokenType::LABEL, ATTRIBUTE, + CONSTANT, ]; pub(crate) const SUPPORTED_MODIFIERS: &[SemanticTokenModifier] = &[ diff --git a/editors/code/package.json b/editors/code/package.json index 3fbf3f0bbc1..ad1101603b4 100644 --- a/editors/code/package.json +++ b/editors/code/package.json @@ -383,6 +383,9 @@ "semanticTokenTypes": [ { "id": "attribute" + }, + { + "id": "constant" } ], "semanticTokenModifiers": [ @@ -411,6 +414,12 @@ "highContrast": { "fontStyle": "underline" } + }, + { + "selector": "constant", + "scope": [ + "entity.name.constant" + ] } ] }