我希望将任何 long for循环自动分为三行;喜欢:
for (auto origin = backup_to_origins[peer].begin();
origin != backup_to_origins[peer].end();
origin++)
但是Google样式的clang格式将其格式化为两行:
for (auto origin = backup_to_origins[peer].begin();
origin != backup_to_origins[peer].end(); origin++)
BinPackArguments
选项将每个for循环分为三行,包括短行,这不是我想要的。
基于行宽,我只希望将占用X
个字符以上的循环分成三行。小于等于{X
个字符的循环,它们可以停留在一行上。我该如何实现?
答案 0 :(得分:0)
我不确定BinPackArguments
为什么对您不起作用。也许您还设置了其他样式选项?也许早期(或更高版本)的clang格式工作方式不同?我使用了clang格式6.0.0来验证此答案中的行为。
我完全能满足您的要求:
BinPackArguments: false
例如,给定包含以下内容的myfile.cpp:
int f()
{
for (auto origin = backup_to_origins[peer].begin();
origin != backup_to_origins[peer].end();
origin++)
{
}
for (auto o = b.begin();
o != b.end();
o++)
{
}
}
命令行clang-format -style='{BasedOnStyle: Google,BinPackArguments: false}' myfile.cpp
产生以下输出:
int f() {
for (auto origin = backup_to_origins[peer].begin();
origin != backup_to_origins[peer].end();
origin++) {
}
for (auto o = b.begin(); o != b.end(); o++) {
}
}
您引用的行长X
由ColumnLimit
样式选项控制,该选项通常默认为80。
有关这些样式选项的更多详细信息,请参见documentation。