我有一个C ++函数调用,我手动和故意格式化 这样:
DoSomethingForAPurposeThatCausesALongFunctionName(
arg_0,
arg_1,
arg_2);
clang-format想要像这样重新格式化:
DoSomethingForAPurposeThatCausesALongFunctionName(
arg_0, arg_1, arg_2)
我不想要这个。 AllowAllParametersOfDeclarationOnNextLine
似乎
控制函数声明的这种行为,但函数调用呢?
有没有相应的设置?
我的.clang-format
看起来像这样:
BasedOnStyle: Google
BinPackArguments: false
BinPackParameters: false
AllowAllParametersOfDeclarationOnNextLine: false
AlignAfterOpenBracket: AlwaysBreak
答案 0 :(得分:1)
我还想防止在同一行上但在fun(
行之下的多个参数。就我而言,我不介意第一个参数是否仍与fun(
在同一行。我只希望它们要么全部排在fun(
上,要么全部堆叠。
我能够通过将PenaltyBreakBeforeFirstCallParameter
增加到100来实现这一目标。
可能根据其他惩罚设置可能需要一个不同的值。
这将产生:
fun(my_long_argument_0,
my_long_argument_1,
my_long_argument_2);
在您的情况下,假设DoSomethingForAPurposeThatCausesALongFunctionName(arg_0,
对于一行而言太长,它将产生:
DoSomethingForAPurposeThatCausesALongFunctionName(
arg_0,
arg_1,
arg_2);
答案 1 :(得分:0)
以下配置正确,可以使用clang-format 5.0获得所需的格式。
AlignAfterOpenBracket: AlwaysBreak
AllowAllParametersOfDeclarationOnNextLine: false
BinPackParameters: false
答案 2 :(得分:0)
a similar question 投票结果最高的答案中的解决方案对我有效,
尝试设置:
BinPackArguments: false
BinPackParameters: false
并确保
ExperimentalAutoDetectBinPacking: false
AllowAllParametersOfDeclarationOnNextLine: false
或未定义。
答案 3 :(得分:-1)
我认为你需要
AllowAllParametersOfDeclarationOnNextLine: true
它适用于我,除非第一个参数与函数调用位于同一行,在这种情况下,它将它们全部放在同一行。
我也有
ExperimentalAutoDetectBinPacking: false
可能会产生一些影响吗?
我使用的是3.8.0版本。