clang-format:如何不与上一行中的任何标记对齐?

问题描述 投票:0回答:1

我想实现变量/函数/等的长度永远不会影响以下行的缩进,或者至少尽可能少地影响。例如,我已经有了

AlignAfterOpenBracket: AlwaysBreak
,它将所有参数移动到下一行,例如函数名太长:

const auto result = SomeVeryLooooooonFunctionName(
    parameter1,
    parameter2,
    parameter3,
    parameter4,
    parameter5,
    parameter6,
    parameter7);

很好:当第一行中的任何内容发生更改时,下一行根本不会受到影响(除非整个调用变得如此短以至于适合一行,但这没关系)。

但是,当我立即添加(或任何其他二进制运算)某些内容时,它就变得不受欢迎了:

const auto result = SomeVeryLooooooonFunctionName(
                        parameter1,
                        parameter2,
                        parameter3,
                        parameter4,
                        parameter5,
                        parameter6) +
    1;

看起来参数现在与函数名称对齐(加上

ContinuationIndentWidth: 4
)。我可以接受大缩进(尽管在我看来这很丑),但我的问题是现在,当我例如更改
result
的名称,所有后续行都会更改其缩进,这正是我想要的。

这将是可取的:

const auto result =
    SomeVeryLooooooonFunctionName(
        parameter1,
        parameter2,
        parameter3,
        parameter4,
        parameter5,
        parameter6) +
    1;

但实际上,只要更改第一行中的名称不会导致所有后续行重新缩进,一切都可以。

这是我的 .clang 格式文件:

---
Language: Cpp
BasedOnStyle: Mozilla

AlignAfterOpenBracket: AlwaysBreak
AlignOperands: false
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakAfterReturnType: None
PenaltyReturnTypeOnItsOwnLine: 0
ColumnLimit: 100
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: true
IndentWidth: 2
...
c++ clang-format
1个回答
0
投票

我找到了一种有效的方法。我添加了

PenaltyIndentedWhitespace: 10
,现在我得到了我想要的:

const auto result =
    SomeVeryLooooooonFunctionName(
        parameter1,
        parameter2,
        parameter3,
        parameter4,
        parameter5,
        parameter6) +
    1;
© www.soinside.com 2019 - 2024. All rights reserved.