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

    <tr>
        <th>Summary</th>
        <td>
            [clang-format] Allow appending to various `XXXMacros` inline within code
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

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

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

<pre>
    What I want
------------
```c
// clang-format push StatementMacros MY_STATEMENT_MACRO
#define MY_STATEMENT_MACRO(name) void name() { }

// clang-format now knows to format these as complete statements
MY_STATEMENT_MACRO(foo)
MY_STATEMENT_MACRO(bar)
MY_STATEMENT_MACRO(baz)
```
The example only shows one usage (adding to `StatementMacros`) but this feature -- if implemented -- should be extended to every available vector-of-special-identifiers. The `clang-format push` comment would make `clang-format` behave as-if I had
```yaml
StatementMacros:
  - MY_STATEMENT_MACRO
```
in my `.clang-format` from that point on.

Current Behavior
-----------------
Current behavior is __clunky__. If I were to do it "right", I would have to define my macro, use it, then remember to add it to the proper place in `.clang-format`. Furthermore, suppose I remove or change the macro; I now also need to remember to remove it from `.clang-format` (lest it need different formatting now).

Since the above is tedious, I (and most everyone else at work), always resort to the decidedly *unsavory* nuclear option...
```c
// clang-format off
MY_STATEMENT_MACRO(foo)
MY_STATEMENT_MACRO(bar)
MY_STATEMENT_MACRO(baz)
// clang-format on
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy8VU9v67YT_DT0ZSFBpv_JBx-c5BnID8ivQBOg6clYkSuLDUUKJGXX_fTFSk6a-Pm1PdUwYJMcDWeHsxTGaA6OaCMWd2LxMME-NT5s_ofKVzWaalJ5fd780mCCRzihS6J4EMU2-_QZZ8SyGL_qMpY7IXegLLpDVvvQYoKujw08J0zUkktPqIKP8PTr_vll-_Lt6dv_X_ZP2_uff3onmGmqjaNbCFk6bEnINRy90TAOSh6L1R2I1cOF44dSnD_Bm_OnCMnDZS41FAkwgvJtZykRxHetcWS6qaT2Xsj13wAqDP8E-OMD8OHjOHxpCOh3ZD3gnT1DbFi0dwR9xAOBkCVqbdyBCxHL4speJpJrqHouz0SoCVMfCLIMTA2GeRlMmmdi43uroeItEzlNmknpSOEMeERjsbIER1LJh8zXWexIGbSZ0eSSqQ2FmAMr5hhcH7xYFmws7wanYZ8W376DMqqiBo98EJmp4REa1FfWnLG149R1tbPLkQNkPw7WV4eNg_bMMvJrHXXwLSSOfueNS-Bd_jlW930IXMwdyzU-fN8Zn9rjHVxdwGAi7PfK9u7tvN_n8MiVnigQO649mARCymAOTRJSCnnPy4NrgzcMGpujPUPLtTOkjwQm8b_UkINALbUVBUaj1syZPC9BF3xHATqLisC4W9XnsOtDaii0PhBTxr7rfCR4ZF5_JPABVIPuQAPlKGJ2B49Db6GNHhyNCfos5PKwSaO9t3wXsrQUE2MGBm3qmgb3RkzitDt_EnL95UCejVOjGKyGPSIk0sb3cfSPW8VpaH1MY6i5i8hyz3Mkwxs3obwHtCc8RwgUffiwTJMymrQ9g5Db3kU8-nAWcguuV5YwgO-S8S7P839_H_q6_u_ulVv7uyutE72Z6fVsjRPaTJer1bKcruZy0mzKmS6nK6zlCku1QFUulCymRb2k2VKX9XxiNrKQs2JWTKfzuZTTfF4WuFI1qrLQ80pVYl5Qi8bm1h7b3IfDxMTY02Y5LdbFxGJFNg4vISkdnWBY5OQvHiZhw89kVX-IYl5YE1P8iyWZZIe315cULR5gay3nsOvIvV-PRwycBg7d6-vrxwUJxllupZNJjXGgvKZJH-ymSakbrpTBuoNJTV_lyrdC7nj7y0_WBf8bqSTkbhAdhdwNRf0ZAAD__0AGUD8">