【问题标题】:How to let clang-format do not format simple enum into a single line?如何让 clang-format 不将简单的枚举格式化为一行?
【发布时间】:2019-07-12 13:12:16
【问题描述】:

片段 1:

enum {
  Test
};

片段 2:

enum { Test };

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

两个版本都使用相同的格式选项,-style=google

如何使用.clang-format 文件控制这种行为?我尝试了很多在 clang-format doc 中提到的选项,但它们都不起作用。

【问题讨论】:

    标签: coding-style clang llvm clang-format


    【解决方案1】:

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

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

    enum
    {
      Test
    };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-11-17
      • 2019-01-11
      • 2017-10-30
      • 2019-06-18
      • 2014-05-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多