如何使clang格式在<<和>>处中断

时间:2019-07-04 05:15:07

标签: c++ clang-format

如何使clang格式在'<<'和'>>'运算符处中断?

我尝试将BreakBeforeBinaryOperators设置为All,但这似乎没有什么区别。

我希望代码的格式如下:

in >> a
   >> b
   >> c;

代替

in >> a >> b >> c;

1 个答案:

答案 0 :(得分:2)

要实现此目的,您需要两个样式设置:

BreakBeforeBinaryOperators: All
ColumnLimit: 0

或者,将样式设置为预定义的WebKit样式,这将为您设置这两种样式设置。

documentation说:

列限制为0表示没有列限制。在这种情况下, clang格式将尊重输入中的换行决策 声明,除非它们与其他规则相抵触。

这不是一个很好的解决方案,原因有几个:

  • 如文档所述,clang格式将尊重您开始时的换行符。但是,如果还没有换行符,则不会添加换行符。因此,行in >> a >> b >> c;不会分成几行。

  • 输出未将第一行的>>与后续行的>>对齐。它只是以通常的续行量缩进。例如,如果您的常规缩进为4,则将得到:

    in >> a
        >> b
        >> c;
    

    这实际上有点奇怪,因为如果运算符为<<,则clang-format会将所有三个运算符排列在一起。

  • 您可能并且可能确实希望将ColumnLimit设置为80之类的值,以便其他行在合理的位置断开。

但这似乎是使用clang格式可以做到的最好的方法。

我已经使用clang格式6.0.0进行了测试,但是我相信较新的版本会起到类似的作用,并且我看不到任何看起来有帮助的新样式选项。