Re: run pgindent on a regular basis / scripted manner
Bruce Momjian <bruce@momjian.us>
On Fri, Jan 20, 2023 at 10:43:50AM +0100, Jelte Fennema wrote: > Side-question: What's the reason why pgindent is used instead of some > more "modern" code formatter that doesn't require keeping > typedefs.list up to date for good looking output? (e.g. uncrustify or > clang-format) Because that would also allow for easy editor > integration. One reason the typedef list is required is a quirk of the C syntax. Most languages have a lexer/scanner, which tokenizes, and a parser, which parses. The communication is usually one-way, lexer to parser. For C, typedefs require the parser to feed new typedefs back into the lexer: http://calculist.blogspot.com/2009/02/c-typedef-parsing-problem.html BSD indent doesn't have that feedback mechanism, probably because it doesn't fully parse the C file. Therefore, we have to supply typedefs manually, and for Postgres we pull them from debug-enabled binaries in our buildfarm. The problem with that is you often import typedefs from system headers, and the typedefs apply to all C files, not just the ones were the typdefs are visible. I don't see uncrustify or clang-format supporting typedef lists so maybe they implemented this feedback loop. It would be good to see if we can get either of these tools to match our formatting. -- Bruce Momjian <bruce@momjian.us> https://momjian.us EDB https://enterprisedb.com Embrace your flaws. They make you human, rather than perfect, which you will never be.
Commits
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Fix comment from commit 22655aa231.
- 01529c704008 17.0 cited
-
Add a few recent commits to .git-blame-ignore-revs.
- 0df7d1da40e3 17.0 landed
-
Pre-beta2 mechanical code beautification.
- b334612b8aee 16.0 landed
-
Pre-beta mechanical code beautification.
- 0245f8db36f3 16.0 landed
-
Make agreed-on updates in perltidy options.
- df6b19fbbc20 16.0 landed
-
Remove obsolete pgindent options --code-base and --build
- b16259b3c189 16.0 landed
-
Integrate pg_bsd_indent into our build/test infrastructure.
- 156c049beed9 16.0 landed
-
Sync pg_bsd_indent's copyright notices with Postgres practice.
- b44e5fced3e5 16.0 landed
-
Import pg_bsd_indent sources.
- 4e831f4cee14 16.0 landed
-
pgindent: filter files for the --commit option
- dab07e8c6896 16.0 landed
-
pgindent: more ways to find files to indent
- 068a243b7771 16.0 landed
-
Fix pgindent --show-diff option.
- 62e1e28bf769 16.0 cited
-
Add non-destructive modes to pgindent
- b90f0b57474e 16.0 landed
-
Initial pgindent run with pg_bsd_indent version 2.0.
- e3860ffa4dd0 10.0 cited