[llvm-dev] Clang-format: Allow alignment across empty lines and comments

Lukas Barth via llvm-dev llvm-dev at lists.llvm.org
Fri Jan 1 08:07:30 PST 2021


Paul C. Anagnostopoulos via llvm-dev writes:
> How would the formatter know whether the declarations following the
> comment are a continuation of the preceding series of declarations?

If "across comments" is set, it would always assume that declarations
following a comment are a continuation of the previous ones. Only a line
containing anything but a declaration or a comment would break alignment.

One could further control this by distinguishing between block and line
comments. So for example:

int bar = 1;
// int baz = 2;
int longfoo = 3;

would be aligned to

int bar     = 1;
// int baz = 2;
int longfoo = 3;

But

int bar = 1;
/* This comment is meant to break alignment */
int longfoo = 3;

would stay as-is.

Would you prefer this behavior? I can see its appeal - it gets rid of
all the "superfluous change" when commenting-out an assignment in the
middle of a block, without lobbing together blocks of alignment you want
separated. However, this would make configuration more complicated. For
full flexibility, the enum would then need to have the members:

  - `<Something>_None` (the old `false`)
  - `<Something>_Consecutive` (the old `true`)
  - `<Something>_AcrossComments`
  - `<Something>_AcrossBlockComments`
  - `<Something>_AcrossLineComments`
  - `<Something>_AcrossEmptyLines`
  - `<Something>_AcrossEmptyLinesAndComments`
  - `<Something>_AcrossEmptyLinesAndBlockComments`
  - `<Something>_AcrossEmptyLinesAndLineComments`

Regards,
Lukas
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 861 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20210101/4782a1bf/attachment.sig>


More information about the llvm-dev mailing list