[cfe-dev] Clang Format: Add option to align types?

Marcus Johnson via cfe-dev cfe-dev at lists.llvm.org
Tue Oct 9 15:41:31 PDT 2018


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?

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.

Here's a couple examples to better illustrate what I'm talking about:

typedef struct Unaligned_Struct {
int wat;
uint8_t huh;
uint64_t who;
} Unaligned_Struct;

int Unaligned_Average(int A, int B, int num) {
int Average = A + B;
int32_t Divided = Average / num;
return Divided;
}

vs

typedef struct Aligned_Struct {
int      wat;
uint8_t  huh;
uint64_t who;
} Aligned_Struct;

int Aligned_Average(int A, int B, int num) {
int     Average = A + B;
int32_t Divided = Average / num;
return Divided;
}

I'm not sure if the formatting is showing up, so I geuss I'l have to
describe it.

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.

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.

As for my questions, they are:

How exactly do I do this?

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)

and how exactly would I hook this into the Clang-Format library?

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.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20181009/9cc7982d/attachment.html>


More information about the cfe-dev mailing list