From f0a2225adbb866ba55d25cd32c4e2215482fa321 Mon Sep 17 00:00:00 2001 From: Daniel Gavin Date: Wed, 8 Sep 2021 13:35:23 +0200 Subject: Fix enum semantic token not hightlighting correctly --- src/server/requests.odin | 7 ++++++- src/server/semantic_tokens.odin | 6 ++++++ 2 files changed, 12 insertions(+), 1 deletion(-) (limited to 'src/server') 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); + } } } -- cgit v1.2.3