tinloaf marked 5 inline comments as done.
tinloaf added inline comments.

================
Comment at: clang/include/clang/Format/Format.h:130
+    /// \endcode
+    ACA_AcrossComments
+  };
----------------
MyDeveloperDay wrote:
> tinloaf wrote:
> > MyDeveloperDay wrote:
> > > Is there a case for aligning over empty lines and comments?
> > > 
> > > ```
> > > int a           = 5;
> > > 
> > > /* comment */
> > > int oneTwoThree = 123;
> > > ```
> > Not sure I understand what you mean. Currently, the Option `AcrossComments` 
> > includes 'across empty lines'. So, there currently is no case for "across 
> > comments, but not across empty lines". I'm not sure if that is really 
> > something people want to do. Do you think so? I can add it. 
> I could see a case where you might want to begin a new "alignment group" by 
> leaving a blank line.
> 
> ```
> /* align these 3 */
> int a = 5;
> /* align these 3 */
> int b = 6;
> /* align these 3 */
> int c = 7;
> 
> /* align these 2 which are longer */
> int d           = 5
> /* align these 2 which are longer */
> int oneTwoThree = 123;
> ```
Yes, good point. I've added the option `AlignAcrossEmptyLinesAndComments`, and 
made `AlignAcrossComments` do what the name suggests.


================
Comment at: clang/lib/Format/WhitespaceManager.cpp:367
+                            unsigned StartAt, bool AcrossEmpty = false,
+                            bool AcrossComments = false) {
   unsigned MinColumn = 0;
----------------
MyDeveloperDay wrote:
> could this be an enum?
> 
> ```
> enum {
>     None
>     AcrossEmptyLines,
>     AcrossComments,
>     AcrossEmptyLinesAndComments,
> }
> ```
Yes, that's probably cleaner, though that means I need a rather ugly `switch` 
statement to convert one enum into the other where `AlignTokens` is called. 
Maybe one could address this with some template magic, but that's probably not 
less ugly than the switch statement.


================
Comment at: clang/lib/Format/WhitespaceManager.cpp:421
       // matching token, the sequence ends here.
-      if (Changes[i].NewlinesBefore > 1 || !FoundMatchOnLine)
+      if (((Changes[i].NewlinesBefore > 1) && (!AcrossEmpty)) ||
+          (!FoundMatchOnLine && (!(LineIsComment && AcrossComments))))
----------------
curdeius wrote:
> Nit: unnecessary parentheses around !AcrossEmpty.
> Same around !(LineIsComment && AcrossComments).
> Maybe you might factor out a bool variable for this condition?
Good point. I factored this out into two booleans, which should improve 
readability.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D93986/new/

https://reviews.llvm.org/D93986

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to