Re: pgindent vs variable declaration across multiple lines

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: pgindent vs variable declaration across multiple lines
Дата
Msg-id 937774.1676226271@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Re: pgindent vs variable declaration across multiple lines  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers
Now that pg_bsd_indent is in our tree, we can format this as a
patch against Postgres sources.  I'll stick it in the March CF
so we don't forget about it.

            regards, tom lane

diff --git a/src/tools/pg_bsd_indent/args.c b/src/tools/pg_bsd_indent/args.c
index d08b086a88..38eaa5a5bf 100644
--- a/src/tools/pg_bsd_indent/args.c
+++ b/src/tools/pg_bsd_indent/args.c
@@ -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 */
diff --git a/src/tools/pg_bsd_indent/io.c b/src/tools/pg_bsd_indent/io.c
index 4149424294..9d64ca1ee5 100644
--- a/src/tools/pg_bsd_indent/io.c
+++ b/src/tools/pg_bsd_indent/io.c
@@ -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 */
diff --git a/src/tools/pgindent/pgindent b/src/tools/pgindent/pgindent
index a793971e07..3398d62133 100755
--- a/src/tools/pgindent/pgindent
+++ b/src/tools/pgindent/pgindent
@@ -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 =

В списке pgsql-hackers по дате отправления:

Предыдущее
От: Andres Freund
Дата:
Сообщение: Re: Use pg_pwritev_with_retry() instead of write() in dir_open_for_write() to avoid partial writes?
Следующее
От: Andrew Dunstan
Дата:
Сообщение: Re: run pgindent on a regular basis / scripted manner