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