如何让clang-format不会将简单的枚举格式化为一行?

时间:2019-07-12 13:12:16

标签: coding-style clang llvm clang-format

代码段1:

enum {
  Test
};

代码段2:

enum { Test };

在llvm 4.3.2中,clang-format会将Snippet 2格式化为Snippet 1,但是在llvm 4.5.0及更高版本中,clang-format做相反的事情,这意味着它将格式化{{ 1}}插入Snippet 1

两个版本都使用相同的格式选项Snippet 2

如何使用-style=google文件控制此行为?我已经尝试了clang格式文档中提到的许多选项,但是它们都不起作用。

1 个答案:

答案 0 :(得分:1)

在Clang 12的documentation(我相信尚未发布)中,有一个新样式选项AllowShortEnumsOnASingleLine应该可以直接控制它。对于代码段1设置为false,对于代码段2设置为true

直到那时,我认为您都无法获得Snippet 1格式。最接近的方法是设置BreakBeforeBraces: Allman,或者(等效地)设置BreakBeforeBraces: Custom并设置BraceWrapping标志AfterEnum: true。这会给你:

enum
{
  Test
};