首页 > 解决方案 > 如何在 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

标签: c++clangclang-format

解决方案


将以下设置添加AlignAfterOpenBracket: DontAlign到您的 .clang 格式文件中。

如果您想控制缩进的大小(例如,使用 8 而不是 4),您还需要为ContinuationIndentWidth.


推荐阅读