[PATCH] D132131: [clang-format] Adds a formatter for aligning trailing comments over empty lines
Björn Schäpers via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu Sep 8 12:35:11 PDT 2022
HazardyKnusperkeks added a comment.
In D132131#3776956 <https://reviews.llvm.org/D132131#3776956>, @MyDeveloperDay wrote:
> an example of the exact reason why we should not reuse the same struct... https://github.com/llvm/llvm-project/issues/57464
Just a bit rephrasing.
In D132131#3777004 <https://reviews.llvm.org/D132131#3777004>, @MyDeveloperDay wrote:
> another reason for using a struct, is that we might want to say something like "AlignNamespaceTrainingComments:false" https://github.com/llvm/llvm-project/issues/57504
Something like that we really want, and that is something I'd like to put on top of this change. Also for all comments following a `}`. That's the only reason I've disabled aligning comments for now.
================
Comment at: clang/docs/ClangFormatStyleOptions.rst:865
+
+ * ``TCAS_DontAlign`` (in configuration: ``DontAlign``)
+ Don't align trailing comments.
----------------
yusuke-kadowaki wrote:
> HazardyKnusperkeks wrote:
> > MyDeveloperDay wrote:
> > > yusuke-kadowaki wrote:
> > > > MyDeveloperDay wrote:
> > > > > Is Don'tAlign the same as Leave that other options support (for options it best if we try and use the same terminiology
> > > > >
> > > > > Always,Never,Leave (if that fits)
> > > > IMHO, `Leave` probably fits but `DontAlign` is more straightforward. Also `DontAlign` is used for other alignment styles like `BracketAlignmentStyle` so it would be more natural.
> > > Leave should mean do nothing.. I'm personally not a fan of DontAlign because obvious there should be a ' between the n and the t but I see we use it elsewhere
> > >
> > > But actually now I see your DontAlign is effectively the as before (i.e. it will not add extra spaces)
> > >
> > > The point of Leave is what people have been asking for when we introduce a new option, that is we if possible add an option which means "Don't touch it at all" i.e. if I want to have
> > >
> > > ```
> > > int a; // abc
> > > int b; /// bcd
> > > int c; // cde
> > > ```
> > >
> > > Then so be it
> > >
> > >
> > Leave is a nice option, yes.
> > I think it is complementary to `Dont`.
> >
> > But maybe if the option is called `AlignTrailingComments` one may interpret `Leave` not as "don't touch the position of a comment at all" (what do we do, if the comment is outside of the column limit?), but as "just don't touch them, when they are somewhat aligned". Just a thought.
> > Leave should mean do nothing
>
> Ok now I see what `Leave` means.
> But that should be another piece of work no?
>
> Of course me or someone can add the feature later (I don't really know how to implement that though at least for now)
>
>
Fine by me.
================
Comment at: clang/include/clang/Format/Format.h:373
+ /// Different styles for aligning trailing comments.
+ enum TrailingCommentsAlignmentStyle : int8_t {
+ /// Don't align trailing comments.
----------------
yusuke-kadowaki wrote:
> HazardyKnusperkeks wrote:
> > MyDeveloperDay wrote:
> > > yusuke-kadowaki wrote:
> > > > MyDeveloperDay wrote:
> > > > > all options have a life cycle
> > > > >
> > > > > bool -> enum -> struct
> > > > >
> > > > > One of the thing I ask you before, would we want to align across N empty lines, if ever so they I think
> > > > > we should go straight to a struct
> > > > > all options have a life cycle
> > > >
> > > > I see your point. But we are checking `Style.MaxEmptyLinesToKeep` to determine how many consecutive lines to align. So currently no need to specify it from the option. You'll find the implementation below.
> > > I think its a bad idea to hijack a different option to do this..I don't think it means the same thing and I think what whilst it might work there will be someone somewhere who doesn't want it to behave like this and will call it out as a bug.
> > >
> > >
> > Since you are strictly against `Enabled` what to put into a struct?
> > Since you are strictly against Enabled what to put into a struct?
>
> @MyDeveloperDay
> Can you answer this? Plus it would be helpful if you just write down what your ideal struct be like.
>
> > I don't think it means the same thing
>
> How so? There's no empty lines more than `MaxEmptyLinesToKeep` all the time no?
>
> > I don't think it means the same thing
>
> How so? There's no empty lines more than `MaxEmptyLinesToKeep` all the time no?
>
But you could set `MaxEmptyLinesToKeep` to 3 and aligning comments to over 2 empty lines.
```
int thisIsAVariable = 5; // It Really is
int stillAligned = 2; // Yep
int notSoMuch = 2; // Nope
```
It certainly doesn't hurt to have a value there.
================
Comment at: clang/include/clang/Format/Format.h:373
+ /// Different styles for aligning trailing comments.
+ enum TrailingCommentsAlignmentStyle : int8_t {
+ /// Don't align trailing comments.
----------------
HazardyKnusperkeks wrote:
> yusuke-kadowaki wrote:
> > HazardyKnusperkeks wrote:
> > > MyDeveloperDay wrote:
> > > > yusuke-kadowaki wrote:
> > > > > MyDeveloperDay wrote:
> > > > > > all options have a life cycle
> > > > > >
> > > > > > bool -> enum -> struct
> > > > > >
> > > > > > One of the thing I ask you before, would we want to align across N empty lines, if ever so they I think
> > > > > > we should go straight to a struct
> > > > > > all options have a life cycle
> > > > >
> > > > > I see your point. But we are checking `Style.MaxEmptyLinesToKeep` to determine how many consecutive lines to align. So currently no need to specify it from the option. You'll find the implementation below.
> > > > I think its a bad idea to hijack a different option to do this..I don't think it means the same thing and I think what whilst it might work there will be someone somewhere who doesn't want it to behave like this and will call it out as a bug.
> > > >
> > > >
> > > Since you are strictly against `Enabled` what to put into a struct?
> > > Since you are strictly against Enabled what to put into a struct?
> >
> > @MyDeveloperDay
> > Can you answer this? Plus it would be helpful if you just write down what your ideal struct be like.
> >
> > > I don't think it means the same thing
> >
> > How so? There's no empty lines more than `MaxEmptyLinesToKeep` all the time no?
> >
> > > I don't think it means the same thing
> >
> > How so? There's no empty lines more than `MaxEmptyLinesToKeep` all the time no?
> >
>
> But you could set `MaxEmptyLinesToKeep` to 3 and aligning comments to over 2 empty lines.
> ```
> int thisIsAVariable = 5; // It Really is
>
>
> int stillAligned = 2; // Yep
>
>
>
> int notSoMuch = 2; // Nope
> ```
> It certainly doesn't hurt to have a value there.
> > Since you are strictly against Enabled what to put into a struct?
>
> @MyDeveloperDay
> Can you answer this? Plus it would be helpful if you just write down what your ideal struct be like.
>
For me it would currently look like:
```
struct Style {
enum E {
Yes,
No,
};
E State;
unsigned OverEmptyLines;
}
```
Names are open for debate.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D132131/new/
https://reviews.llvm.org/D132131
More information about the cfe-commits
mailing list