铛格式:括号为lambda函数和extern块

问题描述:

我有格式化像这样的lambda函数前暂停:铛格式:括号为lambda函数和extern块

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" 
{ 
    // ... 
} 
+0

你使用的是什么版本的'clang-format'?这可能是一个错误:https://www.mail-archive.com/[email protected]/msg05471.html – syntagma

+0

我使用5.0.0版本(tags/google/stable/2017-03- 17) –

+0

我刚刚发现错误报告,跟踪lambda的问题https://bugs.llvm.org//show_bug.cgi?id=32151和extern块https://bugs.llvm.org//show_bug.cgi?id = 26689 –

我不认为有一个选项对于这个特殊情况。我很抱歉,如果你不认为这是一个答案,但是当我使用clang格式的这些“微调”问题时,我只是按照我的意愿格式化代码段,并在clang-format off之前评论。我经常这样做来保留一些空白字符序列,用于对齐代码以获得更好的阅读效果。效果当然是CF不会改变这个片段。所以你的代码可能是

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