Commit Graph
23 Commits
Author SHA1 Message Date
Hein 41fdaf415c feat(format): implement subquery and CASE expression formatting
CI / Test (push) Successful in 45s
CI / Build (push) Successful in 21s
* Add support for formatting subqueries with configurable placement and spacing.
* Implement CASE expression formatting with options for wrapping and collapsing.
* Introduce tests for subquery and CASE expression scenarios to ensure correctness.
2026-09-21 17:10:49 +02:00
Hein cf9ea5fbda chore(release): bump version to 0.0.8
CI / Build (push) Skipped
CI / Test (push) Failing after 36s
Release / Test (push) Successful in 12s
Release / Release (push) Successful in 3m20s
Release / VSCode Extension (push) Successful in 23s
Release / AUR package (push) Successful in 41s
Release / Debian packages (push) Successful in 1m27s
Release / Windows installer (push) Successful in 1m39s
Release / RPM package (push) Successful in 2m16s
Release / DataGrip Plugin (push) Successful in 3m6s
2026-09-10 15:27:41 +02:00
Hein 5cdec88299 feat(format): expand the runtime safety gate
CI / Test (push) Successful in 37s
CI / Build (push) Successful in 52s
Replace the bare SemanticallyEqual call in every frontend (CLI fmt, LSP
formatting + rangeFormatting) with format.VerifySafe, which runs four
checks before any formatted output is emitted:

  - semantic equivalence  - the code token stream is unchanged
  - comment preservation  - no -- or /* */ comment is dropped, merged,
    split, reordered, or reworded (line endings / indentation normalised
    away; recurses into dollar-quoted bodies)
  - structural balance    - the () [] and BEGIN/CASE/IF/LOOP...END nesting
    profile matches, ignoring anything inside a comment or a string
  - idempotence           - a second format pass would not change it

On failure the CLI now prints the specific reason and keeps the original.

The comment check surfaced two real formatter bugs, both fixed in
formatBodyStatements:

  - multi-line /* */ comments inside a PL/pgSQL body had their interior
    lines re-split and reindented as if they were statements; they are
    now tracked and carried verbatim with the opening line
  - a column-0 -- line was glued onto the preceding line by the
    split-line-join, which merged consecutive comment lines into one

