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

    <tr>
        <th>Summary</th>
        <td>
            [clang-format]:Feature Request Add option to disable space before braces
        </td>
    </tr>

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

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

    <tr>
      <th>Reporter</th>
      <td>
          JM-FRANK
      </td>
    </tr>
</table>

<pre>
    **Description**

Clang-Format currently enforces a space before opening braces `{` for code blocks (functions, control statements, etc.`)`, generating:

```c
void function() { ... }
if (condition) { ... }
```

Request: Introduce a new configuration option (e.g., SpaceBeforeBrace) to allow disabling this space, achieving:


```c
void function(){ ... }
if (condition){ ... }
```

Why This Matters

  Code Style Compliance: Many projects (especially in embedded systems or legacy codebases) mandate brace styles without preceding spaces.
 Consistency: Users should have full control over whitespace rules to match team/company guidelines.
 Existing Limitations: Current options like BreakBeforeBraces control line breaks but not spaces.

Proposed Solution

Add a configuration option such as:
```yaml
SpaceBeforeBrace: None | Always (default)
```

Examples:
```
    SpaceBeforeBrace: None → void f(){ ... }

    SpaceBeforeBrace: Always (default) → void f() { ... }
```

Existing options cannot achieve this:

    BreakBeforeBraces: Controls line breaks, not spaces.

    SpaceBeforeCpp11BracedList: Affects initialization lists only.

    SpacesInParensOptions: Irrelevant to brace positioning.


Example Configuration & Output

Desired .clang-format:
```yaml
BasedOnStyle: LLVM
SpaceBeforeBrace: None
BreakBeforeBraces: Attach
```
Formatted Code:

```c
void example(){  // No space before {
    if (x > 0){  // No space here either
        doSomething();
    }
}
```
This feature would significantly enhance Clang-Format’s flexibility. Thank you for considering this request!
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyEVt1yozgTfRr5pisUyD-YC19gJ66a70smU5PZ3WshNaCNkFhJOGGffkuCeJI4k0lRcRWg_jnn9GmYc7LRiDuy3pP19YINvjV297-7q-P38uv_F5UR447QktDyGh23svfS6OkGScN1UEw3V0djO-aBD9ai9moE1LWxHB0wcD3jCBXWxiKYHrXUDVSWhadkk5J8TzYp1MYCNwKhUoY_OiB0Ww-ah3SO0ANwo701CpxnHjvUPt5Fz5MQgxbx_wEa1GiZl7ohy7nC8CRenKTlyUgBL4EJ3RJaAMn3kCQJkPyapKWsQ25utJDTO-9fOMebwn_HfwZ0nixL-BJKFANHYKDxKdRcy2YI9RgNJmIXgmPSJKHYh4DMPgKzD3iEXN4AU8o8gZCOVSpg5VvpJhTDIcZbiac3Df6-x9-1-GmHf7Uj_Ag13DHv0brpLsAh0PXgR4VwMF2vJNMcAw53TI_QW_M3ch-ZRNcjl0ypEaQG7CoUAgW40XnsHBgLChvGx6iAijl0AYqOacE8TloBFxI5eJK-NYOH3iJHEeCJyLgklHQw2knnUfMx1PGHQ-vAtWZQAlp2QqgHpc5SMie08NRKj5NE7RASeAMd87wFj6wj9MhN14d-mkEKVFLPqW6epQsyg1vZSc8mnS5LOEwjMLPtQMlHhL1F9viKaHeuIQSEKjx2UA0etPGvGiJp-c2a3jgU8GDUENmKt0shgH0sMDfwFpib5fFC5cg6RdLyQnLLEr4ajUDyA5TqiY2RMIE1G5QPyriQw80z63qF7xNEScClps8JbijZbkhBYdLnR8L8JMZHtf0i5ufzeibuhSHOdEB9miuM03YerVDNBXmR5ok_95rAMJ0X_L3r59D3WRbDiFs5uUZZ13FOpJZeMiX_ndhU0nkHRqvxfST3RX9jFrW778-y-2ItKjwx7YOAp4npjYvzLXWTnJ1iZi808Eo6hG7gfvD94Ke3rtFJiwISHu29jvb-saL2zKG419EHQiW3t3_efSK0cOIjQEvvGW_f0TWtFY8ies0njo5TVz81BYQeCT3CV_N2_4RtM0E5meAzkOUNpL861aJFQOlbtPOx8CfMg-nQt8GEp4zLl6iz5C6EF_2zRuYHi_AUDSlsXllLzuaF2Qb7hNf7NMo7JUXhoFb4LCuppB8T-NEy_QijGeatqZ0UaM-rws4biWYLsVuKYlmwBe6yfLXO8nSbFYt2Vy9XFV1uBc03qyzb5jVmaZ5vabaueV2vi4Xc0ZSu0xVNs3yVZkWSbdebnBfVltIt32aUrFLsmFSJUqcuMbZZSOcG3GXLzarIF4pVqFz8rKD0jYgoDR8adhfOXVVD48gqjVr_GclLr-InyZuD62uyLI8zhPPWheCDs-95M-9MfEv59KmxGKzatd73cbgjzY307VAl3ASbD8nnn6t5dRF6jD05Qo9zW6cd_S8AAP__A8DnCQ">