Clang-формат: всегда ломать все параметры, по одному в строке - PullRequest
0 голосов
/ 02 июня 2018

Я бы хотел, чтобы мои прототипы / определения функций всегда разделяли параметры на отдельные строки, независимо от общей длины.В противном случае по умолчанию .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)
{
// ...
}

1 Ответ

0 голосов
/ 18 января 2019

Это невозможно.

Единственное, что можно настроить, это когда тип возврата разделен.Устанавливая штраф 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) {
  // ...
}
...