# 填充选项
[TOC]
## break-blocks
**--break-blocks 或 -f**
在条件语句和循环语句前后填充一个空行(例如:'if', 'for', 'while'等语句)。
```
isFoo = true;
if (isFoo) {
bar();
} else {
anotherBar();
}
isBar = false;
格式化为:
isFoo = true;
if (isFoo) {
bar();
} else {
anotherBar();
}
isBar = false;
```
## break-blocks=all
**--break-blocks=all 或 -F**
在条件语句和循环语句前后填充一个空行(例如:'if', 'for', 'while'等语句)。但是,将分支语句作为独立一个模块分隔(例如:'else', 'catch'等分支语句)。
```
isFoo = true;
if (isFoo) {
bar();
} else {
anotherBar();
}
isBar = false;
格式化为:
isFoo = true;
if (isFoo) {
bar();
} else {
anotherBar();
}
isBar = false;
```
## pad-oper
**--pad-oper 或 -p**
在操作符前后插入空格,这也会在逗号之后插入空格。如果可能的话,行尾注释将保留在原始列中。注意,没有去除填充空格的选项。所以一旦填充,它们就会保持填充状态。
```
if (foo==2)
a=bar((b-c)*a,d--);
格式化为:
if (foo == 2)
a = bar((b - c) * a, d--);
```
## pad-comma
**--pad-comma 或 -xg**
在逗号之后插入空格。如果使用 [pad-oper](),就不需要设置该选项。如果可能的话,行尾注释将保留在原始列中。注意,没有去除填充空格的选项。所以一旦填充,它们就会保持填充状态。
```
if (isFoo(a,b))
bar(a,b);
格式化为:
if (isFoo(a, b))
bar(a, b);
```
## pad-paren
**--pad-paren 或 -P**
在括号操作符无论内部还是外部,前后插入空格。如果可能的话,行尾注释将保留在原始列中。
```
if (isFoo((a+2), b))
bar(a, b);
格式化为:
if ( isFoo ( ( a+2 ), b ) )
bar ( a, b );
```
## pad-paren-out
**--pad-paren-out 或 -d**
只在括号操作符的外部,前后插入空格。空的括号将不会被填充。如果可能的话,行尾注释将保留在原始列中。这可以使用下面的 [unpad-paren]() 选项,以删除不需要的空格填充。
```
if (isFoo((a+2), b))
bar(a, b);
格式化为:
if (isFoo ( (a+2), b) )
bar (a, b);
```
## pad-first-paren-out
**--pad-first-paren-out 或 -xd**
只在第一层括号操作符的外部,前后插入空格。空的括号将不会被填充。如果可能的话,行尾注释将保留在原始列中。这可以使用下面的 [unpad-paren]() 选项,以删除不需要的空格填充。如果同时设置 [pad‑paren]() 或 [pad‑paren-out]() ,该选项则被忽略。如果同时设置 [pad‑paren‑in](),格式化结果与 [pad‑paren]() 相同。
```
if (isFoo((a+2), b))
bar(a, b);
格式化为:
if (isFoo ((a+2), b))
bar (a, b);
```
## pad-paren-in
**--pad-paren-in 或 -D**
只在括号操作符的内部,前后插入空格。空的括号将不会被填充。如果可能的话,行尾注释将保留在原始列中。这可以使用下面的 [unpad-paren]() 选项,以删除不需要的空格填充。
```
if (isFoo((a+2), b))
bar(a, b);
格式化为:
if ( isFoo( ( a+2 ), b ) )
bar( a, b );
```
## pad-header
**--pad-header 或 -H**
在条件语句或循环语句与括号之间插入空格(例如:'if', 'for', 'while'等)。如果可能的话,行尾注释将保留在原始列中。这可以使用下面的 [unpad-paren]() 选项,以删除不需要的空格填充。
```
if(isFoo((a+2), b))
bar(a, b);
格式化为:
if (isFoo((a+2), b))
bar(a, b);
```
## unpad-paren
**--unpad-paren 或 -U**
在括号操作符无论内部还是外部,前后去除多余的空格。该选项可以跟上面的 [pad‑paren](),[pad‑paren‑out](),[pad‑paren‑in](),和[pad‑header]() 等选项一起使用。只有上述选项之外的空格会被删除。
例如,如果源文件的括号内部和外部都填充了空格,而您只需要内部填充。您需要使用 [unpad-paren]() 删除外部填充的空格,而选项 [pad‑paren‑in]() 保留内部填充的空格。如果仅仅只有这一个选项 [pad‑paren‑in](),不会删除外部填充空格。
```
if ( isFoo( ( a+2 ), b ) )
bar ( a, b );
格式化为(不需要任何填充空格):
if(isFoo((a+2), b))
bar(a, b);
```
## delete-empty-lines
**--delete-empty-lines 或 -xe**
删除函数或方法中的空行。函数或方法之外的空行不会被删除。如果与 [break-blocks]() 或 [break-blocks=all]() 一起使用,它将删除除[ break-blocks]() 选项添加的空行之外的所有其他空行。
```
void Foo()
{
foo1 = 1;
foo2 = 2;
}
格式化为:
void Foo()
{
foo1 = 1;
foo2 = 2;
}
```
## fill-empty-lines
**--fill-empty-lines 或 -E**
用前一行的空白字符填充空行。
## align-pointer
**--align-pointer=type 或 -k1**
**--align-pointer=middle 或 -k2**
**--align-pointer=name 或 -k3**
附加一个空格在指针或引用操作符(& *,或^)与变量类型(左)或变量名(右)之间,或将符号与类型和名称之间都填充空格(中间)。如果可能的话,类型和名称之间的间隔将被保留。此选项适用于C/ C++、C++ /CLI和C#文件。如果要单独格式化引用符号,请使用以下 [align-reference]() 选项。
```
char* foo1;
char & foo2;
string ^s1;
becomes (with align-pointer=type):
char* foo1;
char& foo2;
string^ s1;
char* foo1;
char & foo2;
string ^s1;
becomes (with align-pointer=middle):
char * foo1;
char & foo2;
string ^ s1;
char* foo1;
char & foo2;
string ^s1;
becomes (with align-pointer=name):
char *foo1;
char &foo2;
string ^s1;
```
## align-reference
**--align-reference=none 或 -W0**
**--align-reference=type 或 -W1**
**--align-reference=middle 或 -W2**
**--align-reference=name 或 -W3**
此选项将使引用与指针分离。指针不会被这个选项改变。如果指针和引用要对齐,请使用前面的 [align-pointer]() 选项。选项 **align-reference=none** 不会改变引用对齐方式。其他选项与对齐指针相同。此选项适用于C/ C++、C++ /CLI和C#文件文件。
```
char &foo1;
becomes (with align-reference=type):
char& foo1;
char& foo2;
becomes (with align-reference=middle):
char & foo2;
char& foo3;
becomes (with align-reference=name):
char &foo3;
```
