c++ - 如何在 clang 格式的函数参数包装和对齐上强加我自己的自定义样式?
问题描述
继如何以 clang 格式对齐函数参数名称?,我希望能够做相反的事情。换句话说,这:
void ReallyLongFunctionNameWithLotsOfParams(Type param1, Type param2, Type param3,
Type param4, Type param5, Type param6, Type param7, Type param8, Type param9) {
...function body
}
而不是这个:
void ReallyLongFunctionNameWithLotsOfParams(Type param1, Type param2, Type param3,
Type param4, Type param5, Type param6,
Type param7, Type param8, Type param9) {
...function body
}
前者可能吗?后者对我来说看起来非常丑陋,并且在他对链接问题的回答中简单地颠倒@AhmedFasih的指示没有任何作用,至少对我来说没有:
BinPackArguments 和 BinPackParameters 都为 false,并且 AlignConsecutiveAssignments 和 AlignConsecutiveDeclarations 都设置为 true(这些参数的文档)。
我正在使用 VS Code v1.50.1(系统设置),提交 d2e414d9e4239a252d1ab117bd7067f125afd80a,它使用 clang-format v10.0.1。
更新:我刚刚意识到我的评论有点苛刻,我应该在这里提供一些上下文来鼓励点击链接页面。对任何人在这么短的时间内所犯的任何罪行表示歉意。我还应该按照 sweenish 的建议提供我.clang-format
的,所以这里是:
BasedOnStyle: Google
AccessModifierOffset: -4
AlignConsecutiveDeclarations: false
AllowShortIfStatementsOnASingleLine: false
BinPackArguments: true
BinPackParameters: true
BraceWrapping:
AfterClass: false
AfterControlStatement: false
AfterEnum: false
AfterFunction: false
AfterNamespace: false
AfterObjCDeclaration: false
AfterStruct: false
AfterUnion: false
BeforeCatch: false
BeforeElse: false
IndentBraces: false
BreakBeforeBraces: Custom
ColumnLimit: 0
IndentCaseLabels: true
IndentWidth: 4
PointerAlignment: Left
TabWidth: 4
UseTab: Always
解决方案
将以下设置添加AlignAfterOpenBracket: DontAlign
到您的 .clang 格式文件中。
如果您想控制缩进的大小(例如,使用 8 而不是 4),您还需要为ContinuationIndentWidth
.
推荐阅读
- python - 尝试编译 keras 模型时出错 ValueError: Tensor conversion requested dtype int64 for Tensor with dtype float32
- python - 如何将日期信息附加到 read_csv 上的时间列
- rdkit - 如何在rdkit中质子化一个分子?
- javascript - 循环遍历 javascript 对象而不基于键进行排序
- java - 如何使用 Java 接口比较器进行通用合并排序?
- kubernetes - Kubernetes 滚动更新:在更新之前尊重 pod 的准备情况
- javascript - 将字符集放在 JavaScript 文件中不起作用
- asp.net-core - 为了响应在没有足够权限的情况下删除资源的请求,在休息 API 中引发的正确异常是什么?
- data-structures - 为什么我需要堆栈和队列?
- azure - 部署 Azure Web 作业