From 405e8ede2eaf2fbccb6ffbaa6b24a434665b056d Mon Sep 17 00:00:00 2001 From: Brad Lewis <22850972+BradLewis@users.noreply.github.com> Date: Sun, 21 Sep 2025 09:26:17 -0400 Subject: Improve comp lit hover formatting --- src/server/documentation.odin | 51 ++++++++++++++++++++++++++++--------------- 1 file changed, 33 insertions(+), 18 deletions(-) (limited to 'src/server') diff --git a/src/server/documentation.odin b/src/server/documentation.odin index 47c6d7e..965e331 100644 --- a/src/server/documentation.odin +++ b/src/server/documentation.odin @@ -779,29 +779,44 @@ write_node :: proc( symbol = make_symbol_procedure_from_ast(ast_context, nil, n^, name, {}, true, .None, nil) ok = true case ^ast.Comp_Lit: - build_string(n.type, sb, false) - if len(n.elems) == 0 { - strings.write_string(sb, "{}") - return + same_line := true + start_line := -1 + for elem in n.elems { + if start_line == -1 { + start_line = elem.pos.line + } else if start_line != elem.pos.line { + same_line = false + break + } } - if n.type != nil { - strings.write_string(sb, " {\n") + if same_line { + build_string(n, sb, false) } else { - strings.write_string(sb, "{\n") - } - - for elem, i in n.elems { - write_indent(sb, depth) - if field, ok := elem.derived.(^ast.Field_Value); ok { - build_string(field.field, sb, false) - strings.write_string(sb, " = ") - build_string(field.value, sb, false) + build_string(n.type, sb, false) + if len(n.elems) == 0 { + strings.write_string(sb, "{}") + return + } + if n.type != nil { + strings.write_string(sb, " {\n") } else { - build_string(elem, sb, false) + strings.write_string(sb, "{\n") } - strings.write_string(sb, ",\n") + + for elem, i in n.elems { + write_indent(sb, depth) + if field, ok := elem.derived.(^ast.Field_Value); ok { + build_string(field.field, sb, false) + strings.write_string(sb, " = ") + write_node(sb, ast_context, field.value, "", depth+1, false) + } else { + build_string(elem, sb, false) + } + strings.write_string(sb, ",\n") + } + write_indent(sb, depth-1) + strings.write_string(sb, "}") } - strings.write_string(sb, "}") return } if ok { -- cgit v1.2.3