<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/97368>97368</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Feature Requests (Clang-Format): Allow type members to be aligned
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang-format
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          dsyx
      </td>
    </tr>
</table>

<pre>
    Give a separate option to align type members, such as enumerations, structures, etc.

In the current version (19.0.0) of Clang-Format, similar requirements can only be achieved through options such as `AlignConsecutiveAssignments` and `AlignConsecutiveDeclarations`, but this will affect assignments and declarations in functions that are not expected to be aligned.

Aligning type members makes sense, which makes the code easier to read, for example, 1 looks more pleasant than 2:

```c
// 1
typedef enum {
  LLVMRet            = 1,
  LLVMBr             = 2,
  LLVMSwitch         = 3,
  LLVMIndirectBr     = 4,
  LLVMInvoke = 5,
  LLVMUnreachable    = 7,
  LLVMCallBr         = 67,
 LLVMFNeg           = 66,
  LLVMAdd            = 8,
  LLVMFAdd = 9,
  LLVMSub            = 10,
  LLVMFSub           = 11,
  LLVMMul = 12,
  LLVMFMul           = 13,
  LLVMUDiv           = 14,
  LLVMSDiv           = 15,
  LLVMFDiv           = 16,
  LLVMURem = 17,
  LLVMSRem           = 18,
  LLVMFRem           = 19,
  LLVMShl            = 20,
  LLVMLShr           = 21,
  LLVMAShr = 22,
  LLVMAnd            = 23,
  LLVMOr             = 24,
  LLVMXor            = 25,
  LLVMAlloca         = 26,
  LLVMLoad = 27,
  LLVMStore          = 28,
  LLVMGetElementPtr  = 29,
  // ...
} LLVMOpcode;
```
```c
// 2
typedef enum {
 LLVMRet = 1,
  LLVMBr = 2,
  LLVMSwitch = 3,
  LLVMIndirectBr = 4,
  LLVMInvoke = 5,
  LLVMUnreachable = 7,
  LLVMCallBr = 67,
 LLVMFNeg = 66,
  LLVMAdd = 8,
  LLVMFAdd = 9,
  LLVMSub = 10,
 LLVMFSub = 11,
  LLVMMul = 12,
  LLVMFMul = 13,
  LLVMUDiv = 14,
 LLVMSDiv = 15,
  LLVMFDiv = 16,
  LLVMURem = 17,
  LLVMSRem = 18,
  LLVMFRem = 19,
  LLVMShl = 20,
  LLVMLShr = 21,
  LLVMAShr = 22,
  LLVMAnd = 23,
  LLVMOr = 24,
  LLVMXor = 25,
  LLVMAlloca = 26,
  LLVMLoad = 27,
  LLVMStore = 28,
  LLVMGetElementPtr = 29,
  // ...
} LLVMOpcode;
```

Thanks
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJysVtFu6zYM_RrlhWggK2kSP_ghbeaLC_RuQ7sOe6VlOtYqS7mSnLZ_P8hJexOlybZuReHA5iFNHvkcEL1Xa0NUsOsbdr0aYR9a64rav76MKlu_Fl_UlgDB0wYdBgK7CcoaCBZQq7WB8Loh6KiryHkmbsH3sgX0QKbvyGEE754H18vQOxruKMgx4yvGl7vrVwOhJZC9c2QCbMn5-BYmFlk-5mPORA62gVuNZn1VWtdhGIqqTml04Oh7rxx1ZIIHiQas0a9QEaBsFW2phtA626_bffv-vU0248s4x601nmQf1JaWAyVDLTbjgKb-CLUiqfFtvhmP3VR9gNAqD89Ka8CmIRkAf1QbStUHeaAMNL2Ru5vQYgB0BMYGoJcNyRAbt8Mc8e1UH3E2dKTM-ugIoMMn8uDJeIo9PbdKtvuHA8O2JiD0ilws7QjrCGusA3rBbqOHrAy0tU8eOusINprQo4mzoQHBJsvDLuLsw7_c34uSiRKy3V1sraZm-BqAzW92TwHu7n7_dk8BDv7YZAUZE7eHkBsHKUQkkIdnFWR7BJkkkK-mVo5k2FeLkOkJZGufaAhdJ6FH4whli5Wmt-x5ArlFrQ9ajZDZASZCyp9pnUwymyVllnWdTrtIIGXExECe0tBXJ2TyNPkYNGBSxr_1ehdIeS5jJElOiX5cqW2KSZl--ACTUl5-gEnJerynbhdJT-MhRpLsEx4_wJxQ2uqTjy-l9O6hdSkmpXQZMUMk5XRpTg5cpJz-8oEEUk7_sO4Ek3K61NpKPMaknN5Z3H1d4oTTEJ3gODvl9AuFn_Tgwb8Gt8cccrp3hvH4zcXmq92Em2hKbHKTGMpFfxEX_eXNXs54ygUf-Rv_-A_eccE4zhrGWZv4196QGsK7H3zCBc5rP1X8u-DPy_wz4j4v6bNCPq_eT2j2nFDPivOSIj-lxH8gwP9Lf8P1txbNkx_VxaTOJzmOqMjmWb5YTKbTbNQWWTOtc1pgVXNOmDdy1uRNJmXDr_P5nGikCsHFlM-54JmY8mzMJ1ihnNbYcC4WWLEppw6VHmu97cbWrUfK-56KfD6ZLUYaK9J-2FGFkMMS2OyXQBG3VlfEtKuqX3s25Vr54H8UCipoKkrCuH3CPX3vyQcfd8vjdTJnkyXEQ3k-3qiONrBR73TRhrDxcQ8aGF2r0PbVWNqOiTK-df9ztXH2T5KBiXKYxTNR7sbZFuKvAAAA___gEA1O">