-
Notifications
You must be signed in to change notification settings - Fork 1
/
.clang-format
172 lines (172 loc) · 7.02 KB
/
.clang-format
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
# 語言: None, Cpp, Java, JavaScript, ObjC, Proto, TableGen, TextProto
Language: Cpp
# BasedOnStyle: LLVM
# 訪問說明符(public、private等)的偏移
AccessModifierOffset: -4
# 開括號(開圓括號、開尖括號、開方括號)後的對齊: Align, DontAlign, AlwaysBreak(總是在開括號後換行)
AlignAfterOpenBracket: Align
# 連續賦值時,對齊所有等號
AlignConsecutiveAssignments: false
# 連續聲明時,對齊所有聲明的變量名
AlignConsecutiveDeclarations: false
# 左對齊逃脫換行(使用反斜杠換行)的反斜杠
AlignEscapedNewlinesLeft: true
# 水平對齊二元和三元表達式的操作數
AlignOperands: true
# 對齊連續的尾隨的注釋
AlignTrailingComments: true
# 允許函數聲明的所有參數在放在下一行
AllowAllParametersOfDeclarationOnNextLine: true
# 允許短的塊放在同一行
AllowShortBlocksOnASingleLine: false
# 允許短的case標籤放在同一行
AllowShortCaseLabelsOnASingleLine: false
# 允許短的函數放在同一行: None, InlineOnly(定義在類中), Empty(空函數), Inline(定義在類中,空函數), All
AllowShortFunctionsOnASingleLine: Empty
# 允許短的if語句保持在同一行
AllowShortIfStatementsOnASingleLine: false
# 允許短的循環保持在同一行
AllowShortLoopsOnASingleLine: false
# 總是在定義返回類型後換行(deprecated)
AlwaysBreakAfterDefinitionReturnType: None
# 總是在返回類型後換行: None, All, TopLevel(頂級函數,不包括在類中的函數),
# AllDefinitions(所有的定義,不包括聲明), TopLevelDefinitions(所有的頂級函數的定義)
AlwaysBreakAfterReturnType: None
# 總是在多行string字面量前換行
AlwaysBreakBeforeMultilineStrings: false
# 總是在template聲明後換行
AlwaysBreakTemplateDeclarations: false
# false表示函數實參要麼都在同一行,要麼都各自一行
BinPackArguments: true
# false表示所有形參要麼都在同一行,要麼都各自一行
BinPackParameters: true
# 大括號換行,只有當BreakBeforeBraces設置為Custom時才有效
BraceWrapping:
# class定義後面
AfterClass: false
# 控制語句後面
AfterControlStatement: false
# enum定義後面
AfterEnum: false
# 函數定義後面
AfterFunction: false
# 命名空間定義後面
AfterNamespace: false
# ObjC定義後面
AfterObjCDeclaration: false
# struct定義後面
AfterStruct: false
# union定義後面
AfterUnion: false
# catch之前
BeforeCatch: true
# else之前
BeforeElse: true
# 縮進大括號
IndentBraces: false
# 在二元運算符前換行: None(在操作符後換行), NonAssignment(在非賦值的操作符前換行), All(在操作符前換行)
BreakBeforeBinaryOperators: NonAssignment
# 在大括號前換行: Attach(始終將大括號附加到周圍的上下文), Linux(除函數、命名空間和類定義,與Attach類似),
# Mozilla(除枚舉、函數、記錄定義,與Attach類似), Stroustrup(除函數定義、catch、else,與Attach類似),
# Allman(總是在大括號前換行), GNU(總是在大括號前換行,並對於控制語句的大括號增加額外的縮進), WebKit(在函數前換行), Custom
# 註:這裡認為語句塊也屬於函數
BreakBeforeBraces: Custom
# 在三元運算符前換行
BreakBeforeTernaryOperators: true
# 在構造函數的初始化列表的逗號前換行
BreakConstructorInitializersBeforeComma: false
# 每行字符的限制,0表示沒有限制
ColumnLimit: 120
# 描述具有特殊意義的注釋的正則表達式,它不應該被分割為多行或以其它方式改變
CommentPragmas: '^ IWYU pragma:'
# 構造函數的初始化列表要麼都在同一行,要麼都各自一行
ConstructorInitializerAllOnOneLineOrOnePerLine: false
# 構造函數的初始化列表的縮進寬度
ConstructorInitializerIndentWidth: 4
# 延續的行的縮進寬度
ContinuationIndentWidth: 4
# 去除C++11的列表初始化的大括號{後和}前的空格
Cpp11BracedListStyle: false
# 繼承最常用的指針和引用的對齊方式
DerivePointerAlignment: false
# 關閉格式化
DisableFormat: false
# 自動檢測函數的調用和定義是否被格式為每行一個參數(Experimental)
ExperimentalAutoDetectBinPacking: false
# 需要被解讀為foreach循環而不是函數調用的宏
ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH ]
# 對#include進行排序,匹配了某正則表達式的#include擁有對應的優先級,匹配不到的則默認優先級為INT_MAX(優先級越小排序越靠前),
# 可以定義負數優先級從而保證某些#include永遠在最前面
IncludeCategories:
- Regex: '^"(llvm|llvm-c|clang|clang-c)/'
Priority: 2
- Regex: '^(<|"(gtest|isl|json)/)'
Priority: 3
- Regex: '.*'
Priority: 1
# 縮進case標籤
IndentCaseLabels: true
# 縮進寬度
IndentWidth: 4
# 函數返回類型換行時,縮進函數聲明或函數定義的函數名
IndentWrappedFunctionNames: false
# 保留在塊開始處的空行
KeepEmptyLinesAtTheStartOfBlocks: true
# 開始一個塊的宏的正則表達式
MacroBlockBegin: ''
# 結束一個塊的宏的正則表達式
MacroBlockEnd: ''
# 連續空行的最大數量
MaxEmptyLinesToKeep: 1
# 命名空間的縮進: None, Inner(縮進嵌套的命名空間中的內容), All
NamespaceIndentation: Inner
# 使用ObjC塊時縮進寬度
ObjCBlockIndentWidth: 4
# 在ObjC的@property後添加一個空格
ObjCSpaceAfterProperty: false
# 在ObjC的protocol列表前添加一個空格
ObjCSpaceBeforeProtocolList: true
# 在call(後對函數調用換行的penalty
PenaltyBreakBeforeFirstCallParameter: 19
# 在一個注釋中引入換行的penalty
PenaltyBreakComment: 300
# 第一次在<<前換行的penalty
PenaltyBreakFirstLessLess: 120
# 在一個字符串字面量中引入換行的penalty
PenaltyBreakString: 1000
# 對於每個在行字符數限制之外的字符的penalty
PenaltyExcessCharacter: 1000000
# 將函數的返回類型放到它自己的行的penalty
PenaltyReturnTypeOnItsOwnLine: 60
# 指針和引用的對齊: Left, Right, Middle
PointerAlignment: Left
# 允許重新排版注釋
ReflowComments: true
# 允許排序#include
SortIncludes: true
# 在C風格類型轉換後添加空格
SpaceAfterCStyleCast: false
# 在賦值運算符之前添加空格
SpaceBeforeAssignmentOperators: true
# 開圓括號之前添加一個空格: Never, ControlStatements, Always
SpaceBeforeParens: Never
# 在空的圓括號中添加空格
SpaceInEmptyParentheses: false
# 在尾隨的評論前添加的空格數(只適用於//)
SpacesBeforeTrailingComments: 2
# 在尖括號的<後和>前添加空格
SpacesInAngles: false
# 在容器(ObjC和JavaScript的數組和字典等)字面量中添加空格
SpacesInContainerLiterals: true
# 在C風格類型轉換的括號中添加空格
SpacesInCStyleCastParentheses: true
# 在圓括號的(後和)前添加空格
SpacesInParentheses: false
# 在方括號的[後和]前添加空格,lamda表達式和未指明大小的數組的聲明不受影響
SpacesInSquareBrackets: false
# 標準: Cpp03, Cpp11, Auto
Standard: Cpp11
# tab寬度
TabWidth: 4
# 使用tab字符: Never, ForIndentation, ForContinuationAndIndentation, Always
UseTab: Always