diff --git a/crates/ra_ide/src/snapshots/highlighting.html b/crates/ra_ide/src/snapshots/highlighting.html index 51851763e85e..8c372ad2700b 100644 --- a/crates/ra_ide/src/snapshots/highlighting.html +++ b/crates/ra_ide/src/snapshots/highlighting.html @@ -3,70 +3,72 @@ body { margin: 0; } pre { color: #DCDCCC; background: #3F3F3F; font-size: 22px; padding: 0.4em; } + .comment { color: #7F9F7F; } -.string { color: #CC9393; } +.struct, .enum { color: #7CB8BB; } +.enum_variant { color: #BDE0F3; } +.string_literal { color: #CC9393; } .field { color: #94BFF3; } .function { color: #93E0E3; } .parameter { color: #94BFF3; } .text { color: #DCDCCC; } .type { color: #7CB8BB; } -.type.builtin { color: #8CD0D3; } -.type.param { color: #20999D; } +.builtin_type { color: #8CD0D3; } +.type_param { color: #DFAF8F; } .attribute { color: #94BFF3; } -.literal { color: #BFEBBF; } -.literal.numeric { color: #6A8759; } +.numeric_literal { color: #BFEBBF; } .macro { color: #94BFF3; } .module { color: #AFD8AF; } .variable { color: #DCDCCC; } -.variable.mut { color: #DCDCCC; text-decoration: underline; } +.mutable { text-decoration: underline; } -.keyword { color: #F0DFAF; } -.keyword.unsafe { color: #DFAF8F; } -.keyword.control { color: #F0DFAF; font-weight: bold; } +.keyword { color: #F0DFAF; font-weight: bold; } +.keyword.unsafe { color: #BC8383; font-weight: bold; } +.control { font-style: italic; }
#[derive(Clone, Debug)]
-struct Foo {
- pub x: i32,
- pub y: i32,
+struct Foo {
+ pub x: i32,
+ pub y: i32,
}
-fn foo<T>() -> T {
+fn foo<T>() -> T {
unimplemented!();
- foo::<i32>();
+ foo::<i32>();
}
macro_rules! def_fn {
($($tt:tt)*) => {$($tt)*}
}
-def_fn!{
- fn bar() -> u32 {
- 100
+def_fn! {
+ fn bar() -> u32 {
+ 100
}
}
// comment
fn main() {
- println!("Hello, {}!", 92);
+ println!("Hello, {}!", 92);
let mut vec = Vec::new();
if true {
- let x = 92;
- vec.push(Foo { x, y: 1 });
+ let x = 92;
+ vec.push(Foo { x, y: 1 });
}
- unsafe { vec.set_len(0); }
+ unsafe { vec.set_len(0); }
- let mut x = 42;
+ let mut x = 42;
let y = &mut x;
let z = &y;
y;
}
-enum E<X> {
- V(X)
+enum E<X> {
+ V(X)
}
-impl<X> E<X> {
- fn new<T>() -> E<T> {}
+impl<X> E<X> {
+ fn new<T>() -> E<T> {}
}
\ No newline at end of file
diff --git a/crates/ra_ide/src/snapshots/rainbow_highlighting.html b/crates/ra_ide/src/snapshots/rainbow_highlighting.html
index 1f869867f528..f63e64b6d1f7 100644
--- a/crates/ra_ide/src/snapshots/rainbow_highlighting.html
+++ b/crates/ra_ide/src/snapshots/rainbow_highlighting.html
@@ -3,36 +3,38 @@
body { margin: 0; }
pre { color: #DCDCCC; background: #3F3F3F; font-size: 22px; padding: 0.4em; }
+
.comment { color: #7F9F7F; }
-.string { color: #CC9393; }
+.struct, .enum { color: #7CB8BB; }
+.enum_variant { color: #BDE0F3; }
+.string_literal { color: #CC9393; }
.field { color: #94BFF3; }
.function { color: #93E0E3; }
.parameter { color: #94BFF3; }
.text { color: #DCDCCC; }
.type { color: #7CB8BB; }
-.type.builtin { color: #8CD0D3; }
-.type.param { color: #20999D; }
+.builtin_type { color: #8CD0D3; }
+.type_param { color: #DFAF8F; }
.attribute { color: #94BFF3; }
-.literal { color: #BFEBBF; }
-.literal.numeric { color: #6A8759; }
+.numeric_literal { color: #BFEBBF; }
.macro { color: #94BFF3; }
.module { color: #AFD8AF; }
.variable { color: #DCDCCC; }
-.variable.mut { color: #DCDCCC; text-decoration: underline; }
+.mutable { text-decoration: underline; }
-.keyword { color: #F0DFAF; }
-.keyword.unsafe { color: #DFAF8F; }
-.keyword.control { color: #F0DFAF; font-weight: bold; }
+.keyword { color: #F0DFAF; font-weight: bold; }
+.keyword.unsafe { color: #BC8383; font-weight: bold; }
+.control { font-style: italic; }
fn main() {
- let hello = "hello";
+ let hello = "hello";
let x = hello.to_string();
let y = hello.to_string();
- let x = "other color please!";
+ let x = "other color please!";
let y = x.to_string();
}
fn bar() {
- let mut hello = "hello";
+ let mut hello = "hello";
}
\ No newline at end of file
diff --git a/crates/ra_ide/src/syntax_highlighting.rs b/crates/ra_ide/src/syntax_highlighting.rs
index d7bca1193311..30ca9d8b010c 100644
--- a/crates/ra_ide/src/syntax_highlighting.rs
+++ b/crates/ra_ide/src/syntax_highlighting.rs
@@ -177,10 +177,11 @@ fn highlight_element(
}
};
- match name_kind {
+ let h = match name_kind {
Some(name_kind) => highlight_name(db, name_kind),
None => highlight_name_by_syntax(name),
- }
+ };
+ h | HighlightModifier::Definition
}
// Highlight references like the definitions they resolve to
@@ -206,12 +207,13 @@ fn highlight_element(
// Simple token-based highlighting
COMMENT => HighlightTag::Comment.into(),
- STRING | RAW_STRING | RAW_BYTE_STRING | BYTE_STRING => HighlightTag::LiteralString.into(),
+ STRING | RAW_STRING | RAW_BYTE_STRING | BYTE_STRING => HighlightTag::StringLiteral.into(),
ATTR => HighlightTag::Attribute.into(),
- INT_NUMBER | FLOAT_NUMBER => HighlightTag::LiteralNumeric.into(),
- BYTE => HighlightTag::LiteralByte.into(),
- CHAR => HighlightTag::LiteralChar.into(),
- LIFETIME => HighlightTag::TypeLifetime.into(),
+ INT_NUMBER | FLOAT_NUMBER => HighlightTag::NumericLiteral.into(),
+ BYTE => HighlightTag::ByteLiteral.into(),
+ CHAR => HighlightTag::CharLiteral.into(),
+ // FIXME: set Declaration for decls
+ LIFETIME => HighlightTag::Lifetime.into(),
k if k.is_keyword() => {
let h = Highlight::new(HighlightTag::Keyword);
@@ -255,20 +257,21 @@ fn highlight_name(db: &RootDatabase, def: NameDefinition) -> Highlight {
NameDefinition::ModuleDef(def) => match def {
hir::ModuleDef::Module(_) => HighlightTag::Module,
hir::ModuleDef::Function(_) => HighlightTag::Function,
- hir::ModuleDef::Adt(_) => HighlightTag::Type,
- hir::ModuleDef::EnumVariant(_) => HighlightTag::Constant,
+ hir::ModuleDef::Adt(hir::Adt::Struct(_)) => HighlightTag::Struct,
+ hir::ModuleDef::Adt(hir::Adt::Enum(_)) => HighlightTag::Enum,
+ hir::ModuleDef::Adt(hir::Adt::Union(_)) => HighlightTag::Union,
+ hir::ModuleDef::EnumVariant(_) => HighlightTag::EnumVariant,
hir::ModuleDef::Const(_) => HighlightTag::Constant,
- hir::ModuleDef::Static(_) => HighlightTag::Constant,
- hir::ModuleDef::Trait(_) => HighlightTag::Type,
- hir::ModuleDef::TypeAlias(_) => HighlightTag::Type,
- hir::ModuleDef::BuiltinType(_) => {
- return HighlightTag::Type | HighlightModifier::Builtin
- }
+ hir::ModuleDef::Static(_) => HighlightTag::Static,
+ hir::ModuleDef::Trait(_) => HighlightTag::Trait,
+ hir::ModuleDef::TypeAlias(_) => HighlightTag::TypeAlias,
+ hir::ModuleDef::BuiltinType(_) => HighlightTag::BuiltinType,
},
- NameDefinition::SelfType(_) => HighlightTag::TypeSelf,
+ NameDefinition::SelfType(_) => HighlightTag::SelfType,
NameDefinition::TypeParam(_) => HighlightTag::TypeParam,
+ // FIXME: distinguish between locals and parameters
NameDefinition::Local(local) => {
- let mut h = Highlight::new(HighlightTag::Variable);
+ let mut h = Highlight::new(HighlightTag::Local);
if local.is_mut(db) || local.ty(db).is_mutable_reference() {
h |= HighlightModifier::Mutable;
}
@@ -287,7 +290,11 @@ fn highlight_name_by_syntax(name: ast::Name) -> Highlight {
};
match parent.kind() {
- STRUCT_DEF | ENUM_DEF | TRAIT_DEF | TYPE_ALIAS_DEF => HighlightTag::Type.into(),
+ STRUCT_DEF => HighlightTag::Struct.into(),
+ ENUM_DEF => HighlightTag::Enum.into(),
+ UNION_KW => HighlightTag::Union.into(),
+ TRAIT_DEF => HighlightTag::Trait.into(),
+ TYPE_ALIAS_DEF => HighlightTag::TypeAlias.into(),
TYPE_PARAM => HighlightTag::TypeParam.into(),
RECORD_FIELD_DEF => HighlightTag::Field.into(),
_ => default,
@@ -312,7 +319,7 @@ fn highlight_injection(
if let Some(range) = literal.open_quote_text_range() {
acc.push(HighlightedRange {
range,
- highlight: HighlightTag::LiteralString.into(),
+ highlight: HighlightTag::StringLiteral.into(),
binding_hash: None,
})
}
@@ -327,7 +334,7 @@ fn highlight_injection(
if let Some(range) = literal.close_quote_text_range() {
acc.push(HighlightedRange {
range,
- highlight: HighlightTag::LiteralString.into(),
+ highlight: HighlightTag::StringLiteral.into(),
binding_hash: None,
})
}
diff --git a/crates/ra_ide/src/syntax_highlighting/html.rs b/crates/ra_ide/src/syntax_highlighting/html.rs
index 210d9a57baea..54678c278dff 100644
--- a/crates/ra_ide/src/syntax_highlighting/html.rs
+++ b/crates/ra_ide/src/syntax_highlighting/html.rs
@@ -80,25 +80,27 @@ const STYLE: &str = "
body { margin: 0; }
pre { color: #DCDCCC; background: #3F3F3F; font-size: 22px; padding: 0.4em; }
+
.comment { color: #7F9F7F; }
-.string { color: #CC9393; }
+.struct, .enum { color: #7CB8BB; }
+.enum_variant { color: #BDE0F3; }
+.string_literal { color: #CC9393; }
.field { color: #94BFF3; }
.function { color: #93E0E3; }
.parameter { color: #94BFF3; }
.text { color: #DCDCCC; }
.type { color: #7CB8BB; }
-.type.builtin { color: #8CD0D3; }
-.type.param { color: #20999D; }
+.builtin_type { color: #8CD0D3; }
+.type_param { color: #DFAF8F; }
.attribute { color: #94BFF3; }
-.literal { color: #BFEBBF; }
-.literal.numeric { color: #6A8759; }
+.numeric_literal { color: #BFEBBF; }
.macro { color: #94BFF3; }
.module { color: #AFD8AF; }
.variable { color: #DCDCCC; }
-.variable.mut { color: #DCDCCC; text-decoration: underline; }
+.mutable { text-decoration: underline; }
-.keyword { color: #F0DFAF; }
-.keyword.unsafe { color: #DFAF8F; }
-.keyword.control { color: #F0DFAF; font-weight: bold; }
+.keyword { color: #F0DFAF; font-weight: bold; }
+.keyword.unsafe { color: #BC8383; font-weight: bold; }
+.control { font-style: italic; }
";
diff --git a/crates/ra_ide/src/syntax_highlighting/tags.rs b/crates/ra_ide/src/syntax_highlighting/tags.rs
index 383c74c98604..9da80823cc5d 100644
--- a/crates/ra_ide/src/syntax_highlighting/tags.rs
+++ b/crates/ra_ide/src/syntax_highlighting/tags.rs
@@ -14,59 +14,71 @@ pub struct HighlightModifiers(u32);
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub enum HighlightTag {
+ Attribute,
+ BuiltinType,
+ ByteLiteral,
+ CharLiteral,
+ Comment,
+ Constant,
+ Enum,
+ EnumVariant,
Field,
Function,
- Module,
- Constant,
- Macro,
- Variable,
-
- Type,
- TypeSelf,
- TypeParam,
- TypeLifetime,
-
- LiteralByte,
- LiteralNumeric,
- LiteralChar,
-
- Comment,
- LiteralString,
- Attribute,
-
Keyword,
+ Lifetime,
+ Macro,
+ Module,
+ NumericLiteral,
+ SelfType,
+ Static,
+ StringLiteral,
+ Struct,
+ Trait,
+ TypeAlias,
+ TypeParam,
+ Union,
+ Local,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
#[repr(u8)]
pub enum HighlightModifier {
- Mutable = 0,
- Unsafe,
/// Used with keywords like `if` and `break`.
- Control,
- Builtin,
+ Control = 0,
+ /// `foo` in `fn foo(x: i32)` is a definition, `foo` in `foo(90 + 2)` is
+ /// not.
+ Definition,
+ Mutable,
+ Unsafe,
}
impl HighlightTag {
fn as_str(self) -> &'static str {
match self {
+ HighlightTag::Attribute => "attribute",
+ HighlightTag::BuiltinType => "builtin_type",
+ HighlightTag::ByteLiteral => "byte_literal",
+ HighlightTag::CharLiteral => "char_literal",
+ HighlightTag::Comment => "comment",
+ HighlightTag::Constant => "constant",
+ HighlightTag::Enum => "enum",
+ HighlightTag::EnumVariant => "enum_variant",
HighlightTag::Field => "field",
HighlightTag::Function => "function",
- HighlightTag::Module => "module",
- HighlightTag::Constant => "constant",
- HighlightTag::Macro => "macro",
- HighlightTag::Variable => "variable",
- HighlightTag::Type => "type",
- HighlightTag::TypeSelf => "type.self",
- HighlightTag::TypeParam => "type.param",
- HighlightTag::TypeLifetime => "type.lifetime",
- HighlightTag::LiteralByte => "literal.byte",
- HighlightTag::LiteralNumeric => "literal.numeric",
- HighlightTag::LiteralChar => "literal.char",
- HighlightTag::Comment => "comment",
- HighlightTag::LiteralString => "string",
- HighlightTag::Attribute => "attribute",
HighlightTag::Keyword => "keyword",
+ HighlightTag::Lifetime => "lifetime",
+ HighlightTag::Macro => "macro",
+ HighlightTag::Module => "module",
+ HighlightTag::NumericLiteral => "numeric_literal",
+ HighlightTag::SelfType => "self_type",
+ HighlightTag::Static => "static",
+ HighlightTag::StringLiteral => "string_literal",
+ HighlightTag::Struct => "struct",
+ HighlightTag::Trait => "trait",
+ HighlightTag::TypeAlias => "type_alias",
+ HighlightTag::TypeParam => "type_param",
+ HighlightTag::Union => "union",
+ HighlightTag::Local => "variable",
}
}
}
@@ -78,19 +90,15 @@ impl fmt::Display for HighlightTag {
}
impl HighlightModifier {
- const ALL: &'static [HighlightModifier] = &[
- HighlightModifier::Mutable,
- HighlightModifier::Unsafe,
- HighlightModifier::Control,
- HighlightModifier::Builtin,
- ];
+ const ALL: &'static [HighlightModifier] =
+ &[HighlightModifier::Mutable, HighlightModifier::Unsafe, HighlightModifier::Control];
fn as_str(self) -> &'static str {
match self {
+ HighlightModifier::Control => "control",
+ HighlightModifier::Definition => "declaration",
HighlightModifier::Mutable => "mutable",
HighlightModifier::Unsafe => "unsafe",
- HighlightModifier::Control => "control",
- HighlightModifier::Builtin => "builtin",
}
}
diff --git a/crates/ra_ide/src/syntax_highlighting/tests.rs b/crates/ra_ide/src/syntax_highlighting/tests.rs
index ff23d4ac5e8d..2d90a072f298 100644
--- a/crates/ra_ide/src/syntax_highlighting/tests.rs
+++ b/crates/ra_ide/src/syntax_highlighting/tests.rs
@@ -26,7 +26,7 @@ macro_rules! def_fn {
($($tt:tt)*) => {$($tt)*}
}
-def_fn!{
+def_fn! {
fn bar() -> u32 {
100
}
diff --git a/crates/rust-analyzer/src/conv.rs b/crates/rust-analyzer/src/conv.rs
index b012f5dd5e94..ff156307a55b 100644
--- a/crates/rust-analyzer/src/conv.rs
+++ b/crates/rust-analyzer/src/conv.rs
@@ -20,11 +20,11 @@ use ra_vfs::LineEndings;
use crate::{
req,
- semantic_tokens::{self, ModifierSet, BUILTIN, CONSTANT, CONTROL, MUTABLE, UNSAFE},
+ semantic_tokens::{self, ModifierSet, CONSTANT, CONTROL, MUTABLE, UNSAFE},
world::WorldSnapshot,
Result,
};
-use semantic_tokens::ATTRIBUTE;
+use semantic_tokens::{ATTRIBUTE, BUILTIN_TYPE, ENUM_MEMBER, LIFETIME, TYPE_ALIAS, UNION};
pub trait Conv {
type Output;
@@ -316,41 +316,43 @@ impl Conv for Highlight {
fn conv(self) -> Self::Output {
let mut mods = ModifierSet::default();
let type_ = match self.tag {
+ HighlightTag::Struct => SemanticTokenType::STRUCT,
+ HighlightTag::Enum => SemanticTokenType::ENUM,
+ HighlightTag::Union => UNION,
+ HighlightTag::TypeAlias => TYPE_ALIAS,
+ HighlightTag::Trait => SemanticTokenType::INTERFACE,
+ HighlightTag::BuiltinType => BUILTIN_TYPE,
+ HighlightTag::SelfType => SemanticTokenType::TYPE,
HighlightTag::Field => SemanticTokenType::MEMBER,
HighlightTag::Function => SemanticTokenType::FUNCTION,
HighlightTag::Module => SemanticTokenType::NAMESPACE,
HighlightTag::Constant => {
+ mods |= CONSTANT;
mods |= SemanticTokenModifier::STATIC;
- mods |= SemanticTokenModifier::READONLY;
- CONSTANT
+ SemanticTokenType::VARIABLE
}
+ HighlightTag::Static => {
+ mods |= SemanticTokenModifier::STATIC;
+ SemanticTokenType::VARIABLE
+ }
+ HighlightTag::EnumVariant => ENUM_MEMBER,
HighlightTag::Macro => SemanticTokenType::MACRO,
- HighlightTag::Variable => SemanticTokenType::VARIABLE,
- HighlightTag::Type => SemanticTokenType::TYPE,
- HighlightTag::TypeSelf => {
- mods |= SemanticTokenModifier::REFERENCE;
- SemanticTokenType::TYPE
- }
+ HighlightTag::Local => SemanticTokenType::VARIABLE,
HighlightTag::TypeParam => SemanticTokenType::TYPE_PARAMETER,
- HighlightTag::TypeLifetime => {
- mods |= SemanticTokenModifier::REFERENCE;
- SemanticTokenType::LABEL
- }
- HighlightTag::LiteralByte => SemanticTokenType::NUMBER,
- HighlightTag::LiteralNumeric => SemanticTokenType::NUMBER,
- HighlightTag::LiteralChar => SemanticTokenType::NUMBER,
+ HighlightTag::Lifetime => LIFETIME,
+ HighlightTag::ByteLiteral | HighlightTag::NumericLiteral => SemanticTokenType::NUMBER,
+ HighlightTag::CharLiteral | HighlightTag::StringLiteral => SemanticTokenType::STRING,
HighlightTag::Comment => SemanticTokenType::COMMENT,
- HighlightTag::LiteralString => SemanticTokenType::STRING,
HighlightTag::Attribute => ATTRIBUTE,
HighlightTag::Keyword => SemanticTokenType::KEYWORD,
};
for modifier in self.modifiers.iter() {
let modifier = match modifier {
+ HighlightModifier::Definition => SemanticTokenModifier::DECLARATION,
+ HighlightModifier::Control => CONTROL,
HighlightModifier::Mutable => MUTABLE,
HighlightModifier::Unsafe => UNSAFE,
- HighlightModifier::Control => CONTROL,
- HighlightModifier::Builtin => BUILTIN,
};
mods |= modifier;
}
diff --git a/crates/rust-analyzer/src/semantic_tokens.rs b/crates/rust-analyzer/src/semantic_tokens.rs
index d8362409dc8c..1b146e4d87e8 100644
--- a/crates/rust-analyzer/src/semantic_tokens.rs
+++ b/crates/rust-analyzer/src/semantic_tokens.rs
@@ -5,12 +5,16 @@ 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 BUILTIN_TYPE: SemanticTokenType = SemanticTokenType::new("builtinType");
+pub(crate) const ENUM_MEMBER: SemanticTokenType = SemanticTokenType::new("enumMember");
+pub(crate) const LIFETIME: SemanticTokenType = SemanticTokenType::new("lifetime");
+pub(crate) const TYPE_ALIAS: SemanticTokenType = SemanticTokenType::new("typeAlias");
+pub(crate) const UNION: SemanticTokenType = SemanticTokenType::new("union");
+pub(crate) const CONSTANT: SemanticTokenModifier = SemanticTokenModifier::new("constant");
+pub(crate) const CONTROL: SemanticTokenModifier = SemanticTokenModifier::new("control");
pub(crate) const MUTABLE: SemanticTokenModifier = SemanticTokenModifier::new("mutable");
pub(crate) const UNSAFE: SemanticTokenModifier = SemanticTokenModifier::new("unsafe");
-pub(crate) const CONTROL: SemanticTokenModifier = SemanticTokenModifier::new("control");
-pub(crate) const BUILTIN: SemanticTokenModifier = SemanticTokenModifier::new("builtin");
pub(crate) const SUPPORTED_TYPES: &[SemanticTokenType] = &[
SemanticTokenType::COMMENT,
@@ -34,7 +38,11 @@ pub(crate) const SUPPORTED_TYPES: &[SemanticTokenType] = &[
SemanticTokenType::PARAMETER,
SemanticTokenType::LABEL,
ATTRIBUTE,
- CONSTANT,
+ BUILTIN_TYPE,
+ ENUM_MEMBER,
+ LIFETIME,
+ TYPE_ALIAS,
+ UNION,
];
pub(crate) const SUPPORTED_MODIFIERS: &[SemanticTokenModifier] = &[
@@ -48,10 +56,10 @@ pub(crate) const SUPPORTED_MODIFIERS: &[SemanticTokenModifier] = &[
SemanticTokenModifier::ASYNC,
SemanticTokenModifier::VOLATILE,
SemanticTokenModifier::READONLY,
+ CONSTANT,
MUTABLE,
UNSAFE,
CONTROL,
- BUILTIN,
];
#[derive(Default)]
diff --git a/editors/code/package.json b/editors/code/package.json
index 6fc123ac0c93..b013c3f4ae3f 100644
--- a/editors/code/package.json
+++ b/editors/code/package.json
@@ -400,24 +400,42 @@
],
"semanticTokenTypes": [
{
- "id": "attribute"
+ "id": "attribute",
+ "description": "Style for attributes"
},
{
- "id": "constant"
+ "id": "builtinType",
+ "description": "Style for builtin types"
+ },
+ {
+ "id": "lifetime",
+ "description": "Style for lifetimes"
+ },
+ {
+ "id": "typeAlias",
+ "description": "Style for type aliases"
+ },
+ {
+ "id": "union",
+ "description": "Style for C-style untagged unions"
}
],
"semanticTokenModifiers": [
{
- "id": "mutable"
+ "id": "constant",
+ "description": "Style for compile-time constants"
},
{
- "id": "unsafe"
+ "id": "control",
+ "description": "Style for control flow keywords"
},
{
- "id": "control"
+ "id": "mutable",
+ "description": "Style for mutable bindings"
},
{
- "id": "builtin"
+ "id": "unsafe",
+ "description": "Style for unsafe operations"
}
],
"semanticTokenStyleDefaults": [
@@ -427,6 +445,50 @@
"meta.attribute"
]
},
+ {
+ "selector": "builtinType",
+ "scope": [
+ "support.type.primitive"
+ ]
+ },
+ {
+ "selector": "lifetime",
+ "scope": [
+ "entity.name.lifetime.rust"
+ ]
+ },
+ {
+ "selector": "typeAlias",
+ "scope": [
+ "entity.name.type",
+ "entity.name.typeAlias"
+ ]
+ },
+ {
+ "selector": "union",
+ "scope": [
+ "entity.name.type",
+ "entity.name.union"
+ ]
+ },
+ {
+ "selector": "keyword.unsafe",
+ "scope": [
+ "keyword.other.unsafe"
+ ]
+ },
+ {
+ "selector": "keyword.control",
+ "scope": [
+ "keyword.control"
+ ]
+ },
+ {
+ "selector": "variable.constant",
+ "scope": [
+ "entity.name.constant"
+ ]
+ },
{
"selector": "*.mutable",
"light": {
@@ -438,24 +500,6 @@
"highContrast": {
"fontStyle": "underline"
}
- },
- {
- "selector": "constant",
- "scope": [
- "entity.name.constant"
- ]
- },
- {
- "selector": "keyword.unsafe",
- "scope": [
- "keyword.other.unsafe"
- ]
- },
- {
- "selector": "type.builtin",
- "scope": [
- "support.type.builtin"
- ]
}
]
}