From 97bfd645a9313b8892d64fc9acc063d9e982e9d7 Mon Sep 17 00:00:00 2001 From: Aleksander Alekseev Date: Fri, 20 Jun 2025 16:31:36 +0300 Subject: [PATCH v3] 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 | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/src/tools/pgindent/pgindent b/src/tools/pgindent/pgindent index b7d71808924..13944730a39 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 + $source =~ s!^(/\*.*?\*/)!postprocess_multiline_comment($1)!mgse; + ## Functions # Use a single space before '*' in function return types @@ -289,6 +292,37 @@ sub post_indent return $source; } +sub postprocess_multiline_comment +{ + my $source = shift; + my @lines = split "\n", $source; + + if($lines[0] ne "/*" && $lines[-1] ne " */") + { + # Don't change comments like: + # /* line 1 + # line 2 */ + # and similar. + return $source; + } + + if($lines[0] =~ m!/\*(\-|\*)!) + { + # Don't change comments that start with: + # /**** + # or: + # /*--- + return $source; + } + + $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