Fix T65034: Viewing material calls frame update handler
[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 # Reflow comments, developers must disable formatting as with code to override this.
102 ReflowComments: true
103
104 # Never use tabs for indentation.
105 # Note: TabWidth and IndentWidth must be the same, or strange things happen.
106 UseTab: Never
107 TabWidth: 2
108 IndentWidth: 2
109
110 # Add a big penalty on breaking after the return type of functions. For example,
111 #
112 #   static void foo(...)
113 #
114 # Instead of:
115 #
116 #   static void
117 #   foo(very long content here that maybe could be stacked)
118 #
119 PenaltyReturnTypeOnItsOwnLine: 10000
120
121 # Avoid having function calls broken onto a new line:
122 #
123 #   int a = foo(
124 #       long, list, of, many, params);
125 #
126 # Instead of:
127 #
128 #   int a =
129 #       foo(long, list, of, many, params);
130 #
131 PenaltyBreakAssignment: 100
132
133 AllowShortFunctionsOnASingleLine: None
134
135 # Disable for now since it complicates initial migration tests,
136 # TODO: look into enabling this in the future.
137 SortIncludes: false
138
139 # Don't right align escaped newlines to the right because we have a wide default
140 AlignEscapedNewlines: DontAlign
141
142 # Always break:
143 #
144 #   const char *foo =
145 #       "multi"
146 #       "line";
147 #
148 # Instead of:
149 #
150 #   const char *foo = "multi"
151 #                     "line";
152 #
153 AlwaysBreakBeforeMultilineStrings: true
154
155 # We don't want literal strings to break,
156 # however clang-format seems to ignore this (sigh).
157 PenaltyBreakString: 1000000
158
159 # There are macros in Blender for custom for loops; tell Clang to treat them
160 # like loops rather than an expression, and so put the { on the same line.
161 #
162 # To find these use multi-line regex search:
163 # "^\s+[A-Z][A-Z0-9_]+\s*\([^\n]*\)\n\s*\{"
164 ForEachMacros:
165   - BEGIN_ANIMFILTER_SUBCHANNELS
166   - BLI_FOREACH_SPARSE_RANGE
167   - BLI_SMALLSTACK_ITER_BEGIN
168   - BMO_ITER
169   - BMO_ITER_INDEX
170   - BMW_ITER
171   - BM_FACES_OF_VERT_ITER_BEGIN
172   - BM_ITER_BPY_BM_SEQ
173   - BM_ITER_ELEM
174   - BM_ITER_ELEM_INDEX
175   - BM_ITER_MESH
176   - BM_ITER_MESH_INDEX
177   - BM_ITER_MESH_MUTABLE
178   - BM_LOOPS_OF_VERT_ITER_BEGIN
179   - BOOST_FOREACH
180   - CTX_DATA_BEGIN
181   - CTX_DATA_BEGIN_WITH_ID
182   - DEG_OBJECT_ITER_BEGIN
183   - DEG_OBJECT_ITER_FOR_RENDER_ENGINE_BEGIN
184   - DRIVER_TARGETS_LOOPER_BEGIN
185   - DRIVER_TARGETS_USED_LOOPER_BEGIN
186   - FOREACH_BASE_IN_EDIT_MODE_BEGIN
187   - FOREACH_BASE_IN_MODE_BEGIN
188   - FOREACH_BEGIN
189   - FOREACH_COLLECTION_BEGIN
190   - FOREACH_COLLECTION_OBJECT_RECURSIVE_BEGIN
191   - FOREACH_COLLECTION_VISIBLE_OBJECT_RECURSIVE_BEGIN
192   - FOREACH_EDIT_OBJECT_BEGIN
193   - FOREACH_MAIN_ID_BEGIN
194   - FOREACH_MAIN_LISTBASE_BEGIN
195   - FOREACH_MAIN_LISTBASE_ID_BEGIN
196   - FOREACH_NODETREE_BEGIN
197   - FOREACH_OBJECT_BEGIN
198   - FOREACH_OBJECT_FLAG_BEGIN
199   - FOREACH_OBJECT_IN_EDIT_MODE_BEGIN
200   - FOREACH_OBJECT_IN_MODE_BEGIN
201   - FOREACH_OBJECT_RENDERABLE_BEGIN
202   - FOREACH_PCHAN_SELECTED_IN_OBJECT_BEGIN
203   - FOREACH_PCHAN_VISIBLE_IN_OBJECT_BEGIN
204   - FOREACH_SCENE_COLLECTION_BEGIN
205   - FOREACH_SCENE_OBJECT_BEGIN
206   - FOREACH_SELECTED_BASE_BEGIN
207   - FOREACH_SELECTED_EDITABLE_OBJECT_BEGIN
208   - FOREACH_SELECTED_OBJECT_BEGIN
209   - FOREACH_TRANS_DATA_CONTAINER
210   - FOREACH_VIEW_LAYER_TO_RENDER_BEGIN
211   - FOREACH_VISIBLE_BASE_BEGIN
212   - FOREACH_VISIBLE_OBJECT_BEGIN
213   - GHASH_FOREACH_BEGIN
214   - GHASH_ITER
215   - GHASH_ITER_INDEX
216   - GPU_SELECT_LOAD_IF_PICKSEL_LIST
217   - GP_EDITABLE_STROKES_BEGIN
218   - GSET_FOREACH_BEGIN
219   - GSET_ITER
220   - GSET_ITER_INDEX
221   - ITER_BEGIN
222   - ITER_PIXELS
223   - ITER_SLOTS
224   - LISTBASE_CIRCULAR_BACKWARD_BEGIN
225   - LISTBASE_CIRCULAR_FORWARD_BEGIN
226   - LISTBASE_FOREACH
227   - LISTBASE_FOREACH_MUTABLE
228   - MAN2D_ITER_AXES_BEGIN
229   - MAN_ITER_AXES_BEGIN
230   - NODE_INSTANCE_HASH_ITER
231   - NODE_SOCKET_TYPES_BEGIN
232   - NODE_TREE_TYPES_BEGIN
233   - NODE_TYPES_BEGIN
234   - PIXEL_LOOPER_BEGIN
235   - PIXEL_LOOPER_BEGIN_CHANNELS
236   - RNA_BEGIN
237   - RNA_PROP_BEGIN
238   - RNA_STRUCT_BEGIN
239   - SEQP_BEGIN
240   - SEQ_BEGIN
241   - foreach
242
243 # Use once we bump the minimum verison to version 8.
244 # # Without this string literals that in-line 'STRINGIFY' behave strangely (a bug?).
245 # StatementMacros:
246 #   - PyObject_VAR_HEAD
247 #   - STRINGIFY