xref: /freebsd/.clang-format (revision 453d775b)
1# $FreeBSD$
2# Basic .clang-format
3---
4BasedOnStyle: WebKit
5AlignAfterOpenBracket: DontAlign
6AlignConsecutiveAssignments: false
7AlignConsecutiveDeclarations: false
8AlignEscapedNewlines: Left
9AlignOperands: false
10AlignTrailingComments: true
11AllowAllParametersOfDeclarationOnNextLine: false
12AllowShortBlocksOnASingleLine: Never
13AllowShortCaseLabelsOnASingleLine: false
14AllowShortFunctionsOnASingleLine: InlineOnly
15AllowShortIfStatementsOnASingleLine: Never
16AllowShortLoopsOnASingleLine: false
17AlwaysBreakAfterReturnType: TopLevelDefinitions
18AlwaysBreakBeforeMultilineStrings: false
19AlwaysBreakTemplateDeclarations: MultiLine
20BinPackArguments: true
21BinPackParameters: true
22BreakBeforeBinaryOperators: None
23BreakBeforeBraces: WebKit
24BreakBeforeTernaryOperators: false
25# TODO: BreakStringLiterals can cause very strange formatting so turn it off?
26BreakStringLiterals: false
27PenaltyBreakBeforeFirstCallParameter: 1000
28CompactNamespaces: true
29DerivePointerAlignment: false
30DisableFormat: false
31ForEachMacros:
32  - ARB_ARRFOREACH
33  - ARB_ARRFOREACH_REVWCOND
34  - ARB_ARRFOREACH_REVERSE
35  - ARB_FOREACH
36  - ARB_FOREACH_FROM
37  - ARB_FOREACH_SAFE
38  - ARB_FOREACH_REVERSE
39  - ARB_FOREACH_REVERSE_FROM
40  - ARB_FOREACH_REVERSE_SAFE
41  - CPU_FOREACH
42  - FOREACH_THREAD_IN_PROC
43  - FOREACH_PROC_IN_SYSTEM
44  - FOREACH_PRISON_CHILD
45  - FOREACH_PRISON_DESCENDANT
46  - FOREACH_PRISON_DESCENDANT_LOCKED
47  - FOREACH_PRISON_DESCENDANT_LOCKED_LEVEL
48  - MNT_VNODE_FOREACH_ALL
49  - MNT_VNODE_FOREACH_ACTIVE
50  - RB_FOREACH
51  - RB_FOREACH_FROM
52  - RB_FOREACH_SAFE
53  - RB_FOREACH_REVERSE
54  - RB_FOREACH_REVERSE_FROM
55  - RB_FOREACH_REVERSE_SAFE
56  - SLIST_FOREACH
57  - SLIST_FOREACH_FROM
58  - SLIST_FOREACH_FROM_SAFE
59  - SLIST_FOREACH_SAFE
60  - SLIST_FOREACH_PREVPTR
61  - SPLAY_FOREACH
62  - LIST_FOREACH
63  - LIST_FOREACH_FROM
64  - LIST_FOREACH_FROM_SAFE
65  - LIST_FOREACH_SAFE
66  - STAILQ_FOREACH
67  - STAILQ_FOREACH_FROM
68  - STAILQ_FOREACH_FROM_SAFE
69  - STAILQ_FOREACH_SAFE
70  - TAILQ_FOREACH
71  - TAILQ_FOREACH_FROM
72  - TAILQ_FOREACH_FROM_SAFE
73  - TAILQ_FOREACH_REVERSE
74  - TAILQ_FOREACH_REVERSE_FROM
75  - TAILQ_FOREACH_REVERSE_FROM_SAFE
76  - TAILQ_FOREACH_REVERSE_SAFE
77  - TAILQ_FOREACH_SAFE
78  - VM_MAP_ENTRY_FOREACH
79  - VM_PAGE_DUMP_FOREACH
80IndentCaseLabels: false
81IndentPPDirectives: None
82Language: Cpp
83NamespaceIndentation: None
84PointerAlignment: Right
85ContinuationIndentWidth: 4
86IndentWidth: 8
87TabWidth: 8
88ColumnLimit: 80
89UseTab: Always
90SpaceAfterCStyleCast: false
91IncludeBlocks: Regroup
92IncludeCategories:
93  - Regex: '^\"opt_.*\.h\"'
94    Priority: 1
95    SortPriority: 10
96  - Regex: '^<sys/cdefs\.h>'
97    Priority: 2
98    SortPriority: 20
99  - Regex: '^<sys/types\.h>'
100    Priority: 2
101    SortPriority: 21
102  - Regex: '^<sys/param\.h>'
103    Priority: 2
104    SortPriority: 22
105  - Regex: '^<sys/systm\.h>'
106    Priority: 2
107    SortPriority: 23
108  - Regex: '^<sys.*/'
109    Priority: 2
110    SortPriority: 24
111  - Regex: '^<vm/vm\.h>'
112    Priority: 3
113    SortPriority: 30
114  - Regex: '^<vm/'
115    Priority: 3
116    SortPriority: 31
117  - Regex: '^<machine/'
118    Priority: 4
119    SortPriority: 40
120  - Regex: '^<(x86|amd64|i386|xen)/'
121    Priority: 5
122    SortPriority: 50
123  - Regex: '^<dev/'
124    Priority: 6
125    SortPriority: 60
126  - Regex: '^<net.*/'
127    Priority: 7
128    SortPriority: 70
129  - Regex: '^<protocols/'
130    Priority: 7
131    SortPriority: 71
132  - Regex: '^<(fs|nfs(|client|server)|ufs)/'
133    Priority: 8
134    SortPriority: 80
135  - Regex: '^<[^/].*\.h'
136    Priority: 9
137    SortPriority: 90
138  - Regex: '^\".*\.h\"'
139    Priority: 10
140    SortPriority: 100
141# LLVM's header include ordering style is almost the exact opposite of ours.
142# Unfortunately, they have hard-coded their preferences into clang-format.
143# Clobbering this regular expression to avoid matching prevents non-system
144# headers from being forcibly moved to the top of the include list.
145# http://llvm.org/docs/CodingStandards.html#include-style
146IncludeIsMainRegex: 'BLAH_DONT_MATCH_ANYTHING'
147SortIncludes: true
148KeepEmptyLinesAtTheStartOfBlocks: true
149TypenameMacros:
150  - ARB_ELMTYPE
151  - ARB_HEAD
152  - ARB8_HEAD
153  - ARB16_HEAD
154  - ARB32_HEAD
155  - ARB_ENTRY
156  - ARB8_ENTRY
157  - ARB16_ENTRY
158  - ARB32_ENTRY
159  - LIST_CLASS_ENTRY
160  - LIST_CLASS_HEAD
161  - LIST_ENTRY
162  - LIST_HEAD
163  - QUEUE_TYPEOF
164  - RB_ENTRY
165  - RB_HEAD
166  - SLIST_CLASS_HEAD
167  - SLIST_CLASS_ENTRY
168  - SLIST_HEAD
169  - SLIST_ENTRY
170  - SMR_POINTER
171  - SPLAY_ENTRY
172  - SPLAY_HEAD
173  - STAILQ_CLASS_ENTRY
174  - STAILQ_CLASS_HEAD
175  - STAILQ_ENTRY
176  - STAILQ_HEAD
177  - TAILQ_CLASS_ENTRY
178  - TAILQ_CLASS_HEAD
179  - TAILQ_ENTRY
180  - TAILQ_HEAD
181