aboutsummaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
authorDaniel Gavin <danielgavin5@hotmail.com>2021-09-08 13:35:23 +0200
committerDaniel Gavin <danielgavin5@hotmail.com>2021-09-08 13:35:23 +0200
commitf0a2225adbb866ba55d25cd32c4e2215482fa321 (patch)
tree065f78f82a978340c4d91baf8486d9f867d37bc2 /src/server
parent610dffa617f9e2059ef533b3845a31a6daade10e (diff)
Fix enum semantic token not hightlighting correctly
Diffstat (limited to 'src/server')
-rw-r--r--src/server/requests.odin7
-rw-r--r--src/server/semantic_tokens.odin6
2 files changed, 12 insertions, 1 deletions
diff --git a/src/server/requests.odin b/src/server/requests.odin
index c6841e8..1d48887 100644
--- a/src/server/requests.odin
+++ b/src/server/requests.odin
@@ -476,7 +476,12 @@ request_initialize :: proc (task: ^common.Task) {
token_modifiers := make([]string, len(token_modifier.names), context.temp_allocator);
for name, i in token_type.names {
- token_types[i] = strings.to_lower(name, context.temp_allocator);
+ if name == "EnumMember" {
+ token_types[i] = "enumMember";
+ }
+ else {
+ token_types[i] = strings.to_lower(name, context.temp_allocator);
+ }
}
for name, i in token_modifier.names {
diff --git a/src/server/semantic_tokens.odin b/src/server/semantic_tokens.odin
index 7c10e40..6df99f7 100644
--- a/src/server/semantic_tokens.odin
+++ b/src/server/semantic_tokens.odin
@@ -521,6 +521,12 @@ write_semantic_enum_fields :: proc(node: ast.Enum_Type, builder: ^SemanticTokenB
if ident, ok := field.derived.(Ident); ok {
write_semantic_node(builder, field, ast_context.file.src, .EnumMember, .None);
}
+ else if f, ok := field.derived.(Field_Value); ok {
+ if ident, ok := f.field.derived.(Ident); ok {
+ write_semantic_node(builder, f.field, ast_context.file.src, .EnumMember, .None);
+ }
+ write_semantic_tokens(f.value, builder, ast_context);
+ }
}
}