diff options
author | Pascal Hertleif <[email protected]> | 2019-05-23 18:42:42 +0100 |
---|---|---|
committer | Pascal Hertleif <[email protected]> | 2019-05-27 10:26:33 +0100 |
commit | 5bf3e949e8470a138a61c806769e1a329761cab6 (patch) | |
tree | 9885346944b4aa82804514580944673a53605ee2 /crates/ra_syntax | |
parent | 4b48cff022a1606bde596f01fbf44361640b10d8 (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.rs | 4 |
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, |