xref: /freebsd/.clang-format (revision e59d5d14)
1# $FreeBSD$
2# Basic .clang-format
3---
4BasedOnStyle: WebKit
5AlignAfterOpenBracket: DontAlign
6AlignConsecutiveAssignments: false
7AlignConsecutiveDeclarations: false
8AlignEscapedNewlines: Left
9AlignOperands: false
10AlignTrailingComments: false
11AllowAllParametersOfDeclarationOnNextLine: false
12AllowShortBlocksOnASingleLine: false
13AllowShortCaseLabelsOnASingleLine: false
14AllowShortFunctionsOnASingleLine: InlineOnly
15AllowShortIfStatementsOnASingleLine: false
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  - SLIST_FOREACH
33  - SLIST_FOREACH_SAFE
34  - LIST_FOREACH
35  - LIST_FOREACH_SAFE
36  - STAILQ_FOREACH
37  - STAILQ_FOREACH_SAFE
38  - TAILQ_FOREACH
39  - TAILQ_FOREACH_SAFE
40  - TAILQ_FOREACH_REVERSE
41  - TAILQ_FOREACH_REVERSE_SAFE
42  - RB_FOREACH
43  - RB_FOREACH_SAFE
44  - RB_FOREACH_FROM
45  - RB_FOREACH_REVERSE
46  - RB_FOREACH_REVERSE_FROM
47  - RB_FOREACH_REVERSE_SAFE
48  - FOREACH_THREAD_IN_PROC
49  - FOREACH_PROC_IN_SYSTEM
50  - FOREACH_PRISON_CHILD
51  - FOREACH_PRISON_DESCENDANT
52  - FOREACH_PRISON_DESCENDANT_LOCKED
53  - FOREACH_PRISON_DESCENDANT_LOCKED_LEVEL
54  - MNT_VNODE_FOREACH_ALL
55  - MNT_VNODE_FOREACH_ACTIVE
56IndentCaseLabels: false
57IndentPPDirectives: None
58Language: Cpp
59NamespaceIndentation: None
60PointerAlignment: Right
61ContinuationIndentWidth: 4
62IndentWidth: 8
63TabWidth: 8
64ColumnLimit: 80
65UseTab: Always
66SpaceAfterCStyleCast: false
67IncludeBlocks: Regroup
68IncludeCategories:
69  - Regex: '^\"opt_.*\.h\"'
70    Priority: 1
71    SortPriority: 10
72  - Regex: '^<sys/cdefs\.h>'
73    Priority: 2
74    SortPriority: 20
75  - Regex: '^<sys/types\.h>'
76    Priority: 2
77    SortPriority: 21
78  - Regex: '^<sys/param\.h>'
79    Priority: 2
80    SortPriority: 22
81  - Regex: '^<sys.*/'
82    Priority: 2
83    SortPriority: 23
84  - Regex: '^<vm/vm\.h>'
85    Priority: 3
86    SortPriority: 30
87  - Regex: '^<vm/'
88    Priority: 3
89    SortPriority: 31
90  - Regex: '^<machine/'
91    Priority: 4
92    SortPriority: 40
93  - Regex: '^<(x86|amd64|i386|xen)/'
94    Priority: 5
95    SortPriority: 50
96  - Regex: '^<dev/'
97    Priority: 6
98    SortPriority: 60
99  - Regex: '^<net.*/'
100    Priority: 7
101    SortPriority: 70
102  - Regex: '^<protocols/'
103    Priority: 7
104    SortPriority: 71
105  - Regex: '^<(fs|nfs(|client|server)|ufs)/'
106    Priority: 8
107    SortPriority: 80
108  - Regex: '^<[^/].*\.h'
109    Priority: 9
110    SortPriority: 90
111  - Regex: '^\".*\.h\"'
112    Priority: 10
113    SortPriority: 100
114SortIncludes: true
115KeepEmptyLinesAtTheStartOfBlocks: true
116# The options below will only be supported starting with clang 9.0:
117# TODO-CLANG-9: TypenameMacros:
118# TODO-CLANG-9:   - SLIST_HEAD
119# TODO-CLANG-9:   - SLIST_ENTRY
120# TODO-CLANG-9:   - TAILQ_ENTRY
121# TODO-CLANG-9:   - TAILQ_HEAD
122# TODO-CLANG-9:   - STAILQ_ENTRY
123# TODO-CLANG-9:   - STAILQ_HEAD
124...
125