Improve indentation of multiline initialization expressions.
authorTom Lane <tgl@sss.pgh.pa.us>
Sat, 8 Apr 2023 15:48:36 +0000 (11:48 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Sat, 8 Apr 2023 15:48:45 +0000 (11:48 -0400)
If a variable has an initialization expression that wraps onto the
next line(s), pg_bsd_indent will now indent the continuation lines
one stop, instead of aligning them flush with the variable declaration.

We've been holding off applying this until the last v16 CF finished,
but now it's time.

Thomas Munro and Tom Lane

Discussion: https://postgr.es/m/20230120013137.7ky7nl4e4zjorrfa@awork3.anarazel.de

src/tools/pg_bsd_indent/args.c
src/tools/pg_bsd_indent/io.c
src/tools/pgindent/pgindent

index d08b086a88cfd24f6b467ab34af6b528ee5221fa..38eaa5a5bf28c72612804d1688f1305a61e70143 100644 (file)
@@ -51,7 +51,7 @@ static char sccsid[] = "@(#)args.c    8.1 (Berkeley) 6/6/93";
 #include "indent_globs.h"
 #include "indent.h"
 
-#define INDENT_VERSION "2.1.1"
+#define INDENT_VERSION "2.1.2"
 
 /* profile types */
 #define        PRO_SPECIAL     1       /* special case */
index 41494242944121b244be2e0b7bc45005a448c043..9d64ca1ee56daae026911a923c472f58ff34d1fc 100644 (file)
@@ -201,11 +201,12 @@ dump_line(void)
     ps.decl_on_line = ps.in_decl;      /* if we are in the middle of a
                                         * declaration, remember that fact for
                                         * proper comment indentation */
-    ps.ind_stmt = ps.in_stmt & ~ps.in_decl;    /* next line should be
-                                                * indented if we have not
-                                                * completed this stmt and if
-                                                * we are not in the middle of
-                                                * a declaration */
+    /* next line should be indented if we have not completed this stmt, and
+     * either we are not in a declaration or we are in an initialization
+     * assignment; but not if we're within braces in an initialization,
+     * because that scenario is handled by other rules. */
+    ps.ind_stmt = ps.in_stmt &&
+       (!ps.in_decl || (ps.block_init && ps.block_init_level <= 0));
     ps.use_ff = false;
     ps.dumped_decl_indent = 0;
     *(e_lab = s_lab) = '\0';   /* reset buffers */
index 3c48f3c46bd10c347a14c18aa7c71ec4df86fc73..58692d073b86659511024270315c06340efa33ae 100755 (executable)
@@ -13,7 +13,7 @@ use IO::Handle;
 use Getopt::Long;
 
 # Update for pg_bsd_indent version
-my $INDENT_VERSION = "2.1.1";
+my $INDENT_VERSION = "2.1.2";
 
 # Our standard indent settings
 my $indent_opts =