generalize highlighting to work with nodes

This commit is contained in:
Aleksey Kladov 2018-12-31 19:06:00 +03:00
parent f1e8ebfbeb
commit 862c99d0d5
2 changed files with 5 additions and 5 deletions

View file

@ -79,11 +79,11 @@ pub fn matching_brace(file: &SourceFileNode, offset: TextUnit) -> Option<TextUni
Some(matching_node.range().start())
}
pub fn highlight(file: &SourceFileNode) -> Vec<HighlightedRange> {
pub fn highlight(root: SyntaxNodeRef) -> Vec<HighlightedRange> {
// Visited nodes to handle highlighting priorities
let mut highlighted = FxHashSet::default();
let mut res = Vec::new();
for node in file.syntax().descendants() {
for node in root.descendants() {
if highlighted.contains(&node) {
continue;
}
@ -178,7 +178,7 @@ fn main() {}
println!("Hello, {}!", 92);
"#,
);
let hls = highlight(&file);
let hls = highlight(file.syntax());
assert_eq_dbg(
r#"[HighlightedRange { range: [1; 11), tag: "comment" },
HighlightedRange { range: [12; 14), tag: "keyword" },