diff --git a/src/formatter.lua b/src/formatter.lua index e5c6c31..44ee0be 100644 --- a/src/formatter.lua +++ b/src/formatter.lua @@ -330,9 +330,19 @@ function M.format_document(content, options) trimmed = collapse_attribute_block(trimmed) -- Check if continuing assignment - if in_assignment and is_assignment_continuation(trimmed) then - table.insert(formatted_lines, assignment_continuation_indent .. trimmed) - goto continue + -- Continuation if: in assignment AND (starts with operator OR doesn't start new statement) + if in_assignment then + local starts_with_operator = is_assignment_continuation(trimmed) + local is_new_statement = trimmed:match("^%w+") and ( + trimmed:match(":=") or + BLOCKS[trimmed:match("^([%w_]+)")] or + SAME_LEVEL[trimmed:match("^([%w_]+)")] or + VAR_KEYWORDS[trimmed:match("^([%w_]+)")] + ) + if starts_with_operator or not is_new_statement then + table.insert(formatted_lines, assignment_continuation_indent .. trimmed) + goto continue + end end in_assignment = false