如果有换行符,则clang格式将不会附加大括号

时间:2018-08-21 12:51:00

标签: c++ clang-format

我对clang格式有疑问:

我要强制执行的是,始终将块开头的括号附加到函数头/控制序列上……

这意味着代替

int f()
{
     return 1;
}

if(o < 1)

{
    return -1;
}

clang-format应该始终像这样附上开括号:

int f() {
     return 1;
}

if(o < 1) {
    return -1;
}

虽然这在第一种情况下有效(函数头和花括号之间没有换行符),但如果函数头/ if等之间存在换行符,则不起作用。

我没有为clang-format找到任何强制执行此操作的选项。 最接近我要查找的选项是BreakBeforeBraces: Attach,但这也无法正确格式化第二种情况。使用此选项以及BraceWrapping下的选项也无法解决问题。 有没有一种方法可以配置clang-format来连接诸如开括号之类的行,这些行始终总是终止于它们之前的最后一行代码的末尾?

我玩过https://clangformat.com/http://cf.monofraps.net/之类的在线配置器,但找不到能满足我需要的选项集。

我当前使用的是clang格式的3.8版。

1 个答案:

答案 0 :(得分:0)

您可以使用:

MaxEmptyLinesToKeep: 0

这将导致删除空行,然后将大括号格式化为您要求的格式。

但是,我希望这对您来说不是一个很好的解决方案,因为它将删除所有空行,而不仅是大括号前的空行。

除此之外,我认为使用clang格式6.0.0不可能做到这一点。我也不认为它是在新版本中添加的-documentation中似乎没有与此相关的内容。