Clang 叮当格式:如果参数不';不合适?

Clang 叮当格式:如果参数不';不合适?,clang,clang-format,Clang,Clang Format,我不知道如果参数不合适,是否可以将clang格式配置为始终中断,即: // Try this first: SomeCall(aaa, bbb, ccc); // If doesn't fit, try this: SomeCall( aaa, bbb, ccc); // If still doesn't fit, do NOT try this: SomeCall(aaa, bbb, ccc); // and NOT this: SomeCall(aaa,

我不知道如果参数不合适,是否可以将clang格式配置为始终中断,即:

// Try this first:
SomeCall(aaa, bbb, ccc);

// If doesn't fit, try this:
SomeCall(
     aaa, bbb, ccc);

// If still doesn't fit, do NOT try this:
SomeCall(aaa, bbb,
         ccc);

// and NOT this:
SomeCall(aaa,
         bbb,
         ccc);

// but immediately do this:
SomeCall(
     aaa,
     bbb,
     ccc);

到目前为止,我已经得出结论,使用clang格式3.4是不可能做到这一点的。是正确的吗?

不幸的是,我只能访问
clangformat
3.8.0(“
clangformatversion3.8.0(tags/RELEASE\u380/final)
”),所以我无法轻松地对3.4版进行测试

有一本关于最新版本的
clangformat
的手册,我不知道您是否找到了。它链接到一个列表。其中,有一个样式选项与问题的标题相呼应:
AlignAfterOpenBracket:AlwaysBreak
,如果参数不适合一行,则始终在一个打开的括号后打断

要使用它,请将以下内容放入
~/.clang格式的文件中:

AlignAfterOpenBracket: AlwaysBreak
经过一些测试,它似乎正在做你想让它做的事情

它格式化

SomeCall(aaa, bbb, ccc);
作为

如果
aaa、bbb、ccc
不适合一行。它不会在
aaa
bbb
之间中断,直到
aaa
也太长,在这种情况下
bbb
ccc
将在同一行。也就是说,它在开头
)后中断,但随后尝试填充行。它不会在所有逗号上自动中断

查看
clangformat
3.4,很遗憾,该配置选项似乎不存在。这给您留下了两个选项:

  • 升级到更新版本的
    clangformat
  • 不要

  • 在较新版本的clang格式中,现在可以通过以下方式实现:

    AlignAfterOpenBracket: AlwaysBreak
    BinPackArguments: false
    BinPackParameters: false
    

    有关这些选项的完整说明,请参阅。

    我们还需要“叮当格式”标记,但我无法添加。我几乎需要相同的格式。当分成多行时,我希望将第一个参数放在下一行,并带有一个缩进。它的格式是对其中一个缩进的响应。事实上,我刚刚了解到了它的存在昨晚使用了clang格式的e,今天早上第一件事就是下载了它。在弄清楚如何在vim中映射到^K之后,我议程上的下一件事就是研究如何像您描述的那样配置函数参数的连续性。需要深入研究它,看看是否有一种扩展可配置性的好方法。这对参数非常有用(函数调用),您是否也有参数(函数声明)的解决方案?许多thx!
    AlignAfterOpenBracket: AlwaysBreak
    BinPackArguments: false
    BinPackParameters: false