为什么clang格式在getter括号前不中断?

时间:2019-11-11 09:36:34

标签: c++ code-formatting clang-format

相关帖子how to make clang-format add new line before opening brace of a function?的答案无济于事。

我在Windows上的Eclipse CDT中将clang格式9.0.0与Cppstyle一起使用。 clang格式像这样格式化以下吸气剂:

int returnNumber() { return 3; }

但我更喜欢格式

int returnNumber()
{
    return 3;
}

我既无法使用断言BS_Allman也无法使用自定义样式来实现clang格式。除了手动格式化还有其他解决方案吗?

我的示例源文件如下:

Header.h

#pragma once

namespace Test
{

class MyClass
{
public:
    int returnNumber() { return 3; }
};

} /* namespace Test */

我的配置文件如下:

Language: Cpp

AlwaysBreakTemplateDeclarations: 'true'

BreakBeforeBraces: Allman

ColumnLimit: '80'

IndentWidth: '2'

NamespaceIndentation: None

Standard: Cpp11

TabWidth: '2'

UseTab: Always

PointerAlignment: Left

AlignAfterOpenBracket: DontAlign

BreakConstructorInitializers: AfterColon

MaxEmptyLinesToKeep: 2

1 个答案:

答案 0 :(得分:1)

您的配置存在问题,因为您错过了使用简短功能控制clang-format行为的选项。

将此添加到您的配置中,进行传送将很不错:

AllowShortFunctionsOnASingleLine: None

引用clang-format documentation

  

AllowShortFunctionsOnASingleLine(ShortFunctionStyle)

     

根据值,int f() { return 0; }可以放在一行上。

     

可能的值:

     
      
  • SFS_None(在配置中:无)切勿将函数合并为一行。

  •   
  • SFS_InlineOnly(在配置中:InlineOnly)仅合并在类内部定义的函数。与“内联”相同,不同之处在于   表示“空”:即顶级空函数也不会合并。

  •   
  • SFS_Empty(在配置中:空)仅合并空函数。

  •   
  • SFS_Inline(在配置中:内联)仅合并在类内部定义的函数。表示“空”。

  •   
  • SFS_All(配置:全部)合并适合一行的所有功能。

  •