diff options
author | Aleksey Kladov <[email protected]> | 2018-12-31 16:06:00 +0000 |
---|---|---|
committer | Aleksey Kladov <[email protected]> | 2018-12-31 16:06:00 +0000 |
commit | 862c99d0d5ef7c791a9319fa76c436762d88460c (patch) | |
tree | 8430cf52c1d20f32b675274422c3fa97dab841b0 | |
parent | f1e8ebfbeb5f84405fb609e3841df02e270037c4 (diff) |
generalize highlighting to work with nodes
-rw-r--r-- | crates/ra_analysis/src/syntax_highlighting.rs | 4 | ||||
-rw-r--r-- | crates/ra_editor/src/lib.rs | 6 |
2 files changed, 5 insertions, 5 deletions
diff --git a/crates/ra_analysis/src/syntax_highlighting.rs b/crates/ra_analysis/src/syntax_highlighting.rs index 38219da71..7e9139a74 100644 --- a/crates/ra_analysis/src/syntax_highlighting.rs +++ b/crates/ra_analysis/src/syntax_highlighting.rs | |||
@@ -9,14 +9,14 @@ use crate::{ | |||
9 | 9 | ||
10 | pub(crate) fn highlight(db: &RootDatabase, file_id: FileId) -> Cancelable<Vec<HighlightedRange>> { | 10 | pub(crate) fn highlight(db: &RootDatabase, file_id: FileId) -> Cancelable<Vec<HighlightedRange>> { |
11 | let source_file = db.source_file(file_id); | 11 | let source_file = db.source_file(file_id); |
12 | let mut res = ra_editor::highlight(&source_file); | 12 | let mut res = ra_editor::highlight(source_file.syntax()); |
13 | for macro_call in source_file | 13 | for macro_call in source_file |
14 | .syntax() | 14 | .syntax() |
15 | .descendants() | 15 | .descendants() |
16 | .filter_map(ast::MacroCall::cast) | 16 | .filter_map(ast::MacroCall::cast) |
17 | { | 17 | { |
18 | if let Some(exp) = crate::macros::expand(db, file_id, macro_call) { | 18 | if let Some(exp) = crate::macros::expand(db, file_id, macro_call) { |
19 | let mapped_ranges = ra_editor::highlight(exp.source_file()) | 19 | let mapped_ranges = ra_editor::highlight(exp.source_file().syntax()) |
20 | .into_iter() | 20 | .into_iter() |
21 | .filter_map(|r| { | 21 | .filter_map(|r| { |
22 | let mapped_range = exp.map_range_back(r.range)?; | 22 | let mapped_range = exp.map_range_back(r.range)?; |
diff --git a/crates/ra_editor/src/lib.rs b/crates/ra_editor/src/lib.rs index a65637d52..a293fec34 100644 --- a/crates/ra_editor/src/lib.rs +++ b/crates/ra_editor/src/lib.rs | |||
@@ -79,11 +79,11 @@ pub fn matching_brace(file: &SourceFileNode, offset: TextUnit) -> Option<TextUni | |||
79 | Some(matching_node.range().start()) | 79 | Some(matching_node.range().start()) |
80 | } | 80 | } |
81 | 81 | ||
82 | pub fn highlight(file: &SourceFileNode) -> Vec<HighlightedRange> { | 82 | pub fn highlight(root: SyntaxNodeRef) -> Vec<HighlightedRange> { |
83 | // Visited nodes to handle highlighting priorities | 83 | // Visited nodes to handle highlighting priorities |
84 | let mut highlighted = FxHashSet::default(); | 84 | let mut highlighted = FxHashSet::default(); |
85 | let mut res = Vec::new(); | 85 | let mut res = Vec::new(); |
86 | for node in file.syntax().descendants() { | 86 | for node in root.descendants() { |
87 | if highlighted.contains(&node) { | 87 | if highlighted.contains(&node) { |
88 | continue; | 88 | continue; |
89 | } | 89 | } |
@@ -178,7 +178,7 @@ fn main() {} | |||
178 | println!("Hello, {}!", 92); | 178 | println!("Hello, {}!", 92); |
179 | "#, | 179 | "#, |
180 | ); | 180 | ); |
181 | let hls = highlight(&file); | 181 | let hls = highlight(file.syntax()); |
182 | assert_eq_dbg( | 182 | assert_eq_dbg( |
183 | r#"[HighlightedRange { range: [1; 11), tag: "comment" }, | 183 | r#"[HighlightedRange { range: [1; 11), tag: "comment" }, |
184 | HighlightedRange { range: [12; 14), tag: "keyword" }, | 184 | HighlightedRange { range: [12; 14), tag: "keyword" }, |