aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_ide
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_ide')
-rw-r--r--crates/ra_ide/src/syntax_highlighting.rs17
-rw-r--r--crates/ra_ide/src/syntax_highlighting/tags.rs26
2 files changed, 26 insertions, 17 deletions
diff --git a/crates/ra_ide/src/syntax_highlighting.rs b/crates/ra_ide/src/syntax_highlighting.rs
index d7bca1193..ae2163f9f 100644
--- a/crates/ra_ide/src/syntax_highlighting.rs
+++ b/crates/ra_ide/src/syntax_highlighting.rs
@@ -255,15 +255,15 @@ fn highlight_name(db: &RootDatabase, def: NameDefinition) -> Highlight {
255 NameDefinition::ModuleDef(def) => match def { 255 NameDefinition::ModuleDef(def) => match def {
256 hir::ModuleDef::Module(_) => HighlightTag::Module, 256 hir::ModuleDef::Module(_) => HighlightTag::Module,
257 hir::ModuleDef::Function(_) => HighlightTag::Function, 257 hir::ModuleDef::Function(_) => HighlightTag::Function,
258 hir::ModuleDef::Adt(_) => HighlightTag::Type, 258 hir::ModuleDef::Adt(hir::Adt::Struct(_)) => HighlightTag::Struct,
259 hir::ModuleDef::Adt(hir::Adt::Enum(_)) => HighlightTag::Enum,
260 hir::ModuleDef::Adt(hir::Adt::Union(_)) => HighlightTag::Union,
259 hir::ModuleDef::EnumVariant(_) => HighlightTag::Constant, 261 hir::ModuleDef::EnumVariant(_) => HighlightTag::Constant,
260 hir::ModuleDef::Const(_) => HighlightTag::Constant, 262 hir::ModuleDef::Const(_) => HighlightTag::Constant,
261 hir::ModuleDef::Static(_) => HighlightTag::Constant, 263 hir::ModuleDef::Static(_) => HighlightTag::Constant,
262 hir::ModuleDef::Trait(_) => HighlightTag::Type, 264 hir::ModuleDef::Trait(_) => HighlightTag::Trait,
263 hir::ModuleDef::TypeAlias(_) => HighlightTag::Type, 265 hir::ModuleDef::TypeAlias(_) => HighlightTag::TypeAlias,
264 hir::ModuleDef::BuiltinType(_) => { 266 hir::ModuleDef::BuiltinType(_) => HighlightTag::BuiltinType,
265 return HighlightTag::Type | HighlightModifier::Builtin
266 }
267 }, 267 },
268 NameDefinition::SelfType(_) => HighlightTag::TypeSelf, 268 NameDefinition::SelfType(_) => HighlightTag::TypeSelf,
269 NameDefinition::TypeParam(_) => HighlightTag::TypeParam, 269 NameDefinition::TypeParam(_) => HighlightTag::TypeParam,
@@ -287,7 +287,10 @@ fn highlight_name_by_syntax(name: ast::Name) -> Highlight {
287 }; 287 };
288 288
289 match parent.kind() { 289 match parent.kind() {
290 STRUCT_DEF | ENUM_DEF | TRAIT_DEF | TYPE_ALIAS_DEF => HighlightTag::Type.into(), 290 STRUCT_DEF => HighlightTag::Struct.into(),
291 ENUM_DEF => HighlightTag::Enum.into(),
292 TRAIT_DEF => HighlightTag::Trait.into(),
293 TYPE_ALIAS_DEF => HighlightTag::TypeAlias.into(),
291 TYPE_PARAM => HighlightTag::TypeParam.into(), 294 TYPE_PARAM => HighlightTag::TypeParam.into(),
292 RECORD_FIELD_DEF => HighlightTag::Field.into(), 295 RECORD_FIELD_DEF => HighlightTag::Field.into(),
293 _ => default, 296 _ => default,
diff --git a/crates/ra_ide/src/syntax_highlighting/tags.rs b/crates/ra_ide/src/syntax_highlighting/tags.rs
index 383c74c98..df2fc3c48 100644
--- a/crates/ra_ide/src/syntax_highlighting/tags.rs
+++ b/crates/ra_ide/src/syntax_highlighting/tags.rs
@@ -14,6 +14,13 @@ pub struct HighlightModifiers(u32);
14 14
15#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)] 15#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
16pub enum HighlightTag { 16pub enum HighlightTag {
17 Struct,
18 Enum,
19 Union,
20 Trait,
21 TypeAlias,
22 BuiltinType,
23
17 Field, 24 Field,
18 Function, 25 Function,
19 Module, 26 Module,
@@ -21,7 +28,6 @@ pub enum HighlightTag {
21 Macro, 28 Macro,
22 Variable, 29 Variable,
23 30
24 Type,
25 TypeSelf, 31 TypeSelf,
26 TypeParam, 32 TypeParam,
27 TypeLifetime, 33 TypeLifetime,
@@ -44,19 +50,24 @@ pub enum HighlightModifier {
44 Unsafe, 50 Unsafe,
45 /// Used with keywords like `if` and `break`. 51 /// Used with keywords like `if` and `break`.
46 Control, 52 Control,
47 Builtin,
48} 53}
49 54
50impl HighlightTag { 55impl HighlightTag {
51 fn as_str(self) -> &'static str { 56 fn as_str(self) -> &'static str {
52 match self { 57 match self {
58 HighlightTag::Struct => "struct",
59 HighlightTag::Enum => "enum",
60 HighlightTag::Union => "union",
61 HighlightTag::Trait => "trait",
62 HighlightTag::TypeAlias => "type_alias",
63 HighlightTag::BuiltinType => "builtin_type",
64
53 HighlightTag::Field => "field", 65 HighlightTag::Field => "field",
54 HighlightTag::Function => "function", 66 HighlightTag::Function => "function",
55 HighlightTag::Module => "module", 67 HighlightTag::Module => "module",
56 HighlightTag::Constant => "constant", 68 HighlightTag::Constant => "constant",
57 HighlightTag::Macro => "macro", 69 HighlightTag::Macro => "macro",
58 HighlightTag::Variable => "variable", 70 HighlightTag::Variable => "variable",
59 HighlightTag::Type => "type",
60 HighlightTag::TypeSelf => "type.self", 71 HighlightTag::TypeSelf => "type.self",
61 HighlightTag::TypeParam => "type.param", 72 HighlightTag::TypeParam => "type.param",
62 HighlightTag::TypeLifetime => "type.lifetime", 73 HighlightTag::TypeLifetime => "type.lifetime",
@@ -78,19 +89,14 @@ impl fmt::Display for HighlightTag {
78} 89}
79 90
80impl HighlightModifier { 91impl HighlightModifier {
81 const ALL: &'static [HighlightModifier] = &[ 92 const ALL: &'static [HighlightModifier] =
82 HighlightModifier::Mutable, 93 &[HighlightModifier::Mutable, HighlightModifier::Unsafe, HighlightModifier::Control];
83 HighlightModifier::Unsafe,
84 HighlightModifier::Control,
85 HighlightModifier::Builtin,
86 ];
87 94
88 fn as_str(self) -> &'static str { 95 fn as_str(self) -> &'static str {
89 match self { 96 match self {
90 HighlightModifier::Mutable => "mutable", 97 HighlightModifier::Mutable => "mutable",
91 HighlightModifier::Unsafe => "unsafe", 98 HighlightModifier::Unsafe => "unsafe",
92 HighlightModifier::Control => "control", 99 HighlightModifier::Control => "control",
93 HighlightModifier::Builtin => "builtin",
94 } 100 }
95 } 101 }
96 102