clang-format AlignAfterOpenBracket 列表参数

clang-format AlignAfterOpenBracket list params

提问人:doliphin 提问时间:10/21/2021 更新时间:1/25/2022 访问量:2837

问:

这篇文章提出了一个类似的问题,即当参数太多时如何修改格式。

我非常喜欢 rust-fmt 样式。有什么方法可以用 clang-format 做到这一点吗?

例如 1:与AlignAfterOpenBrackets: AlwaysBreak

return_t foo(
    some_t param_1, some_t param_2, some_t param_3, 
    some_t param_4) {
    // function body
}

例如 2:所需的格式

return_t foo(
    some_t param_1, 
    some_t param_2, 
    some_t param_3, 
    some_t param_4
) {
    // function body
}
C++ 嚓咔 嚓 clang-format

评论


答:

6赞 valiano 1/25/2022 #1

clang-format 刚刚有了一个新选项 - (登陆 17 年 1 月 22 日)正是这样做的。AlignAfterOpenBracketBlockIndent

请参阅 https://reviews.llvm.org/rG966f24e5a62a

[clang格式]向 AlignAfterOpenBracket 添加 BlockIndent 选项

此样式类似于 AlwaysBreak,但在新行上放置右括号。

例如,如果您有一个多行参数列表,则 clang-format 目前仅支持按参数中断,但将右括号放在最后一个参数的行上。

Function(
  param1,
  param2,
  param3);

其他代码样式工具(例如 rustfmt)支持的样式是允许将右括号放在自己的行上,从而帮助用户能够快速推断代码块的边界。

Function(
  param1,
  param2,
  param3
);

此功能预计将在 clang-format-14 中发布。
同时,您可以尝试从 LLVM 夜间构建中获取它。