aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_syntax
diff options
context:
space:
mode:
authorPascal Hertleif <[email protected]>2019-05-23 18:42:42 +0100
committerPascal Hertleif <[email protected]>2019-05-27 10:26:33 +0100
commit5bf3e949e8470a138a61c806769e1a329761cab6 (patch)
tree9885346944b4aa82804514580944673a53605ee2 /crates/ra_syntax
parent4b48cff022a1606bde596f01fbf44361640b10d8 (diff)
Semantic highlighting spike
Very simple approach: For each identifier, set the hash of the range where it's defined as its 'id' and use it in the VSCode extension to generate unique colors. Thus, the generated colors are per-file. They are also quite fragile, and I'm not entirely sure why. Looks like we need to make sure the same ranges aren't overwritten by a later request?
Diffstat (limited to 'crates/ra_syntax')
-rw-r--r--crates/ra_syntax/src/syntax_node.rs4
1 files changed, 4 insertions, 0 deletions
diff --git a/crates/ra_syntax/src/syntax_node.rs b/crates/ra_syntax/src/syntax_node.rs
index 80054f529..89f92e0b7 100644
--- a/crates/ra_syntax/src/syntax_node.rs
+++ b/crates/ra_syntax/src/syntax_node.rs
@@ -523,6 +523,10 @@ impl<'a> SyntaxElement<'a> {
523 } 523 }
524 } 524 }
525 525
526 pub fn as_ast_node<T: AstNode>(&self) -> Option<&T> {
527 self.as_node().and_then(|x| <T as AstNode>::cast(x))
528 }
529
526 pub fn as_token(&self) -> Option<SyntaxToken<'a>> { 530 pub fn as_token(&self) -> Option<SyntaxToken<'a>> {
527 match self { 531 match self {
528 SyntaxElement::Node(_) => None, 532 SyntaxElement::Node(_) => None,