<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/97303>97303</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[clang-format] Feature Request: Newline after declarations
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang-format
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
Jacobfaib
</td>
</tr>
</table>
<pre>
I would like to enforce that variable declarations are followed (or preceded) by `N` empty lines. To my knowledge, this is not possible to directly enforce in current (`clang-format-19`). Something like:
```yaml
EmptyLinesAroundDecls:
Enabled: <bool>
Before: <int>
After: <int>
```
It would be great if this could also distinguish between empty lines after block openings, and functions calls. If I specify that I want `Before: 1` and `After: 1`, I want to ignore `Before` for block openings. Probably this requires an additional option `IgnoreBlockOpening`?
```c++
// GOOD
foo();
int x;
double y;
auto z = [] { return 0; }();
foo();
{
int x; // Note, no empty line above OK
foo();
}
```
```c++
// BAD (no empty lines before or after decls)
foo();
int x;
double y;
auto z = [] { return 0; }();
foo();
{
int x; // BAD, empty line after block opening
}
```
```c++
// BAD (no empty lines after decls)
foo();
int x;
double y;
auto z = [] { return 0; }();
foo();
```
```c++
// BAD (no empty lines before decls)
foo();
int x;
double y;
auto z = [] { return 0; }();
foo();
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzEVd1y6jYQfhpxsxNGyAbiC1_gOHRoO0mn7QtI8tqoEVqOJIfSp-_IDhwn5bS9OO2Z8fCzy_5837fLyhBM5xBLtqzYsp7JPu7Jl99LTaqVRs0UNedyByfqbQPWvCBEAnQteY0Q9zLCq_RGKovQoLbSy2jIBZAeoSVr6YQNMHFPHo4eNTbYMFGAOgNb8Se24oCHYzyDNQ7DHH4lOJzhxdHJYtMhEw8Q9yaACeAowpFCMKlWJGiMRx3t-dqNcaB779HFVJCtuLbSdXct-YOMd4uCrTgTxRx-oQPGvXHdgIdlG8ZrxjfJPTxnebCj6TG19mPqbOOpd02N2oZrAMCjS8Ablm2AZQ-KyLLs8eKssCWPbz7j4sS1aSP6G55rC-PXXXzjXSF0HmUE04506MEsbUg0hGhc15uwB4XxhOimlIJMtUBZ0i9AR3TGdSHRKl0Dbe_0KJeW1oY57FrYQTiiNu15VHcHJ5kIXfHPeBZJthTPVvwKZTHQ-3AJiASmc-RxErri0NLHXubwkycllT2P0Dx-6o1PjTuQTWNSf9ICHdOHlGw3pK1SkucxR6qcbT9QqJmo0jNaxZaJLXz3_FyPhpYozYgoWHb5yfBqXITfr7aG-jRs56tB9pHgD2BZDePCAFtX4DH23gFnWQVsXd9M_KWCbF1dpuJSG966faI4LICjiaAgFb0iPP8wTQJwI_26vjlUf0tQtanT7ryrGEAN8gH5t2FqhjUQxZeQ_Qck3sJXvafgI33Vpk7sTan76yp8da7-HUP_J09fS_5voPo_Ypo1ZdYUWSFnWC7Wi-I-z7MVn-1LzJQoli2uVSu51MtWikUul61UfJUJLWamFFzkfM0XizwTOZ-r-7y5xyW261xL5IrlHA_S2Lm1r4c5-W5mQuixLNYZz2ZWKrRhuJpCTO8MEyLdUV-msDvVd4Hl3JoQw-dE0UQ7XNx3gcsatihj7xF-xk89hpj-Vp_wNJnd6Ymd9d6W-xiPw0UaBOxM3PdqrunAxDaVe3u7O3r6DXVkYjuACExsRxyvpfgzAAD__wIuUFU">