diff options
author | Leander Tentrup <[email protected]> | 2020-06-19 23:02:42 +0100 |
---|---|---|
committer | Leander Tentrup <[email protected]> | 2020-06-19 23:02:42 +0100 |
commit | df5b37cb612664985f1ba0a24280621809bd5533 (patch) | |
tree | 44ffaf8580e547ad6676ca5bda5d19209eb8aae6 /crates/ra_ide/src | |
parent | 491eda61e30c90329e18f49499278fe3d7e9ccad (diff) |
Syntax highlighting for documentation comments on macro definitions
Diffstat (limited to 'crates/ra_ide/src')
-rw-r--r-- | crates/ra_ide/src/snapshots/highlight_doctest.html | 9 | ||||
-rw-r--r-- | crates/ra_ide/src/syntax_highlighting.rs | 3 | ||||
-rw-r--r-- | crates/ra_ide/src/syntax_highlighting/tests.rs | 9 |
3 files changed, 19 insertions, 2 deletions
diff --git a/crates/ra_ide/src/snapshots/highlight_doctest.html b/crates/ra_ide/src/snapshots/highlight_doctest.html index f61c0daa5..63199cdbe 100644 --- a/crates/ra_ide/src/snapshots/highlight_doctest.html +++ b/crates/ra_ide/src/snapshots/highlight_doctest.html | |||
@@ -84,4 +84,13 @@ pre { color: #DCDCCC; background: #3F3F3F; font-size: 22px; padd | |||
84 | <span class="keyword">pub</span> <span class="keyword">fn</span> <span class="function declaration">foo</span>(&<span class="self_keyword">self</span>) -> <span class="builtin_type">bool</span> { | 84 | <span class="keyword">pub</span> <span class="keyword">fn</span> <span class="function declaration">foo</span>(&<span class="self_keyword">self</span>) -> <span class="builtin_type">bool</span> { |
85 | <span class="bool_literal">true</span> | 85 | <span class="bool_literal">true</span> |
86 | } | 86 | } |
87 | } | ||
88 | |||
89 | <span class="comment documentation">/// ```</span> | ||
90 | <span class="comment documentation">/// </span><span class="macro">noop!</span>(<span class="numeric_literal">1</span>); | ||
91 | <span class="comment documentation">/// ```</span> | ||
92 | <span class="macro">macro_rules!</span> <span class="macro declaration">noop</span> { | ||
93 | ($expr:expr) => { | ||
94 | $expr | ||
95 | } | ||
87 | }</code></pre> \ No newline at end of file | 96 | }</code></pre> \ 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 f8f790e59..448645bdc 100644 --- a/crates/ra_ide/src/syntax_highlighting.rs +++ b/crates/ra_ide/src/syntax_highlighting.rs | |||
@@ -121,7 +121,6 @@ pub(crate) fn highlight( | |||
121 | assert!(current_macro_call == Some(mc)); | 121 | assert!(current_macro_call == Some(mc)); |
122 | current_macro_call = None; | 122 | current_macro_call = None; |
123 | format_string = None; | 123 | format_string = None; |
124 | continue; | ||
125 | } | 124 | } |
126 | _ => (), | 125 | _ => (), |
127 | } | 126 | } |
@@ -150,7 +149,7 @@ pub(crate) fn highlight( | |||
150 | 149 | ||
151 | let range = element.text_range(); | 150 | let range = element.text_range(); |
152 | 151 | ||
153 | let element_to_highlight = if current_macro_call.is_some() { | 152 | let element_to_highlight = if current_macro_call.is_some() && element.kind() != COMMENT { |
154 | // Inside a macro -- expand it first | 153 | // Inside a macro -- expand it first |
155 | let token = match element.clone().into_token() { | 154 | let token = match element.clone().into_token() { |
156 | Some(it) if it.parent().kind() == TOKEN_TREE => it, | 155 | Some(it) if it.parent().kind() == TOKEN_TREE => it, |
diff --git a/crates/ra_ide/src/syntax_highlighting/tests.rs b/crates/ra_ide/src/syntax_highlighting/tests.rs index b4d56a7a0..93a276ffe 100644 --- a/crates/ra_ide/src/syntax_highlighting/tests.rs +++ b/crates/ra_ide/src/syntax_highlighting/tests.rs | |||
@@ -344,6 +344,15 @@ impl Foo { | |||
344 | true | 344 | true |
345 | } | 345 | } |
346 | } | 346 | } |
347 | |||
348 | /// ``` | ||
349 | /// noop!(1); | ||
350 | /// ``` | ||
351 | macro_rules! noop { | ||
352 | ($expr:expr) => { | ||
353 | $expr | ||
354 | } | ||
355 | } | ||
347 | "# | 356 | "# |
348 | .trim(), | 357 | .trim(), |
349 | "crates/ra_ide/src/snapshots/highlight_doctest.html", | 358 | "crates/ra_ide/src/snapshots/highlight_doctest.html", |