diff options
| author | Brad Lewis <22850972+BradLewis@users.noreply.github.com> | 2025-06-07 14:07:23 -0400 |
|---|---|---|
| committer | Brad Lewis <22850972+BradLewis@users.noreply.github.com> | 2025-06-07 20:53:27 -0400 |
| commit | 5887e44f7b866ec021925dec22a32ca2bc9232b7 (patch) | |
| tree | ef67b85e6131cdbec52d26db83a32bbca7b97da6 | |
| parent | 69e79a66a063306be78cdfb9a73226216826f2d9 (diff) | |
Include encriched struct information on variable hover
| -rw-r--r-- | src/server/analysis.odin | 35 |
1 files changed, 17 insertions, 18 deletions
diff --git a/src/server/analysis.odin b/src/server/analysis.odin index 52ed4e0..f7c956d 100644 --- a/src/server/analysis.odin +++ b/src/server/analysis.odin @@ -3810,27 +3810,26 @@ get_signature :: proc(ast_context: ^AstContext, ident: ast.Ident, symbol: Symbol case SymbolProcedureValue: return "proc" case SymbolStructValue: + builder := strings.builder_make(ast_context.allocator) if is_variable { - return strings.concatenate({pointer_prefix, symbol.name}, ast_context.allocator) - } else { - longestNameLen := 0 - for name in v.names { - if len(name) > longestNameLen { - longestNameLen = len(name) - } - } - builder := strings.builder_make(ast_context.allocator) - strings.write_string(&builder, "struct {\n") - for i in 0..<len(v.names) { - strings.write_string(&builder, "\t") - strings.write_string(&builder, v.names[i]) - fmt.sbprintf(&builder, ":%*s", longestNameLen - len(v.names[i]) + 1, "") - common.build_string_node(v.types[i], &builder, false) - strings.write_string(&builder, ",\n") + fmt.sbprintf(&builder, "%s%s.%s :: ", get_symbol_pkg_name(ast_context, symbol), pointer_prefix, symbol.name) + } + longestNameLen := 0 + for name in v.names { + if len(name) > longestNameLen { + longestNameLen = len(name) } - strings.write_string(&builder, "}") - return strings.to_string(builder) } + strings.write_string(&builder, "struct {\n") + for i in 0..<len(v.names) { + strings.write_string(&builder, "\t") + strings.write_string(&builder, v.names[i]) + fmt.sbprintf(&builder, ":%*s", longestNameLen - len(v.names[i]) + 1, "") + common.build_string_node(v.types[i], &builder, false) + strings.write_string(&builder, ",\n") + } + strings.write_string(&builder, "}") + return strings.to_string(builder) case SymbolUnionValue: if is_variable { return strings.concatenate({pointer_prefix, symbol.name}, ast_context.allocator) |