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

Fed*_* B. 15 c++ lambda c++11 clang-format

我有一个lambda函数格式如下:

auto cb = [](std::string const& _param)
{
    std::cout << _param;
};
Run Code Online (Sandbox Code Playgroud)

我想将开口支撑保持在新线上,但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
Run Code Online (Sandbox Code Playgroud)

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

extern "C"
{
  // ...
}
Run Code Online (Sandbox Code Playgroud)

Elv*_*ira 6

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

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


小智 5

这似乎通过BeforeLambdaBody在 clang-format 11 中引入来解决。