防止 clang-format 将多行 if 语句折叠成一行
Prevent clang-format from collapsing multi-line if statements into a single line
使用默认设置的 clang-format,如下:
if ((exprA) &&
(exprB))
变成:
if ((exprA) && (exprB))
我试图防止将条件折叠成一行,但没有成功。
目前有办法实现吗?
在 clang 格式 documentation 中,BreakBeforeBinaryOperators
参数似乎最接近我所追求的:
BreakBeforeBinaryOperators (BinaryOperatorStyle)
The way to wrap binary operators.
- BOS_None (in configuration:
None
) Break after operators.
但它似乎只在需要换行(超出列限制)时才会启动,这不是通常的情况。
根据Clang 10 document,您的要求可以完成。您必须对您的 clang 文件进行这两项更改
- 在
BraceWrapping:
中设置AfterControlStatement: true
。
- 比设定后
ColumnLimit: 1
output -: if ((exprA) &&
(exprB))
如果您有任何疑问,可以在 Here 试试这个。但是问题是您的其他代码也将被格式化。
没有办法只能拆分if ((exprA) && (exprB))
。如果任何人都可以为此创建一个补丁,那么就可以做到,但是为此创建一个补丁并不是那么容易。需要很多时间和精力。
使用默认设置的 clang-format,如下:
if ((exprA) &&
(exprB))
变成:
if ((exprA) && (exprB))
我试图防止将条件折叠成一行,但没有成功。
目前有办法实现吗?
在 clang 格式 documentation 中,BreakBeforeBinaryOperators
参数似乎最接近我所追求的:
BreakBeforeBinaryOperators (BinaryOperatorStyle)
The way to wrap binary operators.
- BOS_None (in configuration:
None
) Break after operators.
但它似乎只在需要换行(超出列限制)时才会启动,这不是通常的情况。
根据Clang 10 document,您的要求可以完成。您必须对您的 clang 文件进行这两项更改
- 在
BraceWrapping:
中设置AfterControlStatement: true
。 - 比设定后
ColumnLimit: 1
output -: if ((exprA) &&
(exprB))
如果您有任何疑问,可以在 Here 试试这个。但是问题是您的其他代码也将被格式化。
没有办法只能拆分if ((exprA) && (exprB))
。如果任何人都可以为此创建一个补丁,那么就可以做到,但是为此创建一个补丁并不是那么容易。需要很多时间和精力。