@@ -42,24 +42,94 @@ pub struct HlRange {
42
42
// Feature: Semantic Syntax Highlighting
43
43
//
44
44
// rust-analyzer highlights the code semantically.
45
- // For example, `bar ` in `foo::Bar` might be colored differently depending on whether `Bar` is an enum or a trait.
46
- // rust-analyzer does not specify colors directly, instead it assigns tag (like `struct`) and a set of modifiers (like `declaration`) to each token.
45
+ // For example, `Bar ` in `foo::Bar` might be colored differently depending on whether `Bar` is an enum or a trait.
46
+ // rust-analyzer does not specify colors directly, instead it assigns a tag (like `struct`) and a set of modifiers (like `declaration`) to each token.
47
47
// It's up to the client to map those to specific colors.
48
48
//
49
49
// The general rule is that a reference to an entity gets colored the same way as the entity itself.
50
50
// We also give special modifier for `mut` and `&mut` local variables.
51
51
//
52
+ //
53
+ // .Token Tags
54
+ //
55
+ // Rust-analyzer currently emits the following token tags:
56
+ //
57
+ // - For items:
58
+ // +
59
+ // [horizontal]
60
+ // enum:: Emitted for enums.
61
+ // function:: Emitted for free-standing functions.
62
+ // macro:: Emitted for macros.
63
+ // method:: Emitted for associated functions, also knowns as methods.
64
+ // namespace:: Emitted for modules.
65
+ // struct:: Emitted for structs.
66
+ // trait:: Emitted for traits.
67
+ // typeAlias:: Emitted for type aliases and `Self` in `impl`s.
68
+ // union:: Emitted for unions.
69
+ //
70
+ // - For literals:
71
+ // +
72
+ // [horizontal]
73
+ // boolean:: Emitted for the boolean literals `true` and `false`.
74
+ // character:: Emitted for character literals.
75
+ // number:: Emitted for numeric literals.
76
+ // string:: Emitted for string literals.
77
+ // escapeSequence:: Emitted for escaped sequences inside strings like `\n`.
78
+ // formatSpecifier:: Emitted for format specifiers `{:?}` in `format!`-like macros.
79
+ //
80
+ // - For operators:
81
+ // +
82
+ // [horizontal]
83
+ // operator:: Emitted for general operators.
84
+ // arithmetic:: Emitted for the arithmetic operators `+`, `-`, `*`, `/`, `+=`, `-=`, `*=`, `/=`.
85
+ // bitwise:: Emitted for the bitwise operators `|`, `&`, `!`, `^`, `|=`, `&=`, `^=`.
86
+ // comparison:: Emitted for the comparison operators `>`, `<`, `==`, `>=`, `<=`, `!=`.
87
+ // logical:: Emitted for the logical operators `||`, `&&`, `!`.
88
+ //
89
+ // - For punctuation:
90
+ // +
91
+ // [horizontal]
92
+ // punctuation:: Emitted for general punctuation.
93
+ // angle:: Emitted for `<>` angle brackets.
94
+ // brace:: Emitted for `{}` braces.
95
+ // bracket:: Emitted for `[]` brackets.
96
+ // parenthesis:: Emitted for `()` parentheses.
97
+ // colon:: Emitted for the `:` token.
98
+ // comma:: Emitted for the `,` token.
99
+ // dot:: Emitted for the `.` token.
100
+ // Semi:: Emitted for the `;` token.
101
+ //
102
+ // //-
103
+ //
104
+ // [horizontal]
105
+ // attribute:: Emitted for attributes.
106
+ // builtinType:: Emitted for builtin types like `u32`, `str` and `f32`.
107
+ // comment:: Emitted for comments.
108
+ // constParameter:: Emitted for const parameters.
109
+ // enumMember:: Emitted for enum variants.
110
+ // generic:: Emitted for generic tokens that have no mapping.
111
+ // keyword:: Emitted for keywords.
112
+ // label:: Emitted for labels.
113
+ // lifetime:: Emitted for lifetimes.
114
+ // parameter:: Emitted for non-self function parameters.
115
+ // property:: Emitted for struct and union fields.
116
+ // selfKeyword:: Emitted for the self function parameter and self path-specifier.
117
+ // typeParameter:: Emitted for type parameters.
118
+ // unresolvedReference:: Emitted for unresolved references, names that rust-analyzer can't find the definition of.
119
+ // variable:: Emitted for locals, constants and statics.
120
+ //
121
+ //
52
122
// .Token Modifiers
53
123
//
54
124
// Token modifiers allow to style some elements in the source code more precisely.
55
125
//
56
126
// Rust-analyzer currently emits the following token modifiers:
57
127
//
58
128
// [horizontal]
59
- // associated:: Emitted for associated items.
60
129
// async:: Emitted for async functions and the `async` and `await` keywords.
61
130
// attribute:: Emitted for tokens inside attributes.
62
131
// callable:: Emitted for locals whose types implements one of the `Fn*` traits.
132
+ // constant:: Emitted for consts.
63
133
// consuming:: Emitted for locals that are being consumed when use in a function call.
64
134
// controlFlow:: Emitted for control-flow related tokens, this includes the `?` operator.
65
135
// declaration:: Emitted for names of definitions, like `foo` in `fn foo() {}`.
@@ -68,7 +138,7 @@ pub struct HlRange {
68
138
// intraDocLink:: Emitted for intra doc links in doc-strings.
69
139
// library:: Emitted for items that are defined outside of the current crate.
70
140
// mutable:: Emitted for mutable locals and statics.
71
- // static:: Emitted for "static" functions, also known as functions that do not take a `self` param.
141
+ // static:: Emitted for "static" functions, also known as functions that do not take a `self` param, as well as statics and consts .
72
142
// trait:: Emitted for associated trait items.
73
143
// unsafe:: Emitted for unsafe operations, like unsafe function calls, as well as the `unsafe` token.
74
144
//
0 commit comments