feat(format): default output to dist/examples house style
Align the formatter defaults and layout with the hand-formatted reference procedures in dist/examples so a clean `pgtidy fmt` produces the house style. config.Default(): - align_param_types: false (no type-column alignment in param lists) - plpgsql_declare_align_type / plpgsql_declare_align_eq: true Formatter: - routine header: leading-comma params at column 0, first param at one indent, RETURNS/LANGUAGE/volatility/SECURITY each indented one level - %type / %rowtype printed tight (isPctTypeBoundary) - DECLARE = / := / DEFAULT column padded only to the widest declaration that carries an assignment - WHERE continuations in body UPDATE/DELETE: AND/OR aligned with WHERE - EXCEPTION aligned to its enclosing BEGIN; column-0 comment continuations kept flush-left Safety gate: - SemanticallyEqual tolerates CRLF vs LF inside string literals (normNL); the formatter re-emits all layout with st.Newline, so a \r\n inside a multi-line string literal is normalisation, not a code change. This was why action_init and event_exec_func previously refused to format. Corpus: - add the four CRLF reference files as idempotence/safety fixtures - regenerate test_a and test_mm_proc goldens FOR...LOOP body indentation keeps the existing +1 convention (LOOP aligned with FOR); the dist/examples use +2, so loop-body regions differ by whitespace only.
This commit is contained in:
+4
-2
@@ -213,7 +213,7 @@ as a proxy (new_line for content, inline for single-arg subexpressions).
|
||||
|
||||
### ✅ Formatter — routine param alignment (`pkg/format/format.go`)
|
||||
|
||||
- `align_param_types`: `alignParamTypes()` pads param names so type columns align; default `true`.
|
||||
- `align_param_types`: `alignParamTypes()` pads param names so type columns align; default `false` (house style: no type-column alignment in param lists).
|
||||
- `routine_as_wrap`: when `false`, AS stays on the same line as the last option clause.
|
||||
- Golden file `testdata/corpus/test_a.pgsql` updated to reflect aligned params.
|
||||
|
||||
@@ -221,7 +221,9 @@ as a proxy (new_line for content, inline for single-arg subexpressions).
|
||||
|
||||
- `plpgsql_max_blank_lines`: blank-line runs capped at the configured limit; default `1`.
|
||||
- `plpgsql_declare_align_type` + `plpgsql_declare_align_eq`: two-pass declare formatter
|
||||
measures name/type widths then pads for alignment; `writeDeclareAligned` helper.
|
||||
measures name/type widths then pads for alignment; `writeDeclareAligned` helper. Both
|
||||
default `true` (house style). The `=` column is padded only to the widest type among
|
||||
declarations that actually carry an assignment, so a lone `x text = '…';` stays tight.
|
||||
- `plpgsql_if_then_newline`: when `false`, `joinThenToCondition` merges THEN onto the
|
||||
preceding condition line.
|
||||
- `plpgsql_loop_collapse`: `tryCollapseLoop` detects empty FOR/WHILE loop bodies and
|
||||
|
||||
Reference in New Issue
Block a user