From 41c5c76526aad8ca69525abfed045d501171fe24 Mon Sep 17 00:00:00 2001 From: Brad Lewis <22850972+BradLewis@users.noreply.github.com> Date: Sat, 7 Jun 2025 19:31:20 -0400 Subject: Add hover for struct fields within definition --- src/server/completion.odin | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/server/completion.odin') diff --git a/src/server/completion.odin b/src/server/completion.odin index 8d61e3e..54bff1f 100644 --- a/src/server/completion.odin +++ b/src/server/completion.odin @@ -1289,7 +1289,7 @@ get_identifier_completion :: proc( ident.name = k if symbol, ok := resolve_type_identifier(ast_context, ident^); ok { - symbol.signature = get_signature(ast_context, ident^, symbol) + symbol.signature = get_signature(ast_context, ident, symbol) build_procedure_symbol_signature(&symbol) @@ -1330,7 +1330,7 @@ get_identifier_completion :: proc( ident.name = k if symbol, ok := resolve_type_identifier(ast_context, ident^); ok { - symbol.signature = get_signature(ast_context, ident^, symbol) + symbol.signature = get_signature(ast_context, ident, symbol) build_procedure_symbol_signature(&symbol) -- cgit v1.2.3 From cea7502466e9a413d1b8980b6447c9316f03a93a Mon Sep 17 00:00:00 2001 From: Brad Lewis <22850972+BradLewis@users.noreply.github.com> Date: Sat, 7 Jun 2025 20:52:55 -0400 Subject: Add short signature parameter and update completion tests --- src/server/analysis.odin | 45 ++++++++++++++++++++++++++++++++++++++++----- src/server/completion.odin | 4 ++-- tests/completions_test.odin | 12 ++++++------ tests/hover_test.odin | 4 ++-- 4 files changed, 50 insertions(+), 15 deletions(-) (limited to 'src/server/completion.odin') diff --git a/src/server/analysis.odin b/src/server/analysis.odin index dc3a380..e67b31e 100644 --- a/src/server/analysis.odin +++ b/src/server/analysis.odin @@ -3765,7 +3765,12 @@ unwrap_bitset :: proc(ast_context: ^AstContext, bitset_symbol: Symbol) -> (Symbo return {}, false } -append_variable_full_name :: proc(sb: ^strings.Builder,ast_context: ^AstContext, symbol: Symbol, pointer_prefix: string) { +append_variable_full_name :: proc( + sb: ^strings.Builder, + ast_context: ^AstContext, + symbol: Symbol, + pointer_prefix: string, +) { pkg_name := get_symbol_pkg_name(ast_context, symbol) if pkg_name == "" { fmt.sbprintf(sb, "%s%s :: ", pointer_prefix, symbol.name) @@ -3775,7 +3780,13 @@ append_variable_full_name :: proc(sb: ^strings.Builder,ast_context: ^AstContext, return } -get_signature :: proc(ast_context: ^AstContext, ident: ast.Any_Node, symbol: Symbol, was_variable := false) -> string { +get_signature :: proc( + ast_context: ^AstContext, + ident: ast.Any_Node, + symbol: Symbol, + was_variable := false, + short_signature := false, +) -> string { if symbol.type == .Function { return symbol.signature } @@ -3799,12 +3810,20 @@ get_signature :: proc(ast_context: ^AstContext, ident: ast.Any_Node, symbol: Sym allocator = ast_context.allocator, ) case SymbolEnumValue: + if short_signature { + builder := strings.builder_make(ast_context.allocator) + if is_variable { + append_variable_full_name(&builder, ast_context, symbol, pointer_prefix) + } + strings.write_string(&builder, "enum") + return strings.to_string(builder) + } builder := strings.builder_make(ast_context.allocator) if is_variable { append_variable_full_name(&builder, ast_context, symbol, pointer_prefix) } strings.write_string(&builder, "enum {\n") - for i in 0..