【发布时间】:2018-06-23 04:03:22
【问题描述】:
使用默认设置的 clang-format,如下:
if ((exprA) &&
(exprB))
变成:
if ((exprA) && (exprB))
我试图防止将条件折叠成一行,但没有成功。
目前有没有办法做到这一点?
在 clang 格式 documentation 中,BreakBeforeBinaryOperators 参数似乎最接近我所追求的:
BreakBeforeBinaryOperators(BinaryOperatorStyle)
二元运算符的包装方式。
- BOS_None(配置中:
None)在运算符后中断。
但它似乎只在需要换行时才起作用(超出列限制),这不是通常的情况。
【问题讨论】:
-
一种解决方法是在第一行的末尾添加注释。 clang-format 不会加入这些行。
-
您也可以将ColumnLimit设置为0。见stackoverflow.com/questions/33656800/clang-format-line-breaks/…
-
感谢@ambiso 的有用提示!不幸的是,更改源代码是不可行的,因为这种格式分布在整个应用程序中。将列限制设置为 0 确实有效,但会产生一些不希望的副作用,例如弄乱 c'tor 参数的对齐方式(可以通过一些调整来修复)。从那时起它也并不理想,没有强制执行列限制,但它仍然比我到目前为止所拥有的更进一步。
-
@ambiso 您能否将您的 cmets 格式化为答案,并可能扩展一下?这样,如果在赏金到期时没有其他答案,我可以奖励你。
标签: c++ clang clang-format