1# document ref: http://clang.llvm.org/docs/ClangFormatStyleOptions.html
2
3#禁用当前format文件
4DisableFormat: false
5# BasedOnStyle: LLVM
6# 访问说明符(public、private等)的偏移
7AccessModifierOffset:   -4
8# 开括号(开圆括号、开尖括号、开方括号)后的对齐: Align, DontAlign, AlwaysBreak(总是在开括号后换行)
9AlignAfterOpenBracket:  DontAlign
10# 连续赋值时,对齐所有等号
11AlignConsecutiveAssignments:    false
12# 连续声明时,对齐所有声明的变量名
13AlignConsecutiveDeclarations:   false
14# 使用反斜杠换行不做对齐
15AlignEscapedNewlines: DontAlign
16# 左对齐逃脱换行(使用反斜杠换行)的反斜杠
17AlignEscapedNewlinesLeft:   false
18# 水平对齐二元和三元表达式的操作数
19AlignOperands:  false
20# 对齐连续的尾随的注释
21AlignTrailingComments:  false
22# 允许函数声明的所有参数在放在下一行
23AllowAllParametersOfDeclarationOnNextLine:  false
24# 允许短的块放在同一行
25AllowShortBlocksOnASingleLine:  false
26# 允许短的case标签放在同一行
27AllowShortCaseLabelsOnASingleLine:  false
28# 允许短的函数放在同一行: None, InlineOnly(定义在类中), Empty(空函数), Inline(定义在类中,空函数), All
29AllowShortFunctionsOnASingleLine:   None
30# 允许短的if语句保持在同一行
31AllowShortIfStatementsOnASingleLine:    false
32# 允许短的循环保持在同一行
33AllowShortLoopsOnASingleLine:   false
34# 总是在定义返回类型后换行(deprecated)
35AlwaysBreakAfterDefinitionReturnType:   None
36# 总是在返回类型后换行: None, All, TopLevel(顶级函数,不包括在类中的函数),
37#   AllDefinitions(所有的定义,不包括声明), TopLevelDefinitions(所有的顶级函数的定义)
38AlwaysBreakAfterReturnType: None
39# 总是在多行string字面量前换行
40AlwaysBreakBeforeMultilineStrings:  false
41# 总是在template声明后换行
42AlwaysBreakTemplateDeclarations:    true
43# false表示函数实参要么都在同一行,要么都各自一行
44BinPackArguments:   true
45# false表示所有形参要么都在同一行,要么都各自一行
46BinPackParameters:  true
47# 大括号换行,只有当BreakBeforeBraces设置为Custom时才有效
48BraceWrapping:
49  # class定义后面
50  AfterClass:   false
51  # 控制语句后面
52  AfterControlStatement:    false
53  # enum定义后面
54  AfterEnum:    false
55  # 函数定义后面
56  AfterFunction:    true
57  # 命名空间定义后面
58  AfterNamespace:   false
59  # ObjC定义后面
60  AfterObjCDeclaration: false
61  # struct定义后面
62  AfterStruct:  false
63  # union定义后面
64  AfterUnion:   false
65  # extern "C"后面
66  AfterExternBlock: false
67  # catch之前
68  BeforeCatch:  false
69  # else之前
70  BeforeElse:   false
71  # 缩进大括号
72  IndentBraces: false
73  # 空函数
74  SplitEmptyFunction: true
75  # 空的类、结构、枚举
76  SplitEmptyRecord: true
77  # 空的namespace
78  SplitEmptyNamespace: true
79# 在二元运算符前换行: None(在操作符后换行), NonAssignment(在非赋值的操作符前换行), All(在操作符前换行)
80BreakBeforeBinaryOperators: None
81# 在大括号前换行: Attach(始终将大括号附加到周围的上下文), Linux(除函数、命名空间和类定义,与Attach类似),
82#   Mozilla(除枚举、函数、记录定义,与Attach类似), Stroustrup(除函数定义、catch、else,与Attach类似),
83#   Allman(总是在大括号前换行), GNU(总是在大括号前换行,并对于控制语句的大括号增加额外的缩进), WebKit(在函数前换行), Custom
84#   注:这里认为语句块也属于函数
85BreakBeforeBraces:  Custom
86BreakBeforeInheritanceComma: false
87BreakInheritanceList: AfterColon
88# 在三元运算符前换行
89BreakBeforeTernaryOperators:    false
90# 在构造函数的初始化列表的逗号前换行
91BreakConstructorInitializersBeforeComma: false
92# 每行字符的限制,0表示没有限制
93ColumnLimit:     120
94# 描述具有特殊意义的注释的正则表达式,它不应该被分割为多行或以其它方式改变
95CommentPragmas: '^ IWYU pragma:'
96# 构造函数的初始化列表要么都在同一行,要么都各自一行
97ConstructorInitializerAllOnOneLineOrOnePerLine: true
98# 构造函数的初始化列表的缩进宽度
99ConstructorInitializerIndentWidth:  4
100# 延续的行的缩进宽度
101ContinuationIndentWidth:    4
102# 去除C++11的列表初始化的大括号{后和}前的空格
103Cpp11BracedListStyle:   true
104# 继承最常用的指针和引用的对齐方式
105DerivePointerAlignment: false
106# 关闭格式化
107DisableFormat:  false
108# 自动检测函数的调用和定义是否被格式为每行一个参数(Experimental)
109ExperimentalAutoDetectBinPacking:   false
110#增加namespace注释
111FixNamespaceComments: true
112# 需要被解读为foreach循环而不是函数调用的宏
113ForEachMacros:  [ foreach, Q_FOREACH, BOOST_FOREACH ]
114# 对#include进行排序,匹配了某正则表达式的#include拥有对应的优先级,匹配不到的则默认优先级为INT_MAX(优先级越小排序越靠前),
115#   可以定义负数优先级从而保证某些#include永远在最前面
116IncludeCategories:
117  -Regex:           '^<ext/.*\.h>'
118  Priority:        3
119  -Regex:           '^<.*\.h>'
120  Priority:        2
121  -Regex:           '^<.*'
122  Priority:        1
123  -Regex:           '.*'
124  Priority:        4
125# 缩进case标签
126IndentCaseLabels:   true
127# 预处理宏不缩进
128IndentPPDirectives: None
129# 缩进宽度
130IndentWidth:    4
131# 函数返回类型换行时,缩进函数声明或函数定义的函数名
132IndentWrappedFunctionNames: false
133# 保留在块开始处的空行
134KeepEmptyLinesAtTheStartOfBlocks:   true
135# 开始一个块的宏的正则表达式
136MacroBlockBegin:    ''
137# 结束一个块的宏的正则表达式
138MacroBlockEnd:  ''
139# 连续空行的最大数量
140MaxEmptyLinesToKeep:    1
141# 命名空间的缩进: None, Inner(缩进嵌套的命名空间中的内容), All
142NamespaceIndentation: None
143# 在call(后对函数调用换行的penalty
144PenaltyBreakBeforeFirstCallParameter:   19
145# 在一个注释中引入换行的penalty
146PenaltyBreakComment:    300
147# 第一次在<<前换行的penalty
148PenaltyBreakFirstLessLess:  120
149# 在一个字符串字面量中引入换行的penalty
150PenaltyBreakString: 1000
151# 对于每个在行字符数限制之外的字符的penalty
152PenaltyExcessCharacter: 1000000
153# 将函数的返回类型放到它自己的行的penalty
154PenaltyReturnTypeOnItsOwnLine:  60
155# 指针和引用的对齐: Left, Right, Middle
156PointerAlignment:   Left
157# 允许重新排版注释
158ReflowComments: true
159# 允许排序#include
160SortIncludes:   false
161# 允许排序using
162SortUsingDeclarations: true
163# template后添加空格
164SpaceAfterTemplateKeyword: true
165# 在C风格类型转换后添加空格
166SpaceAfterCStyleCast:   false
167# 在赋值运算符之前添加空格
168SpaceBeforeAssignmentOperators: true
169SpaceBeforeCtorInitializerColon: true
170SpaceBeforeInheritanceColon: true
171# 开圆括号之前添加一个空格: Never, ControlStatements, Always
172SpaceBeforeParens:  ControlStatements
173
174SpaceBeforeRangeBasedForLoopColon: true
175# 在空的圆括号中添加空格
176SpaceInEmptyParentheses:    false
177# 在尾随的评论前添加的空格数(只适用于//)
178SpacesBeforeTrailingComments:   1
179# 在尖括号的<后和>前添加空格
180SpacesInAngles: false
181# 在容器(ObjC和JavaScript的数组和字典等)字面量中添加空格
182SpacesInContainerLiterals:  false
183# 在C风格类型转换的括号中添加空格
184SpacesInCStyleCastParentheses:  false
185# 在圆括号的(后和)前添加空格
186SpacesInParentheses:   false
187# 在方括号的[后和]前添加空格,lamda表达式和未指明大小的数组的声明不受影响
188SpacesInSquareBrackets: false
189# SpaceBeforeCpp11BracedList, 在C++11中用于初始化变量的大括号前添加一个空格
190# true:                                  false:
191# Foo foo { bar };               vs.     Foo foo{ bar };
192# Foo {};                                Foo{};
193# vector<int> { 1, 2, 3 };               vector<int>{ 1, 2, 3 };
194# new int[3]{ 1, 2, 3 };                new int[3]{ 1, 2, 3 };
195SpaceBeforeCpp11BracedList: true
196# 标准: Cpp03, Cpp11, Auto
197Standard:   Cpp11
198# tab宽度
199TabWidth:   4
200# 使用tab字符: Never, ForIndentation, ForContinuationAndIndentation, Always
201UseTab: Never