<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr">Hi Marcus,<div><br></div><div>There's a way to do exactly what you described by setting AlignConsecutiveDeclarations to true in your .clang-format configuration. It is not clear whether you also want to set AlignConsecutiveAssignments true because all names in the examples have the same width, but you might also want to consider this option.</div><div><br></div><div>You can see more Clang-Format options and their descriptions in the documentation: <a href="https://clang.llvm.org/docs/ClangFormatStyleOptions.html">https://clang.llvm.org/docs/ClangFormatStyleOptions.html</a></div><div><br></div><div>-Kirill</div></div></div></div><br><div class="gmail_quote"><div dir="ltr">On Wed, Oct 10, 2018 at 1:41 AM Marcus Johnson via cfe-dev <<a href="mailto:cfe-dev@lists.llvm.org">cfe-dev@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div style="font-size:large">I'm not sure if this is even the right place to ask, I did a quick search looking for a clang-format specific list but couldn't find one, does anyone know if there even is one?</div><div style="font-size:large"><br></div><div style="font-size:large">I'm trying to add an option to Clang-Format that would allow users to align variables in structs/classes and functions based on the width of the type identifier.</div><div style="font-size:large"><br></div><div style="font-size:large">Here's a couple examples to better illustrate what I'm talking about:</div><div style="font-size:large"><br></div><div style="font-size:large"><div><div>typedef struct Unaligned_Struct {</div><div><span class="gmail-m_6595934400586316718gmail-Apple-tab-span" style="white-space:pre-wrap">  </span>int wat;</div><div><span class="gmail-m_6595934400586316718gmail-Apple-tab-span" style="white-space:pre-wrap">       </span>uint8_t huh;</div><div><span class="gmail-m_6595934400586316718gmail-Apple-tab-span" style="white-space:pre-wrap">   </span>uint64_t who;</div><div>} Unaligned_Struct;</div><div><br></div><div>int Unaligned_Average(int A, int B, int num) {</div><div><span class="gmail-m_6595934400586316718gmail-Apple-tab-span" style="white-space:pre-wrap">  </span>int Average = A + B;</div><div><span class="gmail-m_6595934400586316718gmail-Apple-tab-span" style="white-space:pre-wrap">   </span>int32_t Divided = Average / num;</div><div><span class="gmail-m_6595934400586316718gmail-Apple-tab-span" style="white-space:pre-wrap">       </span>return Divided;</div><div>}</div><div><br></div><div>vs</div><div><br></div><div>typedef struct Aligned_Struct {</div><div><span class="gmail-m_6595934400586316718gmail-Apple-tab-span" style="white-space:pre-wrap">       </span>int      wat;</div><div><span class="gmail-m_6595934400586316718gmail-Apple-tab-span" style="white-space:pre-wrap">       </span>uint8_t  huh;</div><div><span class="gmail-m_6595934400586316718gmail-Apple-tab-span" style="white-space:pre-wrap"> </span>uint64_t who;</div><div>} Aligned_Struct;</div><div><br></div><div>int Aligned_Average(int A, int B, int num) {</div><div><span class="gmail-m_6595934400586316718gmail-Apple-tab-span" style="white-space:pre-wrap">      </span>int     Average = A + B;</div><div><span class="gmail-m_6595934400586316718gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>int32_t Divided = Average / num;</div><div><span class="gmail-m_6595934400586316718gmail-Apple-tab-span" style="white-space:pre-wrap">       </span>return Divided;</div><div>}</div><div><br></div><div>I'm not sure if the formatting is showing up, so I geuss I'l have to describe it.</div><div><br></div><div>The Aligned blocks all of the variables have X number of spaces added between the type and the variable name, so that they're all aligned in a single column.</div><div><br></div><div>it makes reading the code a lot easier, I've been doing thi manually with my code for a while, and Clang-Format not having this feature is the biggest reason I don't currently use it.</div><div><br></div><div>As for my questions, they are:</div><div><br></div><div>How exactly do I do this?</div><div><br></div><div>Should I write a new enum (I've been thinking about calling it "AlignTypeDeclarationStyle", but that seems a little clunky, and I'm not sure if it's the best way to describe what exactly is going on)</div><div><br></div><div>and how exactly would I hook this into the Clang-Format library?</div><div><br></div><div>I've never contributed to the LLVM project before, I've read the documents a few times, and I've tried reading the code, but it's very intertwined and it's hard to drill down as deep as I need.</div></div></div></div></div></div></div>
_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev</a><br>
</blockquote></div></div></div></div>