aboutsummaryrefslogtreecommitdiff
path: root/src/server/semantic_tokens.odin
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/semantic_tokens.odin')
-rw-r--r--src/server/semantic_tokens.odin13
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)
}
}