Hi, The pluggable storage patchset has a large struct full of callbacks, and a bunch of wrapper functions for calling those callbacks. While starting to polish the patchset, I tried to make the formatting nice.
By default pgindent yields formatting like: /* * API struct for a table AM. Note this must be allocated in a * server-lifetime manner, typically as a static const struct, which then gets * returned by FormData_pg_am.amhandler. */ typedef struct TableAmRoutine { NodeTag type; ... void (*relation_set_new_filenode) (Relation relation, char persistence, TransactionId *freezeXid, MultiXactId *minmulti); ... static inline void table_set_new_filenode(Relation rel, char persistence, TransactionId *freezeXid, MultiXactId *minmulti) { rel->rd_tableam->relation_set_new_filenode(rel, persistence, freezeXid, minmulti); } which isn't particularly pretty, especially because there's callbacks with longer names than the example above. Unfortunately pgindent prevents formatting the callbacks like: void (*relation_set_new_filenode) ( Relation relation, char persistence, TransactionId *freezeXid, MultiXactId *minmulti); or something in that vein. What however does work, is: void (*relation_set_new_filenode) (Relation relation, char persistence, TransactionId *freezeXid, MultiXactId *minmulti); I.e. putting the opening ( of the parameter list into a separate line yields somewhat usable formatting. This also has the advantage that the arguments of all callbacks line up, making it a bit easier to scan. Similarly, to reduce the indentation, especially for callbacks with long names and/o with longer paramter names, we can do: static inline void table_set_new_filenode(Relation rel, char persistence, TransactionId *freezeXid, MultiXactId *minmulti) { rel->rd_tableam->relation_set_new_filenode (rel, persistence, freezeXid, minmulti); } So, putting the parameter list, both in use and declaration, entirely into a new line yields decent formatting with pgindent. But it's kinda weird. I can't really come up with a better alternative, and after a few minutes it looks pretty reasonable. Comments? Better alternatives? Greetings, Andres Freund