diff options
| author | Daniel Gavin <danielgavin5@hotmail.com> | 2021-09-08 13:35:23 +0200 |
|---|---|---|
| committer | Daniel Gavin <danielgavin5@hotmail.com> | 2021-09-08 13:35:23 +0200 |
| commit | f0a2225adbb866ba55d25cd32c4e2215482fa321 (patch) | |
| tree | 065f78f82a978340c4d91baf8486d9f867d37bc2 /src | |
| parent | 610dffa617f9e2059ef533b3845a31a6daade10e (diff) | |
Fix enum semantic token not hightlighting correctly
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/requests.odin | 7 | ||||
| -rw-r--r-- | src/server/semantic_tokens.odin | 6 |
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); + } } } |