Edit Mode: Rework display to differentiate selection modes
[blender.git] / .clang-format
1
2 # Configuration of clang-format
3 # =============================
4 #
5 # Tested to work with versions: 6 to 8.
6
7 # This causes parameters on continuations to align to the opening brace.
8 #
9 #   like_this_long_name(parameter_one,
10 #                       parameter_two,
11 #                       parameter_three);
12 #
13 AlignAfterOpenBracket: 'Align'
14
15 # Disallow short functions on one line; break them up.
16 AllowShortBlocksOnASingleLine: false
17
18 # These two settings trigger stacking of parameters in most cases; this is
19 # easier to read and also makes diffs easier to read (since an added or removed
20 # parameter is obvious). For example, function calls will look like this:
21 #
22 #   like_this_long_name(parameter_one,
23 #                       parameter_two,
24 #                       parameter_three,
25 #                       parameter_four,
26 #                       parameter_five,
27 #                       parameter_six);
28 #
29 # Instead of:
30 #
31 #   like_this_long_name(parameter_one, parameter_two, parameter_three, parameter_four,
32 #                       parameter_five, parameter_six);
33 #
34 BinPackArguments: false
35 BinPackParameters: false
36
37 # Line width (don't exceed 100).
38 ColumnLimit: 99
39
40 # Cause initializer lists to have one member initialized per line, in the case
41 # that all initializers can't fit on a single line.
42 ConstructorInitializerAllOnOneLineOrOnePerLine: true
43
44 # Indent the : after a constructor. For example:
45 #
46 #   explicit foo_class ()
47 #       : member1_(5)
48 #   {
49 #   }
50 #
51 ConstructorInitializerIndentWidth: 4
52
53 # Make access modifier slightly more visible.
54 AccessModifierOffset: -1
55
56 # This will unfortunately use spaces in some cases where it's not desired (like
57 # function calls) but the overall result is better since it will allow
58 # alignment to work properly with different tab width settings.
59 ContinuationIndentWidth: 4
60
61 # This tries to match Blender's style as much as possible. One
62 BreakBeforeBraces: Custom
63 BraceWrapping: {
64     AfterClass: 'false'
65     AfterControlStatement: 'false'
66     AfterEnum : 'false'
67     AfterFunction : 'true'
68     AfterNamespace : 'false'
69     AfterStruct : 'false'
70     AfterUnion : 'false'
71     BeforeCatch : 'true'
72     BeforeElse : 'true'
73     IndentBraces : 'false'
74     AfterObjCDeclaration: 'true'
75 }
76
77 # For switch statements, indent the cases.
78 IndentCaseLabels: true
79
80 # Indent after the hash inside preprocessor directives
81 IndentPPDirectives: AfterHash
82
83 BreakBeforeTernaryOperators: false
84
85 SpaceAfterTemplateKeyword: false
86
87 # Handy comment at the end of each C++ name space.
88 FixNamespaceComments: true
89
90 # Use "if (...)" instead of "if(...)", but have function calls like foo().
91 SpaceBeforeParens: ControlStatements
92 SpaceInEmptyParentheses: false
93
94 # Use two spaces before trailing comments, for example
95 #
96 #   foo = bar;  // comment
97 #
98 # Note that this doesn't work for C-style comments.
99 SpacesBeforeTrailingComments: 2
100
101 # Don't reflow comments, let developers define line breaks.
102 # Enabling breaks some ascii art.
103 ReflowComments: false
104
105 # Never use tabs for indentation.
106 # Note: TabWidth and IndentWidth must be the same, or strange things happen.
107 UseTab: Never
108 TabWidth: 2
109 IndentWidth: 2
110
111 # Add a big penalty on breaking after the return type of functions. For example,
112 #
113 #   static void foo(...)
114 #
115 # Instead of:
116 #
117 #   static void
118 #   foo(very long content here that maybe could be stacked)
119 #
120 PenaltyReturnTypeOnItsOwnLine: 10000
121
122 # Avoid having function calls broken onto a new line:
123 #
124 #   int a = foo(
125 #       long, list, of, many, params);
126 #
127 # Instead of:
128 #
129 #   int a =
130 #       foo(long, list, of, many, params);
131 #
132 PenaltyBreakAssignment: 100
133
134 AllowShortFunctionsOnASingleLine: None
135
136 # Disable for now since it complicates initial migration tests,
137 # TODO: look into enabling this in the future.
138 SortIncludes: false
139
140 # Don't right align escaped newlines to the right because we have a wide default
141 AlignEscapedNewlines: DontAlign
142
143 # Always break:
144 #
145 #   const char *foo =
146 #       "multi"
147 #       "line";
148 #
149 # Instead of:
150 #
151 #   const char *foo = "multi"
152 #                     "line";
153 #
154 AlwaysBreakBeforeMultilineStrings: true
155
156 # We don't want literal strings to break,
157 # however clang-format seems to ignore this (sigh).
158 PenaltyBreakString: 1000000
159
160 # There are macros in Blender for custom for loops; tell Clang to treat them
161 # like loops rather than an expression, and so put the { on the same line.
162 ForEachMacros:
163   - BLI_SMALLSTACK_ITER_BEGIN
164   - BMO_ITER
165   - BMW_ITER
166   - BM_FACES_OF_VERT_ITER_BEGIN
167   - BM_ITER_ELEM
168   - BM_ITER_MESH
169   - BM_ITER_MESH_INDEX
170   - BM_ITER_MESH_MUTABLE
171   - BM_LOOPS_OF_VERT_ITER_BEGIN
172   - BOOST_FOREACH
173   - CTX_DATA_BEGIN
174   - DEG_OBJECT_ITER_BEGIN
175   - DEG_OBJECT_ITER_FOR_RENDER_ENGINE_BEGIN
176   - DRIVER_TARGETS_LOOPER_BEGIN
177   - DRIVER_TARGETS_USED_LOOPER_BEGIN
178   - FAKE_SELECT_MODE_BEGIN
179   - FOREACH_BASE_IN_EDIT_MODE_BEGIN
180   - FOREACH_BASE_IN_MODE_BEGIN
181   - FOREACH_BEGIN
182   - FOREACH_COLLECTION_OBJECT_RECURSIVE_BEGIN
183   - FOREACH_COLLECTION_VISIBLE_OBJECT_RECURSIVE_BEGIN
184   - FOREACH_EDIT_OBJECT_BEGIN
185   - FOREACH_NODETREE_BEGIN
186   - FOREACH_OBJECT_BEGIN
187   - FOREACH_OBJECT_FLAG_BEGIN
188   - FOREACH_OBJECT_IN_EDIT_MODE_BEGIN
189   - FOREACH_OBJECT_IN_MODE_BEGIN
190   - FOREACH_OBJECT_RENDERABLE_BEGIN
191   - FOREACH_PCHAN_SELECTED_IN_OBJECT_BEGIN
192   - FOREACH_PCHAN_VISIBLE_IN_OBJECT_BEGIN
193   - FOREACH_SCENE_COLLECTION_BEGIN
194   - FOREACH_SCENE_OBJECT_BEGIN
195   - FOREACH_SELECTED_BASE_BEGIN
196   - FOREACH_SELECTED_EDITABLE_OBJECT_BEGIN
197   - FOREACH_SELECTED_OBJECT_BEGIN
198   - FOREACH_VIEW_LAYER_TO_RENDER_BEGIN
199   - FOREACH_VISIBLE_BASE_BEGIN
200   - FOREACH_VISIBLE_OBJECT_BEGIN
201   - GHASH_FOREACH_BEGIN
202   - GHASH_ITER
203   - GSET_FOREACH_BEGIN
204   - GSET_ITER
205   - GP_EDITABLE_STROKES_BEGIN
206   - GSET_FOREACH_BEGIN
207   - ITER_BEGIN
208   - LISTBASE_CIRCULAR_BACKWARD_BEGIN
209   - LISTBASE_CIRCULAR_FORWARD_BEGIN
210   - LISTBASE_FOREACH
211   - MAN2D_ITER_AXES_BEGIN
212   - MAN_ITER_AXES_BEGIN
213   - NODE_SOCKET_TYPES_BEGIN
214   - NODE_TREE_TYPES_BEGIN
215   - NODE_TYPES_BEGIN
216   - PIXEL_LOOPER_BEGIN
217   - RNA_BEGIN
218   - RNA_PROP_BEGIN
219   - RNA_STRUCT_BEGIN
220   - SEQP_BEGIN
221   - SEQ_BEGIN
222   - foreach
223
224 # Use once we bump the minimum verison to version 8.
225 # # Without this string literals that in-line 'STRINGIFY' behave strangely (a bug?).
226 # StatementMacros:
227 #   - STRINGIFY