diff options
| author | DanielGavin <danielgavin5@hotmail.com> | 2024-06-17 20:04:29 +0200 |
|---|---|---|
| committer | DanielGavin <danielgavin5@hotmail.com> | 2024-06-17 20:04:29 +0200 |
| commit | c388704714dc5797ffa71d0b0119899df006497a (patch) | |
| tree | 74acd241a491917e52b3a1b6b6416d5c94945553 /src/server/completion.odin | |
| parent | c99b080e2dd14e951975206ed5d89d4e4689053e (diff) | |
Start adding support for enumerated arrays for completion.
Diffstat (limited to 'src/server/completion.odin')
| -rw-r--r-- | src/server/completion.odin | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/server/completion.odin b/src/server/completion.odin index 2e5689f..a863d5c 100644 --- a/src/server/completion.odin +++ b/src/server/completion.odin @@ -1283,6 +1283,42 @@ get_implicit_completion :: proc( } } } + + if position_context.index != nil { + symbol: Symbol + ok := false + if position_context.previous_index != nil { + symbol, ok = resolve_type_expression( + ast_context, + position_context.previous_index, + ) + if !ok { + return + } + } else { + symbol, ok = resolve_type_expression( + ast_context, + position_context.index.expr, + ) + } + + if array, ok := symbol.value.(SymbolFixedArrayValue); ok { + if enum_value, ok := unwrap_enum(ast_context, array.len); ok { + for name in enum_value.names { + item := CompletionItem { + label = name, + kind = .EnumMember, + detail = name, + } + + append(&items, item) + } + + list.items = items[:] + return + } + } + } } get_identifier_completion :: proc( |