【问题标题】:clang-format: always break all parameters, one per lineclang-format:总是打破所有参数,每行一个
【发布时间】:2018-06-02 19:32:59
【问题描述】:

我希望我的函数原型/定义始终将参数分离到单独的行中,而不管总长度如何。带有选项的其他默认 .clang-format

BasedOnStyle: Chromium
AlignAfterOpenBracket: 'AlwaysBreak'
BinPackArguments: 'false'
BinPackParameters: 'false'
ColumnLimit: '80'

给出以下格式

  void foo(float a, float b);

  void foo(float a, float b, float c, float d, float e, float f, float g);

  void
  foo(float a, float b, float c, float d, float e, float f, float g, float h);

  void foo(
      float a,
      float b,
      float c,
      float d,
      float e,
      float f,
      float g,
      float h,
      float i);

我希望它们都被一致地打破,每行一个参数,如下所示:

  void foo(
      float a,
      float b);

  void foo(
      float a,
      float b,
      float c,
      float d,
      float e,
      float f,
      float g);

  void foo(
      float a,
      float b,
      float c,
      float d,
      float e,
      float f,
      float g,
      float h);

  void foo(
      float a,
      float b,
      float c,
      float d,
      float e,
      float f,
      float g,
      float h,
      float i);

有没有什么机制可以做到这一点?

赏金奖励:我还希望我的成员函数实现根据返回类型、类名和函数名进行拆分,例如而不是这个:

float A::foo(float a, float b)
{
// ...
}

我想要这个:

float
A::
foo(float a,
    float b)
{
// ...
}

【问题讨论】:

  • 也对此感兴趣。据我所知,这不受支持,对此我感到非常惊讶。
  • 我认为您的参数格式不受支持。但是,使用带有 All 或 AllDefinitions 值的 AlwaysBreakAfterReturnType 选项可以在返回类型后中断。
  • 我一直在尝试做同样的事情。我更喜欢每一行的参数,但是两种风格的不一致看起来比坚持第一种风格更糟糕。有人向 llvm 请求添加此选项吗?

标签: c++ formatting clang-format


【解决方案1】:

这是不可能的。

唯一可以调整的是返回类型被拆分时。通过设置惩罚PenaltyReturnTypeOnItsOwnLine: 1000,它转了这条线

void
foo(float a, float b, ...

进入

void foo(
    float a, float b, ...

并通过AlwaysBreakAfterReturnType: TopLevelDefinitions 格式

float A::foo(float a, float b)
{
// ...
}

float
A::foo(float a, float b) {
  // ...
}

【讨论】:

    猜你喜欢
    • 2022-08-17
    • 2015-11-30
    • 2014-11-10
    • 2016-12-02
    • 2014-03-24
    • 1970-01-01
    • 2018-10-23
    • 1970-01-01
    • 2020-03-18
    相关资源
    最近更新 更多