【问题标题】:clang-format: Break before braces for lambda functions and extern blocksclang-format:在 lambda 函数和外部块的大括号之前中断
【发布时间】:2017-10-17 08:14:12
【问题描述】:

我有一个 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"
{
  // ...
}

【问题讨论】:

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


【解决方案1】:

这似乎已通过在 clang-format 11 中引入的 BeforeLambdaBody 得到解决。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2020-03-06
      • 2020-08-10
      • 2016-05-20
      • 2019-03-20
      • 2015-06-11
      • 1970-01-01
      • 2020-04-04
      • 2020-03-18
      • 1970-01-01
      相关资源
      最近更新 更多