防止clang格式将多行if语句折叠为单行

时间:2018-01-14 07:23:42

标签: c++ clang clang-format

使用具有默认设置的clang-format,以下内容:

if ((exprA) && 
    (exprB))

变成:

if ((exprA) && (exprB))

我试图阻止将条件折叠成一条线,但没有成功 目前有办法实现这个目标吗?

在clang格式documentation中,BreakBeforeBinaryOperators参数似乎与我之后的最接近:

  

BreakBeforeBinaryOperators (BinaryOperatorStyle)
  包装二元运算符的方法。

     
      
  • BOS_None(在配置中:None)在运营商之后休息。
  •   

但它似乎只在需要包装时才会启动(超出列限制),这不是通常情况。

1 个答案:

答案 0 :(得分:2)

根据Clang 10 document,您的请求可以完成。您必须在clang文件中进行这两项更改

  1. BraceWrapping:中设置AfterControlStatement: true
  2. 结束后ColumnLimit: 1
output -: if ((exprA) &&
              (exprB))

如果有任何疑问,可以在Here尝试。但问题是您的其他代码也已格式化。

无法仅拆分 if ((exprA) && (exprB))。如果任何人都可以为此创建补丁,那么做到这一点并不是一件容易的事。这需要大量的时间和精力。