<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/76663>76663</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[clang-format] Add an option to specify where align declaration and assignment should apply
</td>
</tr>
<tr>
<th>Labels</th>
<td>
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
davidavetyan
</td>
</tr>
</table>
<pre>
**AlignConsecutiveDeclarations** and **AlignConsecutiveAssignments** options in clang-format apply on all variables in the code, making it impossible to have different settings for class members / enums / other variable definitions.
For example:
```
struct A
{
// Class/struct member declarations to be aligned
int m_a;
double m_b;
long m_c;
};
int f()
{
// Other variable declarations shouldn't be aligned
int firstVar;
double secondVar;
}
```
Same distinction should be available for assignment as well:
```
// Align assignments in enum value definitions, but nowhere else.
enum WindowState {
WindowNoState = 0x00000000,
WindowMinimized = 0x00000001,
WindowMaximized = 0x00000002,
WindowFullScreen = 0x00000004,
WindowActive = 0x00000008
};
```
The option could look something like this:
```
AlignDeclarationsOptions:
ClassMemberVariables: true
Other: false
AlignAssignmentsOptions:
ClassMemberVariables: false
EnumValues: true
Other: false
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyMVctu6zYQ_RpqM4ghU7ZsLbTQjevd7V2kSJcBRY4kNnwYJOUk_fqClJzIrgNcw9CDPJw58zpi3sveINZk-4NsDxkbw2BdLdhZCnbG8MFM1lrxURPaENo0Svbm0RqPfAzyjAfkijkWpDV-QgAzAu6Dm-RLowkXrD2lkyANcMVM_9BZp1kAdjqpD7AGmFJwZk6yVmGChQGBW4GEPoJmr9L0IANIfbLey1YhBAsDOyMI2XXo0ATwGII0vYfOuujGe9CoW3QeCD0CmlFPTzYM6D7dgcBOGpkIrkh-IHlztA7wnemTQlI00xop8_mfXn1wIw9w2dz9mB4AILqIXh4jA0KPM3KiAmKRyBhDi8Bi-lB8GZAmxJt-YaRY2BV2jHT1S3u1rKzpQb_wz0WyO3w9p2s02BG6J7T6nu-v26wsiPrBjkoYQnfhW8addD48M3ePs0dujVhuRpLXeYXp_YnpWFQfpOHR-ew7uT0zqRK5WGH22WXAPLyhUt_Vag4wteniWOqz2BVwZmq86oPYde0YwNi3AR0CKo9zb6QDf0sj7NtTYAHhKpfTxp922orJLQ6Qv-fzj9DHW-xPaaSW_6K4wa7vYdn7XSy9gz2OSj1xh2iusZs72IbHsYX_8d3faaib1KbrXwPOIw48FUtZ-wreagxDnFwlXxHCIP13FUqlWWrMr0kwPvEwjdPPNETPF6EgRQPBjThjUgfHtY4pj0uCyf5Cln7f_MIUwB9m1M-xV24933d9iTETdSGqomIZ1utdvsmLap_vsqEuqrzLq-16XbW0rUrscF9h1W3FJt9V5Z5nsqY5Lda0WK9LWtDdqmvXZcHLtthXguasJZscNZNqpdRZr6zrM-n9iPWuLMsiU6xF5S-S7-oIemjH3pNNrqQP_utYkEGlj8NSn8n2AI0QwMylvMGCPyGX3QdMk5GkYCkW6buwmM15fJPSZ6NT9RDCKWU-TWUvwzC2K241ocfIZr49nJz9B3kg9JgiikqagvovAAD__wAqF-U">