I am using the following options in my .clang-format file:
AlignConsecutiveDeclarations: true PointerAlignment: Right   The current formatting result is the following:
char *         var1; SomeOtherType *var2; int            var3;   The result I was expecting would be:
char          *var1; //note the changed position of *  SomeOtherType *var2; int            var3;   How can I configure clang-format to align the asterix (*) with the variable name rather then with the type when I am using the AlignConsecutiveDeclarations option?
PointerAlignment: Right is unfortunately not implemented yet.
See https://github.com/llvm/llvm-project/blob/master/clang/lib/Format/WhitespaceManager.cpp#L643
void WhitespaceManager::alignConsecutiveDeclarations() {   if (!Style.AlignConsecutiveDeclarations)     return;    // FIXME: Currently we don't handle properly the PointerAlignment: Right   // The * and & are not aligned and are left dangling. Something has to be done   // about it, but it raises the question of alignment of code like:   //   const char* const* v1;   //   float const* v2;   //   SomeVeryLongType const& v3;    AlignTokens(Style, [](Change const &C) { return C.IsStartOfDeclName; },               Changes); } 
                        It's fixed now!
The review https://reviews.llvm.org/D27651 has been re-applied in https://reviews.llvm.org/D103245 and committed in https://reviews.llvm.org/rG3e333cc82e42e1e2ecc974d896489eebe1a5edc2.
This change will be included in LLVM 13 release.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With