clang-format:在lambda函数和extern块的大括号之前中断

时间:2017-05-17 18:11:43

标签: c++ c++11 lambda clang-format

我有一个像这样格式化的lambda函数:

auto cb = [](std::string const& _param)
{
    std::cout << _param;
};

我想将左大括号保留在新行上,但clang-format总是将它放在第一行的末尾。是否可以配置clang-format以遵循上述风格?

我当前配置的相关部分如下所示:

BraceWrapping:                         
  AfterClass:      true   
  AfterControlStatement: true
  AfterEnum:       true
  AfterFunction:   true          
  AfterNamespace:  true                
  AfterStruct:     true
  AfterUnion:      true
  BeforeCatch:     true
  BeforeElse:      true   
  IndentBraces:    true
BreakBeforeBraces: Allman

我也想对extern块做同样的事情:

extern "C"
{
  // ...
}

2 个答案:

答案 0 :(得分:4)

这似乎是通过clang格式11引入的BeforeLambdaBody解决的。

答案 1 :(得分:2)

我认为这个特殊情况没有选择。如果你不认为这是一个答案,我很抱歉,但是当我有clang格式的这些“微调”问题时,我只是根据需要格式化片段并在有趣的片段之前评论clang-format off clang-format on之后。我经常这样做是为了维护一些空白的字符序列,用于对齐代码以便更好地阅读。效果当然是CF不会改变那个片段。所以你的代码可能是

// clang-format off
auto cb = [](std::string const& _param)
{
    std::cout << _param;
};
// clang-format on