aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-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);
+ }
}
}