diff --git a/crates/ra_ide/src/snapshots/highlighting.html b/crates/ra_ide/src/snapshots/highlighting.html
index 4166a8f90d4..40605d9efdf 100644
--- a/crates/ra_ide/src/snapshots/highlighting.html
+++ b/crates/ra_ide/src/snapshots/highlighting.html
@@ -10,8 +10,10 @@ pre { color: #DCDCCC; background: #3F3F3F; font-size: 22px; padd
.builtin { color: #DD6718; }
.text { color: #DCDCCC; }
.type { color: #7CB8BB; }
+.type\.param { color: #20999D; }
.attribute { color: #94BFF3; }
.literal { color: #BFEBBF; }
+.literal\.numeric { color: #6A8759; }
.macro { color: #94BFF3; }
.variable { color: #DCDCCC; }
.variable\.mut { color: #DCDCCC; text-decoration: underline; }
@@ -22,36 +24,36 @@ pre { color: #DCDCCC; background: #3F3F3F; font-size: 22px; padd
#[derive(Clone, Debug)]
struct Foo {
- pub x: i32,
- pub y: i32,
+ pub x: i32,
+ pub y: i32,
}
-fn foo<T>() -> T {
+fn foo<T>() -> T {
unimplemented!();
- foo::<i32>();
+ foo::<i32>();
}
fn main() {
- println!("Hello, {}!", 92);
+ println!("Hello, {}!", 92);
let mut vec = Vec::new();
if true {
- vec.push(Foo { x: 0, y: 1 });
+ vec.push(Foo { x: 0, 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/syntax_highlighting.rs b/crates/ra_ide/src/syntax_highlighting.rs
index 7be25b234fb..235e09ffca5 100644
--- a/crates/ra_ide/src/syntax_highlighting.rs
+++ b/crates/ra_ide/src/syntax_highlighting.rs
@@ -118,7 +118,7 @@ fn hash(x: T) -> u64 {
INT_NUMBER | FLOAT_NUMBER => "literal.numeric",
BYTE => "literal.byte",
CHAR => "literal.char",
- LIFETIME => "lifetime",
+ LIFETIME => "type.lifetime",
T![unsafe] => "keyword.unsafe",
k if is_control_keyword(k) => "keyword.control",
k if k.is_keyword() => "keyword",
@@ -218,7 +218,7 @@ fn highlight_name(db: &RootDatabase, name_kind: NameKind) -> &'static str {
Field(_) => "field",
AssocItem(hir::AssocItem::Function(_)) => "function",
AssocItem(hir::AssocItem::Const(_)) => "constant",
- AssocItem(hir::AssocItem::TypeAlias(_)) => "type.alias",
+ AssocItem(hir::AssocItem::TypeAlias(_)) => "type",
Def(hir::ModuleDef::Module(_)) => "module",
Def(hir::ModuleDef::Function(_)) => "function",
Def(hir::ModuleDef::Adt(_)) => "type",
@@ -259,8 +259,10 @@ fn html_escape(text: &str) -> String {
.builtin { color: #DD6718; }
.text { color: #DCDCCC; }
.type { color: #7CB8BB; }
+.type\\.param { color: #20999D; }
.attribute { color: #94BFF3; }
.literal { color: #BFEBBF; }
+.literal\\.numeric { color: #6A8759; }
.macro { color: #94BFF3; }
.variable { color: #DCDCCC; }
.variable\\.mut { color: #DCDCCC; text-decoration: underline; }
diff --git a/editors/code/package.json b/editors/code/package.json
index c24e73d24f6..68b3b6e0563 100644
--- a/editors/code/package.json
+++ b/editors/code/package.json
@@ -485,6 +485,15 @@
"highContrast": "#4EC9B0"
}
},
+ {
+ "id": "ralsp.type.lifetime",
+ "description": "Color for `Self` param type",
+ "defaults": {
+ "dark": "#4EC9B0",
+ "light": "#267F99",
+ "highContrast": "#4EC9B0"
+ }
+ },
{
"id": "ralsp.type.self",
"description": "Color for `Self` param type",
diff --git a/editors/code/src/highlighting.ts b/editors/code/src/highlighting.ts
index 2c8a98aa695..d7c0ae1316a 100644
--- a/editors/code/src/highlighting.ts
+++ b/editors/code/src/highlighting.ts
@@ -56,6 +56,7 @@ export class Highlighter {
decoration('type.self'),
decoration('type.generic'),
decoration('type.param'),
+ decoration('type.lifetime'),
decoration('builtin'),
decoration('text'),
decoration('attribute'),