diff options
Diffstat (limited to 'src/server/semantic_tokens.odin')
| -rw-r--r-- | src/server/semantic_tokens.odin | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/server/semantic_tokens.odin b/src/server/semantic_tokens.odin index 60042cd..d237109 100644 --- a/src/server/semantic_tokens.odin +++ b/src/server/semantic_tokens.odin @@ -65,10 +65,12 @@ SemanticTokenModifier :: enum u8 { semantic_token_modifier_names: []string = {"declaration", "definition", "deprecated", "readonly"} SemanticTokenModifiers :: bit_set[SemanticTokenModifier;u32] +SemanticTokensRequest :: struct { + range: bool, +} + SemanticTokensClientCapabilities :: struct { - requests: struct { - range: bool, - }, + requests: SemanticTokensRequest, tokenTypes: []string, tokenModifiers: []string, formats: []string, @@ -143,8 +145,11 @@ get_semantic_tokens :: proc( src = ast_context.file.src, } + margin := 20 + for decl in document.ast.decls { - if range.start.line <= decl.pos.line && decl.end.line <= range.end.line { + //Look for declarations that overlap with range + if range.start.line - margin <= decl.end.line && decl.pos.line <= range.end.line + margin { visit_node(decl, &builder) } } |