v4-0001-pgindent-improve-formatting-of-multiline-comments.patch
application/octet-stream
Filename: v4-0001-pgindent-improve-formatting-of-multiline-comments.patch
Type: application/octet-stream
Part: 0
Patch
Same data as JSON:
GET /api/v1/attachments/:id/patch
the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes.
API reference →
Format: format-patch
Series: patch v4-0001
Subject: pgindent: improve formatting of multiline comments
| File | + | − |
|---|---|---|
| src/tools/pgindent/pgindent | 29 | 0 |
From 125c239d704fd755039b2de27e847fcd4dee2406 Mon Sep 17 00:00:00 2001
From: Aleksander Alekseev <aleksander@timescale.com>
Date: Fri, 20 Jun 2025 16:31:36 +0300
Subject: [PATCH v4] 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
Reported-by: Michael Paquier
Reviewed-by: Arseniy Mukhin
Discussion: https://postgr.es/m/CAJ7c6TPQ0kkHQG-AqeAJ3PV_YtmDzcc7s%2B_V4%3Dt%2BxgSnZm1cFw%40mail.gmail.com
---
src/tools/pgindent/pgindent | 29 +++++++++++++++++++++++++++++
1 file changed, 29 insertions(+)
diff --git a/src/tools/pgindent/pgindent b/src/tools/pgindent/pgindent
index b7d71808924..f009d4ba984 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,32 @@ 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 fist and the last one
+ for my $i ( 1 .. scalar @lines - 2 )
+ {
+ $lines[$i] = " *".$lines[$i] if $lines[$i] !~ /^ \*/;
+ }
+
+ $lines[0] =~ s!/\*(.+)!/\*\n *$1!;
+ $lines[-1] =~ s!(.+) \*/!$1\n \*/!;
+
+ $source = join "\n", @lines;
+
+ return $source;
+}
+
sub run_indent
{
my $source = shift;
--
2.49.0