如何阻止clang格式在=标志后打破?

时间:2015-09-02 11:15:40

标签: c++ clang-format

我使用clang-format和一个相当小的配置文件,我对这些选项不是很熟悉。为了这个问题,请考虑这段未格式化的代码:

int msgResult = ShowMBox(R_MESSAGE, msgText, MB_OK_ENABLE | MB_CANCEL_ENABLE, MB_STYLE_ERROR);

当我在这个片段上运行clang-format时,我得到了

int msgResult
    = ShowMBox(R_MESSAGE, msgText, MB_OK_ENABLE | MB_CANCEL_ENABLE, MB_STYLE_ERROR);

但我更喜欢

int msgResult = ShowMBox(R_MESSAGE, msgText, MB_OK_ENABLE | MB_CANCEL_ENABLE, 
                         MB_STYLE_ERROR);

有没有办法在=之后强行执行不破坏,或者至少不愿意破解?

1 个答案:

答案 0 :(得分:0)

我相信您想要这两个样式选项:

BinPackArguments: true
AlignAfterOpenBracket: Align

如果没有BinPackArguments,则clang-format将尝试将所有函数参数放在一行上,或者如果不能将每行放置一个函数参数上。大多数预定义样式已将BinPackArguments设置为true,但Mozilla样式却没有。

在没有将AlignAfterOpenBracket设置为Align的情况下,clang格式有时会倾向于将所有参数放在第二行,而不是仅将一个参数与其他参数不对齐。大多数预定义样式已将AlignAfterOpenBracket设置为Align,但WebKit样式却没有。

有关这些设置的更多详细信息,请参见documentation

我的测试是使用clang格式6.0.0完成的。也许您有一个不支持所有这些功能的早期版本。