diff options
author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2021-03-28 16:43:11 +0100 |
---|---|---|
committer | GitHub <[email protected]> | 2021-03-28 16:43:11 +0100 |
commit | bb1d925dab36372c6bd1fb5671bb68ce938ff009 (patch) | |
tree | ad32fbab8caf6563961b1366c726d8323fb303f5 /crates/ide/src/syntax_highlighting.rs | |
parent | ce6bb5ccca48b177f6cd12b42b4c52f3e1b44e0c (diff) | |
parent | 772987911851d6480ec8c905c0cac1e2f881152c (diff) |
Merge #8212
8212: Basic support macro 2.0 r=jonas-schievink a=edwin0cheng
Turn out it is quite straight forward :)
r @jonas-schievink
![m2](https://user-images.githubusercontent.com/11014119/112712565-6eb99380-8f0b-11eb-88de-5d7f974dfe6d.png)
Co-authored-by: Edwin Cheng <[email protected]>
Diffstat (limited to 'crates/ide/src/syntax_highlighting.rs')
-rw-r--r-- | crates/ide/src/syntax_highlighting.rs | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/crates/ide/src/syntax_highlighting.rs b/crates/ide/src/syntax_highlighting.rs index e25b698e0..67a10766b 100644 --- a/crates/ide/src/syntax_highlighting.rs +++ b/crates/ide/src/syntax_highlighting.rs | |||
@@ -5,7 +5,7 @@ mod injector; | |||
5 | 5 | ||
6 | mod highlight; | 6 | mod highlight; |
7 | mod format; | 7 | mod format; |
8 | mod macro_rules; | 8 | mod macro_; |
9 | mod inject; | 9 | mod inject; |
10 | 10 | ||
11 | mod html; | 11 | mod html; |
@@ -24,8 +24,8 @@ use syntax::{ | |||
24 | 24 | ||
25 | use crate::{ | 25 | use crate::{ |
26 | syntax_highlighting::{ | 26 | syntax_highlighting::{ |
27 | format::highlight_format_string, highlights::Highlights, | 27 | format::highlight_format_string, highlights::Highlights, macro_::MacroHighlighter, |
28 | macro_rules::MacroRulesHighlighter, tags::Highlight, | 28 | tags::Highlight, |
29 | }, | 29 | }, |
30 | FileId, HlMod, HlTag, | 30 | FileId, HlMod, HlTag, |
31 | }; | 31 | }; |
@@ -93,8 +93,8 @@ fn traverse( | |||
93 | let mut bindings_shadow_count: FxHashMap<Name, u32> = FxHashMap::default(); | 93 | let mut bindings_shadow_count: FxHashMap<Name, u32> = FxHashMap::default(); |
94 | 94 | ||
95 | let mut current_macro_call: Option<ast::MacroCall> = None; | 95 | let mut current_macro_call: Option<ast::MacroCall> = None; |
96 | let mut current_macro_rules: Option<ast::MacroRules> = None; | 96 | let mut current_macro: Option<ast::Macro> = None; |
97 | let mut macro_rules_highlighter = MacroRulesHighlighter::default(); | 97 | let mut macro_highlighter = MacroHighlighter::default(); |
98 | let mut inside_attribute = false; | 98 | let mut inside_attribute = false; |
99 | 99 | ||
100 | // Walk all nodes, keeping track of whether we are inside a macro or not. | 100 | // Walk all nodes, keeping track of whether we are inside a macro or not. |
@@ -129,16 +129,16 @@ fn traverse( | |||
129 | _ => (), | 129 | _ => (), |
130 | } | 130 | } |
131 | 131 | ||
132 | match event.clone().map(|it| it.into_node().and_then(ast::MacroRules::cast)) { | 132 | match event.clone().map(|it| it.into_node().and_then(ast::Macro::cast)) { |
133 | WalkEvent::Enter(Some(mac)) => { | 133 | WalkEvent::Enter(Some(mac)) => { |
134 | macro_rules_highlighter.init(); | 134 | macro_highlighter.init(); |
135 | current_macro_rules = Some(mac); | 135 | current_macro = Some(mac); |
136 | continue; | 136 | continue; |
137 | } | 137 | } |
138 | WalkEvent::Leave(Some(mac)) => { | 138 | WalkEvent::Leave(Some(mac)) => { |
139 | assert_eq!(current_macro_rules, Some(mac)); | 139 | assert_eq!(current_macro, Some(mac)); |
140 | current_macro_rules = None; | 140 | current_macro = None; |
141 | macro_rules_highlighter = MacroRulesHighlighter::default(); | 141 | macro_highlighter = MacroHighlighter::default(); |
142 | } | 142 | } |
143 | _ => (), | 143 | _ => (), |
144 | } | 144 | } |
@@ -164,9 +164,9 @@ fn traverse( | |||
164 | 164 | ||
165 | let range = element.text_range(); | 165 | let range = element.text_range(); |
166 | 166 | ||
167 | if current_macro_rules.is_some() { | 167 | if current_macro.is_some() { |
168 | if let Some(tok) = element.as_token() { | 168 | if let Some(tok) = element.as_token() { |
169 | macro_rules_highlighter.advance(tok); | 169 | macro_highlighter.advance(tok); |
170 | } | 170 | } |
171 | } | 171 | } |
172 | 172 | ||
@@ -200,7 +200,7 @@ fn traverse( | |||
200 | } | 200 | } |
201 | } | 201 | } |
202 | 202 | ||
203 | if let Some(_) = macro_rules_highlighter.highlight(element_to_highlight.clone()) { | 203 | if let Some(_) = macro_highlighter.highlight(element_to_highlight.clone()) { |
204 | continue; | 204 | continue; |
205 | } | 205 | } |
206 | 206 | ||