Skip to content

Commit 31ad347

Browse files
Merge #11644
11644: Emit more detailed highlighting for `%`, `>>`, `<<` r=Veykril a=arzg These are currently just given `operator`, when `%` can be grouped under `arithmetic`, and `>>` and `<<` can be grouped under `bitwise`. Co-authored-by: Luna Razzaghipour <[email protected]>
2 parents 5fae65d + 6da1228 commit 31ad347

File tree

3 files changed

+85
-4
lines changed

3 files changed

+85
-4
lines changed

crates/ide/src/syntax_highlighting/highlight.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -123,12 +123,12 @@ fn punctuation(sema: &Semantics<RootDatabase>, token: SyntaxToken, kind: SyntaxK
123123
}
124124
.into()
125125
}
126-
(T![+] | T![-] | T![*] | T![/], BIN_EXPR) => HlOperator::Arithmetic.into(),
127-
(T![+=] | T![-=] | T![*=] | T![/=], BIN_EXPR) => {
126+
(T![+] | T![-] | T![*] | T![/] | T![%], BIN_EXPR) => HlOperator::Arithmetic.into(),
127+
(T![+=] | T![-=] | T![*=] | T![/=] | T![%=], BIN_EXPR) => {
128128
Highlight::from(HlOperator::Arithmetic) | HlMod::Mutable
129129
}
130-
(T![|] | T![&] | T![!] | T![^], BIN_EXPR) => HlOperator::Bitwise.into(),
131-
(T![|=] | T![&=] | T![^=], BIN_EXPR) => {
130+
(T![|] | T![&] | T![!] | T![^] | T![>>] | T![<<], BIN_EXPR) => HlOperator::Bitwise.into(),
131+
(T![|=] | T![&=] | T![^=] | T![>>=] | T![<<=], BIN_EXPR) => {
132132
Highlight::from(HlOperator::Bitwise) | HlMod::Mutable
133133
}
134134
(T![&&] | T![||], BIN_EXPR) => HlOperator::Logical.into(),
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
2+
<style>
3+
body { margin: 0; }
4+
pre { color: #DCDCCC; background: #3F3F3F; font-size: 22px; padding: 0.4em; }
5+
6+
.lifetime { color: #DFAF8F; font-style: italic; }
7+
.label { color: #DFAF8F; font-style: italic; }
8+
.comment { color: #7F9F7F; }
9+
.documentation { color: #629755; }
10+
.intra_doc_link { font-style: italic; }
11+
.injected { opacity: 0.65 ; }
12+
.struct, .enum { color: #7CB8BB; }
13+
.enum_variant { color: #BDE0F3; }
14+
.string_literal { color: #CC9393; }
15+
.field { color: #94BFF3; }
16+
.function { color: #93E0E3; }
17+
.function.unsafe { color: #BC8383; }
18+
.trait.unsafe { color: #BC8383; }
19+
.operator.unsafe { color: #BC8383; }
20+
.mutable.unsafe { color: #BC8383; text-decoration: underline; }
21+
.keyword.unsafe { color: #BC8383; font-weight: bold; }
22+
.parameter { color: #94BFF3; }
23+
.text { color: #DCDCCC; }
24+
.type { color: #7CB8BB; }
25+
.builtin_type { color: #8CD0D3; }
26+
.type_param { color: #DFAF8F; }
27+
.attribute { color: #94BFF3; }
28+
.numeric_literal { color: #BFEBBF; }
29+
.bool_literal { color: #BFE6EB; }
30+
.macro { color: #94BFF3; }
31+
.derive { color: #94BFF3; font-style: italic; }
32+
.module { color: #AFD8AF; }
33+
.value_param { color: #DCDCCC; }
34+
.variable { color: #DCDCCC; }
35+
.format_specifier { color: #CC696B; }
36+
.mutable { text-decoration: underline; }
37+
.escape_sequence { color: #94BFF3; }
38+
.keyword { color: #F0DFAF; font-weight: bold; }
39+
.control { font-style: italic; }
40+
.reference { font-style: italic; font-weight: bold; }
41+
42+
.unresolved_reference { color: #FC5555; text-decoration: wavy underline; }
43+
</style>
44+
<pre><code><span class="keyword">fn</span> <span class="function declaration">main</span><span class="parenthesis">(</span><span class="parenthesis">)</span> <span class="brace">{</span>
45+
<span class="numeric_literal">1</span> <span class="arithmetic">+</span> <span class="numeric_literal">1</span> <span class="arithmetic">-</span> <span class="numeric_literal">1</span> <span class="arithmetic">*</span> <span class="numeric_literal">1</span> <span class="arithmetic">/</span> <span class="numeric_literal">1</span> <span class="arithmetic">%</span> <span class="numeric_literal">1</span> <span class="bitwise">|</span> <span class="numeric_literal">1</span> <span class="bitwise">&</span> <span class="numeric_literal">1</span> <span class="logical">!</span> <span class="numeric_literal">1</span> <span class="bitwise">^</span> <span class="numeric_literal">1</span> <span class="bitwise">&gt;&gt;</span> <span class="numeric_literal">1</span> <span class="bitwise">&lt;&lt;</span> <span class="numeric_literal">1</span><span class="semicolon">;</span>
46+
<span class="keyword">let</span> <span class="keyword">mut</span> <span class="variable declaration mutable">a</span> <span class="operator">=</span> <span class="numeric_literal">0</span><span class="semicolon">;</span>
47+
<span class="variable mutable">a</span> <span class="arithmetic mutable">+=</span> <span class="numeric_literal">1</span><span class="semicolon">;</span>
48+
<span class="variable mutable">a</span> <span class="arithmetic mutable">-=</span> <span class="numeric_literal">1</span><span class="semicolon">;</span>
49+
<span class="variable mutable">a</span> <span class="arithmetic mutable">*=</span> <span class="numeric_literal">1</span><span class="semicolon">;</span>
50+
<span class="variable mutable">a</span> <span class="arithmetic mutable">/=</span> <span class="numeric_literal">1</span><span class="semicolon">;</span>
51+
<span class="variable mutable">a</span> <span class="arithmetic mutable">%=</span> <span class="numeric_literal">1</span><span class="semicolon">;</span>
52+
<span class="variable mutable">a</span> <span class="bitwise mutable">|=</span> <span class="numeric_literal">1</span><span class="semicolon">;</span>
53+
<span class="variable mutable">a</span> <span class="bitwise mutable">&=</span> <span class="numeric_literal">1</span><span class="semicolon">;</span>
54+
<span class="variable mutable">a</span> <span class="bitwise mutable">^=</span> <span class="numeric_literal">1</span><span class="semicolon">;</span>
55+
<span class="variable mutable">a</span> <span class="bitwise mutable">&gt;&gt;=</span> <span class="numeric_literal">1</span><span class="semicolon">;</span>
56+
<span class="variable mutable">a</span> <span class="bitwise mutable">&lt;&lt;=</span> <span class="numeric_literal">1</span><span class="semicolon">;</span>
57+
<span class="brace">}</span></code></pre>

crates/ide/src/syntax_highlighting/tests.rs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -841,6 +841,30 @@ fn foo() {
841841
);
842842
}
843843

844+
#[test]
845+
fn test_operators() {
846+
check_highlighting(
847+
r##"
848+
fn main() {
849+
1 + 1 - 1 * 1 / 1 % 1 | 1 & 1 ! 1 ^ 1 >> 1 << 1;
850+
let mut a = 0;
851+
a += 1;
852+
a -= 1;
853+
a *= 1;
854+
a /= 1;
855+
a %= 1;
856+
a |= 1;
857+
a &= 1;
858+
a ^= 1;
859+
a >>= 1;
860+
a <<= 1;
861+
}
862+
"##,
863+
expect_file!["./test_data/highlight_operators.html"],
864+
false,
865+
);
866+
}
867+
844868
#[test]
845869
fn test_rainbow_highlighting() {
846870
check_highlighting(

0 commit comments

Comments
 (0)