Regenerate testdata/corpus/test_mm_proc.pgsql (was carrying the mangled
output). TestCorpusIdempotentAndSafe now runs the full VerifySafe bundle;
add safety_test.go with targeted cases.
2026-09-10 15:17:07 +02:00
Hein 83b215fd25 feat(format): default output to dist/examples house style
CI / Test (push) Successful in 1m12s
CI / Build (push) Successful in 30s
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.
2026-09-10 14:54:20 +02:00
Hein 25d40ad515 chore(release): bump version to 0.0.7
CI / Build (push) Successful in 20s
Release / Release (push) Successful in 36s
Release / Debian packages (push) Successful in 33s
Release / VSCode Extension (push) Successful in 35s
Release / AUR package (push) Successful in 55s
Release / RPM package (push) Successful in 56s
Release / Windows installer (push) Successful in 59s
Release / DataGrip Plugin (push) Successful in 4m29s
CI / Test (push) Successful in 33s
Release / Test (push) Successful in 31s
2026-07-17 14:29:45 +02:00
Hein bac966c2ac feat(format): add runtime semantic-equality safety gate
CI / Build (push) Successful in 23s
CI / Test (push) Successful in 31s
2026-07-17 14:29:24 +02:00
Hein 4abc89700f chore(release): bump version to 0.0.6
Release / AUR package (push) Successful in 53s
Release / DataGrip Plugin (push) Successful in 4m17s
Release / Release (push) Successful in 1m57s
Release / VSCode Extension (push) Successful in 56s
Release / Test (push) Successful in 1m50s
CI / Test (push) Successful in 1m51s
CI / Build (push) Successful in 21s
Release / RPM package (push) Successful in 39s
Release / Debian packages (push) Successful in 47s
Release / Windows installer (push) Successful in 47s
2026-07-17 13:21:20 +02:00
Hein ad52f21cc2 feat(datagrip): migrate from LSP4IJ to native CLI integration
CI / Test (push) Successful in 26s
CI / Build (push) Successful in 22s
2026-07-17 13:20:49 +02:00
Hein 60602d1de7 chore(release): bump version to 0.0.5
CI / Test (push) Successful in 25s
CI / Build (push) Successful in 20s
Release / Test (push) Failing after 1m51s
Release / Release (push) Has been skipped
Release / Debian packages (push) Has been skipped
Release / RPM package (push) Has been skipped
Release / Windows installer (push) Has been skipped
Release / AUR package (push) Has been skipped
Release / VSCode Extension (push) Has been skipped
Release / DataGrip Plugin (push) Has been skipped
2026-07-17 09:40:51 +02:00
Hein 5cba6beeb1 fix: align PLpgSQL formatting clauses
CI / Build (pull_request) Successful in 1m2s
CI / Test (pull_request) Successful in 43s
2026-07-15 21:11:58 +02:00
Hein a0838e4bdc chore(release): bump version to 0.0.4
Release / Test (push) Successful in 34s
CI / Test (push) Successful in 38s
Release / Windows installer (push) Successful in 58s
CI / Build (push) Successful in 27s
Release / Release (push) Successful in 37s
Release / VSCode Extension (push) Successful in 43s
Release / Debian packages (push) Successful in 59s
Release / RPM package (push) Successful in 1m3s
Release / AUR package (push) Successful in 1m32s
Release / DataGrip Plugin (push) Successful in 3m17s
2026-07-02 14:42:16 +02:00
Hein 44fb77efd6 fix(body): handle CASE depth in body statement formatting
CI / Test (push) Successful in 28s
CI / Build (push) Successful in 25s
2026-07-02 14:40:54 +02:00
Hein 4fab2fe652 feat(ui): add version display action and status bar widget
CI / Test (push) Successful in 29s
CI / Build (push) Successful in 25s
* Implement PgTidyShowVersionAction to show pgtidy version
* Create PgTidyStatusBarWidget for real-time version display
* Update plugin.xml to register new action and widget
2026-07-02 12:58:28 +02:00
Hein 64aaae30f4 chore(release): bump version to 0.0.3
Release / Test (push) Successful in 28s
CI / Test (push) Successful in 35s
CI / Build (push) Successful in 27s
Release / Release (push) Successful in 40s
Release / Debian packages (push) Successful in 1m10s
Release / Windows installer (push) Successful in 1m6s
Release / RPM package (push) Successful in 1m8s
Release / VSCode Extension (push) Successful in 1m2s
Release / AUR package (push) Successful in 1m21s
Release / DataGrip Plugin (push) Successful in 3m16s
2026-07-01 18:04:40 +02:00
Hein c277171963 feat(pkg-nsis): add Windows installer workflow
CI / Test (push) Successful in 28s
CI / Build (push) Successful in 25s
2026-07-01 18:01:25 +02:00
Hein 04711cf7b2 fix(cmd): handle errors and improve output formatting
CI / Test (push) Successful in 28s
CI / Build (push) Successful in 25s
* update error handling in various commands to use blank identifier
* enhance output formatting for better readability
* add golangci-lint to Makefile for linting checks
2026-07-01 12:53:25 +02:00
Hein cdcce94774 fix(release): update release notes generation logic
CI / Test (push) Successful in 25s
CI / Build (push) Successful in 23s
2026-06-29 13:07:55 +02:00
Hein cfc170596a chore(release): bump version to 0.0.1
CI / Test (push) Successful in 37s
Release / Test (push) Successful in 37s
CI / Build (push) Successful in 25s
Release / Debian packages (push) Has been skipped
Release / RPM package (push) Has been skipped
Release / AUR package (push) Has been skipped
Release / VSCode Extension (push) Has been skipped
Release / DataGrip Plugin (push) Has been skipped
Release / Release (push) Failing after 56s
2026-06-29 12:00:01 +02:00
Hein 30801c747a fix(release): handle missing previous tag in release workflow
CI / Build (push) Has been cancelled
CI / Test (push) Has been cancelled
2026-06-29 11:59:56 +02:00
Hein dd91e7ed5a fix(release): improve release upload URL handling
CI / Test (push) Successful in 25s
CI / Build (push) Successful in 22s
* Added error handling for missing upload URL in release creation
* Replaced Python command with simpler grep and cut for extracting upload URL
* Removed unnecessary upload URL artifact upload step
2026-06-29 09:16:53 +02:00
Hein 2bee0e1ed9 ci: add CI and release workflows for automated builds
CI / Test (push) Successful in 25s
CI / Build (push) Successful in 31s
2026-06-29 09:02:56 +02:00
Hein 531087bfed fix: fixed compile issues and added build steps
CI / Test (push) Successful in 24s
CI / Build snapshot (push) Successful in 1m17s
2026-06-29 08:52:21 +02:00
Hein 625ddc79a1 feat: initial plan 2026-06-23 16:59:50 +02:00