<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">