aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbors[bot] <26634292+bors[bot]@users.noreply.github.com>2020-05-24 15:20:22 +0100
committerGitHub <[email protected]>2020-05-24 15:20:22 +0100
commitd959c913eaeae36b9e04c7b5ee8b341f6c5b678b (patch)
tree0bee9dbb6794748dc3aebce59292cbf466010af2
parent7e862626cc892662c3c95ba393483ac89c07e31a (diff)
parent1895888aec1c87096809057b19a602e1cec9ada6 (diff)
Merge #4556
4556: More highlighting improvements r=matthewjasper a=matthewjasper * Separate `true` and `false` from keywords (this matches the Textmate grammar). * Handle more cases in `highlight_name_by_syntax`. Co-authored-by: Matthew Jasper <[email protected]>
-rw-r--r--crates/ra_ide/src/snapshots/highlight_injection.html1
-rw-r--r--crates/ra_ide/src/snapshots/highlight_strings.html1
-rw-r--r--crates/ra_ide/src/snapshots/highlighting.html3
-rw-r--r--crates/ra_ide/src/snapshots/rainbow_highlighting.html1
-rw-r--r--crates/ra_ide/src/syntax_highlighting.rs31
-rw-r--r--crates/ra_ide/src/syntax_highlighting/html.rs1
-rw-r--r--crates/ra_ide/src/syntax_highlighting/tags.rs2
-rw-r--r--crates/rust-analyzer/src/semantic_tokens.rs1
-rw-r--r--crates/rust-analyzer/src/to_proto.rs1
-rw-r--r--editors/code/package.json3
10 files changed, 33 insertions, 12 deletions
diff --git a/crates/ra_ide/src/snapshots/highlight_injection.html b/crates/ra_ide/src/snapshots/highlight_injection.html
index ea026d7a0..68fc589bc 100644
--- a/crates/ra_ide/src/snapshots/highlight_injection.html
+++ b/crates/ra_ide/src/snapshots/highlight_injection.html
@@ -17,6 +17,7 @@ pre { color: #DCDCCC; background: #3F3F3F; font-size: 22px; padd
17.type_param { color: #DFAF8F; } 17.type_param { color: #DFAF8F; }
18.attribute { color: #94BFF3; } 18.attribute { color: #94BFF3; }
19.numeric_literal { color: #BFEBBF; } 19.numeric_literal { color: #BFEBBF; }
20.bool_literal { color: #BFE6EB; }
20.macro { color: #94BFF3; } 21.macro { color: #94BFF3; }
21.module { color: #AFD8AF; } 22.module { color: #AFD8AF; }
22.variable { color: #DCDCCC; } 23.variable { color: #DCDCCC; }
diff --git a/crates/ra_ide/src/snapshots/highlight_strings.html b/crates/ra_ide/src/snapshots/highlight_strings.html
index 752b487e8..326744361 100644
--- a/crates/ra_ide/src/snapshots/highlight_strings.html
+++ b/crates/ra_ide/src/snapshots/highlight_strings.html
@@ -17,6 +17,7 @@ pre { color: #DCDCCC; background: #3F3F3F; font-size: 22px; padd
17.type_param { color: #DFAF8F; } 17.type_param { color: #DFAF8F; }
18.attribute { color: #94BFF3; } 18.attribute { color: #94BFF3; }
19.numeric_literal { color: #BFEBBF; } 19.numeric_literal { color: #BFEBBF; }
20.bool_literal { color: #BFE6EB; }
20.macro { color: #94BFF3; } 21.macro { color: #94BFF3; }
21.module { color: #AFD8AF; } 22.module { color: #AFD8AF; }
22.variable { color: #DCDCCC; } 23.variable { color: #DCDCCC; }
diff --git a/crates/ra_ide/src/snapshots/highlighting.html b/crates/ra_ide/src/snapshots/highlighting.html
index 2ceadf2fc..198139220 100644
--- a/crates/ra_ide/src/snapshots/highlighting.html
+++ b/crates/ra_ide/src/snapshots/highlighting.html
@@ -17,6 +17,7 @@ pre { color: #DCDCCC; background: #3F3F3F; font-size: 22px; padd
17.type_param { color: #DFAF8F; } 17.type_param { color: #DFAF8F; }
18.attribute { color: #94BFF3; } 18.attribute { color: #94BFF3; }
19.numeric_literal { color: #BFEBBF; } 19.numeric_literal { color: #BFEBBF; }
20.bool_literal { color: #BFE6EB; }
20.macro { color: #94BFF3; } 21.macro { color: #94BFF3; }
21.module { color: #AFD8AF; } 22.module { color: #AFD8AF; }
22.variable { color: #DCDCCC; } 23.variable { color: #DCDCCC; }
@@ -64,7 +65,7 @@ pre { color: #DCDCCC; background: #3F3F3F; font-size: 22px; padd
64 <span class="macro">println!</span>(<span class="string_literal">"Hello, {}!"</span>, <span class="numeric_literal">92</span>); 65 <span class="macro">println!</span>(<span class="string_literal">"Hello, {}!"</span>, <span class="numeric_literal">92</span>);
65 66
66 <span class="keyword">let</span> <span class="keyword">mut</span> <span class="variable declaration mutable">vec</span> = <span class="unresolved_reference">Vec</span>::<span class="unresolved_reference">new</span>(); 67 <span class="keyword">let</span> <span class="keyword">mut</span> <span class="variable declaration mutable">vec</span> = <span class="unresolved_reference">Vec</span>::<span class="unresolved_reference">new</span>();
67 <span class="keyword control">if</span> <span class="keyword">true</span> { 68 <span class="keyword control">if</span> <span class="bool_literal">true</span> {
68 <span class="keyword">let</span> <span class="variable declaration">x</span> = <span class="numeric_literal">92</span>; 69 <span class="keyword">let</span> <span class="variable declaration">x</span> = <span class="numeric_literal">92</span>;
69 <span class="variable mutable">vec</span>.<span class="unresolved_reference">push</span>(<span class="struct">Foo</span> { <span class="field">x</span>, <span class="field">y</span>: <span class="numeric_literal">1</span> }); 70 <span class="variable mutable">vec</span>.<span class="unresolved_reference">push</span>(<span class="struct">Foo</span> { <span class="field">x</span>, <span class="field">y</span>: <span class="numeric_literal">1</span> });
70 } 71 }
diff --git a/crates/ra_ide/src/snapshots/rainbow_highlighting.html b/crates/ra_ide/src/snapshots/rainbow_highlighting.html
index 11e1f3e44..2a0294f71 100644
--- a/crates/ra_ide/src/snapshots/rainbow_highlighting.html
+++ b/crates/ra_ide/src/snapshots/rainbow_highlighting.html
@@ -17,6 +17,7 @@ pre { color: #DCDCCC; background: #3F3F3F; font-size: 22px; padd
17.type_param { color: #DFAF8F; } 17.type_param { color: #DFAF8F; }
18.attribute { color: #94BFF3; } 18.attribute { color: #94BFF3; }
19.numeric_literal { color: #BFEBBF; } 19.numeric_literal { color: #BFEBBF; }
20.bool_literal { color: #BFE6EB; }
20.macro { color: #94BFF3; } 21.macro { color: #94BFF3; }
21.module { color: #AFD8AF; } 22.module { color: #AFD8AF; }
22.variable { color: #DCDCCC; } 23.variable { color: #DCDCCC; }
diff --git a/crates/ra_ide/src/syntax_highlighting.rs b/crates/ra_ide/src/syntax_highlighting.rs
index b55cf748d..61aeb28cb 100644
--- a/crates/ra_ide/src/syntax_highlighting.rs
+++ b/crates/ra_ide/src/syntax_highlighting.rs
@@ -413,6 +413,7 @@ fn highlight_element(
413 | T![in] => h | HighlightModifier::ControlFlow, 413 | T![in] => h | HighlightModifier::ControlFlow,
414 T![for] if !is_child_of_impl(element) => h | HighlightModifier::ControlFlow, 414 T![for] if !is_child_of_impl(element) => h | HighlightModifier::ControlFlow,
415 T![unsafe] => h | HighlightModifier::Unsafe, 415 T![unsafe] => h | HighlightModifier::Unsafe,
416 T![true] | T![false] => HighlightTag::BoolLiteral.into(),
416 _ => h, 417 _ => h,
417 } 418 }
418 } 419 }
@@ -480,23 +481,31 @@ fn highlight_name(db: &RootDatabase, def: Definition) -> Highlight {
480} 481}
481 482
482fn highlight_name_by_syntax(name: ast::Name) -> Highlight { 483fn highlight_name_by_syntax(name: ast::Name) -> Highlight {
483 let default = HighlightTag::Function.into(); 484 let default = HighlightTag::UnresolvedReference;
484 485
485 let parent = match name.syntax().parent() { 486 let parent = match name.syntax().parent() {
486 Some(it) => it, 487 Some(it) => it,
487 _ => return default, 488 _ => return default.into(),
488 }; 489 };
489 490
490 match parent.kind() { 491 let tag = match parent.kind() {
491 STRUCT_DEF => HighlightTag::Struct.into(), 492 STRUCT_DEF => HighlightTag::Struct,
492 ENUM_DEF => HighlightTag::Enum.into(), 493 ENUM_DEF => HighlightTag::Enum,
493 UNION_DEF => HighlightTag::Union.into(), 494 UNION_DEF => HighlightTag::Union,
494 TRAIT_DEF => HighlightTag::Trait.into(), 495 TRAIT_DEF => HighlightTag::Trait,
495 TYPE_ALIAS_DEF => HighlightTag::TypeAlias.into(), 496 TYPE_ALIAS_DEF => HighlightTag::TypeAlias,
496 TYPE_PARAM => HighlightTag::TypeParam.into(), 497 TYPE_PARAM => HighlightTag::TypeParam,
497 RECORD_FIELD_DEF => HighlightTag::Field.into(), 498 RECORD_FIELD_DEF => HighlightTag::Field,
499 MODULE => HighlightTag::Module,
500 FN_DEF => HighlightTag::Function,
501 CONST_DEF => HighlightTag::Constant,
502 STATIC_DEF => HighlightTag::Static,
503 ENUM_VARIANT => HighlightTag::EnumVariant,
504 BIND_PAT => HighlightTag::Local,
498 _ => default, 505 _ => default,
499 } 506 };
507
508 tag.into()
500} 509}
501 510
502fn highlight_injection( 511fn highlight_injection(
diff --git a/crates/ra_ide/src/syntax_highlighting/html.rs b/crates/ra_ide/src/syntax_highlighting/html.rs
index ff0eeeb52..edfe61f39 100644
--- a/crates/ra_ide/src/syntax_highlighting/html.rs
+++ b/crates/ra_ide/src/syntax_highlighting/html.rs
@@ -76,6 +76,7 @@ pre { color: #DCDCCC; background: #3F3F3F; font-size: 22px; padd
76.type_param { color: #DFAF8F; } 76.type_param { color: #DFAF8F; }
77.attribute { color: #94BFF3; } 77.attribute { color: #94BFF3; }
78.numeric_literal { color: #BFEBBF; } 78.numeric_literal { color: #BFEBBF; }
79.bool_literal { color: #BFE6EB; }
79.macro { color: #94BFF3; } 80.macro { color: #94BFF3; }
80.module { color: #AFD8AF; } 81.module { color: #AFD8AF; }
81.variable { color: #DCDCCC; } 82.variable { color: #DCDCCC; }
diff --git a/crates/ra_ide/src/syntax_highlighting/tags.rs b/crates/ra_ide/src/syntax_highlighting/tags.rs
index 33e6619ec..09652a5b1 100644
--- a/crates/ra_ide/src/syntax_highlighting/tags.rs
+++ b/crates/ra_ide/src/syntax_highlighting/tags.rs
@@ -15,6 +15,7 @@ pub struct HighlightModifiers(u32);
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 Attribute, 17 Attribute,
18 BoolLiteral,
18 BuiltinType, 19 BuiltinType,
19 ByteLiteral, 20 ByteLiteral,
20 CharLiteral, 21 CharLiteral,
@@ -60,6 +61,7 @@ impl HighlightTag {
60 fn as_str(self) -> &'static str { 61 fn as_str(self) -> &'static str {
61 match self { 62 match self {
62 HighlightTag::Attribute => "attribute", 63 HighlightTag::Attribute => "attribute",
64 HighlightTag::BoolLiteral => "bool_literal",
63 HighlightTag::BuiltinType => "builtin_type", 65 HighlightTag::BuiltinType => "builtin_type",
64 HighlightTag::ByteLiteral => "byte_literal", 66 HighlightTag::ByteLiteral => "byte_literal",
65 HighlightTag::CharLiteral => "char_literal", 67 HighlightTag::CharLiteral => "char_literal",
diff --git a/crates/rust-analyzer/src/semantic_tokens.rs b/crates/rust-analyzer/src/semantic_tokens.rs
index 90a6257ee..9b775871f 100644
--- a/crates/rust-analyzer/src/semantic_tokens.rs
+++ b/crates/rust-analyzer/src/semantic_tokens.rs
@@ -36,6 +36,7 @@ macro_rules! define_semantic_token_types {
36 36
37define_semantic_token_types![ 37define_semantic_token_types![
38 (ATTRIBUTE, "attribute"), 38 (ATTRIBUTE, "attribute"),
39 (BOOLEAN, "boolean"),
39 (BUILTIN_TYPE, "builtinType"), 40 (BUILTIN_TYPE, "builtinType"),
40 (ENUM_MEMBER, "enumMember"), 41 (ENUM_MEMBER, "enumMember"),
41 (LIFETIME, "lifetime"), 42 (LIFETIME, "lifetime"),
diff --git a/crates/rust-analyzer/src/to_proto.rs b/crates/rust-analyzer/src/to_proto.rs
index 672e47e41..81a347247 100644
--- a/crates/rust-analyzer/src/to_proto.rs
+++ b/crates/rust-analyzer/src/to_proto.rs
@@ -295,6 +295,7 @@ fn semantic_token_type_and_modifiers(
295 HighlightTag::ByteLiteral | HighlightTag::NumericLiteral => { 295 HighlightTag::ByteLiteral | HighlightTag::NumericLiteral => {
296 lsp_types::SemanticTokenType::NUMBER 296 lsp_types::SemanticTokenType::NUMBER
297 } 297 }
298 HighlightTag::BoolLiteral => semantic_tokens::BOOLEAN,
298 HighlightTag::CharLiteral | HighlightTag::StringLiteral => { 299 HighlightTag::CharLiteral | HighlightTag::StringLiteral => {
299 lsp_types::SemanticTokenType::STRING 300 lsp_types::SemanticTokenType::STRING
300 } 301 }
diff --git a/editors/code/package.json b/editors/code/package.json
index 578ee8b0e..21039ced8 100644
--- a/editors/code/package.json
+++ b/editors/code/package.json
@@ -644,6 +644,9 @@
644 "function.attribute": [ 644 "function.attribute": [
645 "entity.name.function.attribute.rust" 645 "entity.name.function.attribute.rust"
646 ], 646 ],
647 "boolean": [
648 "constant.language.boolean.rust"
649 ],
647 "builtinType": [ 650 "builtinType": [
648 "support.type.primitive.rust" 651 "support.type.primitive.rust"
649 ], 652 ],