Продолжение аргумента функции - PullRequest
2 голосов
/ 07 января 2020

Я просматривал Параметры стиля Clang-Format и не могу найти, есть ли опция для следующего. Если функция и ее аргументы нарушают ColumnLimit, я бы хотел продолжить аргументы в новых строках.

// Good
SomeLongFunction(first_argument,
                 second_argument,
                 third_argument,
                 fourth_argument,
                 fifth_argument);

// Bad
SomeLongFunction(first_argument, second_argument, third_argument,
                 fourth_argument, fifth_argument);

Похоже, что AlignAfterOpenBracket, по крайней мере, позволит мне указать, где делать отступ, когда решит перейти к следующей строке, но я не могу найти то, что мне нужно указать, чтобы разбить аргументы.

1 Ответ

3 голосов
/ 07 января 2020

Вы можете захотеть:

BinPackParameters: false

С этим ваш плохой пример отформатирован в хороший пример. Документация:

BinPackParameters (bool)

Если установлено значение false, параметры объявления функции или определения функции будут либо находиться в одной строке, либо иметь по одной строке.

true:
void f(int aaaaaaaaaaaaaaaaaaaa, int aaaaaaaaaaaaaaaaaaaa,
       int aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) {}

false:
void f(int aaaaaaaaaaaaaaaaaaaa,
       int aaaaaaaaaaaaaaaaaaaa,
       int aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) {}

Дополнительно:

AllowAllParametersOfDeclarationOnNextLine: false

может быть полезно, если вы предпочитаете разбивать все аргументы, даже если они помещаются в одну строку после одного разрыва. Документация:

AllowAllParametersOfDeclarationOnNextLine (bool)

Если объявление функции не помещается в строку, разрешите поместить все параметры объявления функции в следующую строку, даже если BinPackParameters имеет значение false .

true:
void myFunction(
    int a, int b, int c, int d, int e);

false:
void myFunction(int a,
                int b,
                int c,
                int d,
                int e);
...