public inbox for [email protected]
help / color / mirror / Atom feedFrom: Aleksander Alekseev <[email protected]>
To: PostgreSQL Hackers <[email protected]>
Cc: Nathan Bossart <[email protected]>
Subject: Re: [PATCH] pg_bsd_indent: improve formatting of multiline comments
Date: Mon, 9 Feb 2026 14:19:16 +0300
Message-ID: <CAJ7c6TPJVau3Ppih7+KubRwvG9CRpXq16L3X9bE02KuGgL95Nw@mail.gmail.com> (raw)
In-Reply-To: <aYZqyoNlah_E-Zua@nathan>
References: <[email protected]>
<CAJ7c6TOCJG2p0Ob9Z7mXQRhkmRX_mxBay198Z173t4=PZr=yEQ@mail.gmail.com>
<CAE7r3M+phC+kyJsUrJ6z97-UA0LXRrUBJ61hBk7WhRqdXF_itQ@mail.gmail.com>
<CAJ7c6TOGdVBK5P-s59c77qxaw=ydPjpzp_s3VbpHeHn3Gc1iyA@mail.gmail.com>
<aPqPK4ERy5-jj185@nathan>
<CAJ7c6TMTzQsnKfM+_4i-4WO7=YnV4nO8ABWA6enSpdtg6DKhqQ@mail.gmail.com>
<aP-H6kSsGOxaB21k@nathan>
<[email protected]>
<[email protected]>
<aTs7A4lbcm0ThXaO@nathan>
<aYZqyoNlah_E-Zua@nathan>
Hi,
> > Here's a patch for this. I also changed the #undefs to #defines.
>
> I went ahead and committed this.
Thanks, Nathan. Re-submitting v6 to make it visible by cfbot again and
in order to simplify the work of reviewers a bit.
--
Best regards,
Aleksander Alekseev
Attachments:
[text/x-patch] v6-0001-pgindent-improve-formatting-of-multiline-comments.patch (2.3K, 2-v6-0001-pgindent-improve-formatting-of-multiline-comments.patch)
download | inline diff:
From ad91fda8a7406f9fd5dbbfe5a895a811230e2eec Mon Sep 17 00:00:00 2001
From: Aleksander Alekseev <[email protected]>
Date: Fri, 20 Jun 2025 16:31:36 +0300
Subject: [PATCH v6] pgindent: improve formatting of multiline comments
Format multiline comments like this:
/* line 1
* line 2
*/
... into:
/*
* line 1
* line 2
*/
This is more consistent with what we currently have in the tree.
Author: Aleksander Alekseev <[email protected]>
Reported-by: Michael Paquier <[email protected]>
Reviewed-by: Arseniy Mukhin <[email protected]>
Reviewed-by: Nathan Bossart <[email protected]>
Discussion: https://postgr.es/m/CAJ7c6TPQ0kkHQG-AqeAJ3PV_YtmDzcc7s%2B_V4%3Dt%2BxgSnZm1cFw%40mail.gmail.com
---
src/tools/pgindent/pgindent | 36 ++++++++++++++++++++++++++++++++++++
1 file changed, 36 insertions(+)
diff --git a/src/tools/pgindent/pgindent b/src/tools/pgindent/pgindent
index b7d71808924..4db12cb1d92 100755
--- a/src/tools/pgindent/pgindent
+++ b/src/tools/pgindent/pgindent
@@ -281,6 +281,9 @@ sub post_indent
# Fix run-together comments to have a tab between them
$source =~ s!\*/(/\*.*\*/)$!*/\t$1!gm;
+ # Postprocess multiline comments except for /**... and /*-... ones
+ $source =~ s!^(/\*[^\*\-].*?\*/)!postprocess_multiline_comment($1)!mgse;
+
## Functions
# Use a single space before '*' in function return types
@@ -289,6 +292,39 @@ sub post_indent
return $source;
}
+sub postprocess_multiline_comment
+{
+ my $source = shift;
+ my @lines = split "\n", $source;
+
+ # Only format comments that match the expected format,
+ # or at least that could have been the author's intent.
+ if (($lines[0] ne "/*" && $lines[-1] ne " */") or ($lines[1] !~ m!^ \*!))
+ {
+ return $source;
+ }
+
+ # Check each line except for the first and the last one
+ for my $i ( 1 .. scalar @lines - 2 )
+ {
+ $lines[$i] = " *".$lines[$i] if $lines[$i] !~ /^ \*/;
+ }
+
+ # Keep /* === and /* --- lines as is
+ if ($lines[0] !~ m!^/\* [=-]+!) {
+ $lines[0] =~ s!/\*(.+)!/\*\n *$1!;
+ }
+
+ # Keep === */ and --- */ lines as is
+ if ($lines[-1] !~ m![=-]+ \*/$!) {
+ $lines[-1] =~ s!(.+) \*/!$1\n \*/!;
+ }
+
+ $source = join "\n", @lines;
+
+ return $source;
+}
+
sub run_indent
{
my $source = shift;
--
2.43.0
view thread (4+ messages) latest in thread
reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: [email protected]
Cc: [email protected], [email protected], [email protected]
Subject: Re: [PATCH] pg_bsd_indent: improve formatting of multiline comments
In-Reply-To: <CAJ7c6TPJVau3Ppih7+KubRwvG9CRpXq16L3X9bE02KuGgL95Nw@mail.gmail.com>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox