| # This file is an example configuration for clang-format 5.0. | |
| # | |
| # Note that this style definition should only be understood as a hint | |
| # for writing new code. The rules are still work-in-progress and does | |
| # not yet exactly match the style we have in the existing code. | |
| # Use tabs whenever we need to fill whitespace that spans at least from one tab | |
| # stop to the next one. | |
| # | |
| # These settings are mirrored in .editorconfig. Keep them in sync. | |
| UseTab: Always | |
| TabWidth: 8 | |
| IndentWidth: 8 | |
| ContinuationIndentWidth: 8 | |
| # While we do want to enforce a character limit of 80 characters, we often | |
| # allow lines to overflow that limit to prioritize readability. Setting a | |
| # character limit here with penalties has been finicky and creates too many | |
| # false positives. | |
| # | |
| # NEEDSWORK: It would be nice if we can find optimal settings to ensure we | |
| # can re-enable the limit here. | |
| ColumnLimit: 0 | |
| # C Language specifics | |
| Language: Cpp | |
| # Align parameters on the open bracket | |
| # someLongFunction(argument1, | |
| # argument2); | |
| AlignAfterOpenBracket: Align | |
| # Don't align consecutive assignments | |
| # int aaaa = 12; | |
| # int b = 14; | |
| AlignConsecutiveAssignments: false | |
| # Don't align consecutive declarations | |
| # int aaaa = 12; | |
| # double b = 3.14; | |
| AlignConsecutiveDeclarations: false | |
| # Align consecutive macro definitions. | |
| AlignConsecutiveMacros: true | |
| # Align escaped newlines as far left as possible | |
| # #define A \ | |
| # int aaaa; \ | |
| # int b; \ | |
| # int cccccccc; | |
| AlignEscapedNewlines: Left | |
| # Align operands of binary and ternary expressions | |
| # int aaa = bbbbbbbbbbb + | |
| # cccccc; | |
| AlignOperands: true | |
| # Don't align trailing comments | |
| # int a; // Comment a | |
| # int b = 2; // Comment b | |
| AlignTrailingComments: false | |
| # By default don't allow putting parameters onto the next line | |
| # myFunction(foo, bar, baz); | |
| AllowAllParametersOfDeclarationOnNextLine: false | |
| # Don't allow short braced statements to be on a single line | |
| # if (a) not if (a) return; | |
| # return; | |
| AllowShortBlocksOnASingleLine: false | |
| AllowShortCaseLabelsOnASingleLine: false | |
| AllowShortFunctionsOnASingleLine: false | |
| AllowShortIfStatementsOnASingleLine: false | |
| AllowShortLoopsOnASingleLine: false | |
| # By default don't add a line break after the return type of top-level functions | |
| # int foo(); | |
| AlwaysBreakAfterReturnType: None | |
| # Pack as many parameters or arguments onto the same line as possible | |
| # int myFunction(int aaaaaaaaaaaa, int bbbbbbbb, | |
| # int cccc); | |
| BinPackArguments: true | |
| BinPackParameters: true | |
| # Add no space around the bit field | |
| # unsigned bf:2; | |
| BitFieldColonSpacing: None | |
| # Attach braces to surrounding context except break before braces on function | |
| # definitions. | |
| # void foo() | |
| # { | |
| # if (true) { | |
| # } else { | |
| # } | |
| # }; | |
| BreakBeforeBraces: Linux | |
| # Break after operators | |
| # int value = aaaaaaaaaaaaa + | |
| # bbbbbb - | |
| # ccccccccccc; | |
| BreakBeforeBinaryOperators: None | |
| BreakBeforeTernaryOperators: false | |
| # Don't break string literals | |
| BreakStringLiterals: false | |
| # Use the same indentation level as for the switch statement. | |
| # Switch statement body is always indented one level more than case labels. | |
| IndentCaseLabels: false | |
| # Indents directives before the hash. Each level uses a single space for | |
| # indentation. | |
| # #if FOO | |
| # # include <foo> | |
| # #endif | |
| IndentPPDirectives: AfterHash | |
| PPIndentWidth: 1 | |
| # Don't indent a function definition or declaration if it is wrapped after the | |
| # type | |
| IndentWrappedFunctionNames: false | |
| # Align pointer to the right | |
| # int *a; | |
| PointerAlignment: Right | |
| # Don't insert a space after a cast | |
| # x = (int32)y; not x = (int32) y; | |
| SpaceAfterCStyleCast: false | |
| # No space is inserted after the logical not operator | |
| SpaceAfterLogicalNot: false | |
| # Insert spaces before and after assignment operators | |
| # int a = 5; not int a=5; | |
| # a += 42; a+=42; | |
| SpaceBeforeAssignmentOperators: true | |
| # Spaces will be removed before case colon. | |
| # case 1: break; not case 1 : break; | |
| SpaceBeforeCaseColon: false | |
| # Put a space before opening parentheses only after control statement keywords. | |
| # void f() { | |
| # if (true) { | |
| # f(); | |
| # } | |
| # } | |
| SpaceBeforeParens: ControlStatementsExceptControlMacros | |
| # Don't insert spaces inside empty '()' | |
| SpaceInEmptyParentheses: false | |
| # No space before first '[' in arrays | |
| # int a[5][5]; not int a [5][5]; | |
| SpaceBeforeSquareBrackets: false | |
| # No space will be inserted into {} | |
| # while (true) {} not while (true) { } | |
| SpaceInEmptyBlock: false | |
| # The number of spaces before trailing line comments (// - comments). | |
| # This does not affect trailing block comments (/* - comments). | |
| SpacesBeforeTrailingComments: 1 | |
| # Don't insert spaces in casts | |
| # x = (int32) y; not x = ( int32 ) y; | |
| SpacesInCStyleCastParentheses: false | |
| # Don't insert spaces inside container literals | |
| # var arr = [1, 2, 3]; not var arr = [ 1, 2, 3 ]; | |
| SpacesInContainerLiterals: false | |
| # Don't insert spaces after '(' or before ')' | |
| # f(arg); not f( arg ); | |
| SpacesInParentheses: false | |
| # Don't insert spaces after '[' or before ']' | |
| # int a[5]; not int a[ 5 ]; | |
| SpacesInSquareBrackets: false | |
| # Insert a space after '{' and before '}' in struct initializers | |
| Cpp11BracedListStyle: false | |
| # A list of macros that should be interpreted as foreach loops instead of as | |
| # function calls. Taken from: | |
| # git grep -h '^#define [^[:space:]]*for_\?each[^[:space:]]*(' | | |
| # sed "s/^#define / - '/; s/(.*$/'/" | sort | uniq | |
| ForEachMacros: | |
| - 'for_each_builtin' | |
| - 'for_each_string_list_item' | |
| - 'for_each_ut' | |
| - 'for_each_wanted_builtin' | |
| - 'hashmap_for_each_entry' | |
| - 'hashmap_for_each_entry_from' | |
| - 'kh_foreach' | |
| - 'kh_foreach_value' | |
| - 'list_for_each' | |
| - 'list_for_each_dir' | |
| - 'list_for_each_prev' | |
| - 'list_for_each_prev_safe' | |
| - 'list_for_each_safe' | |
| - 'strintmap_for_each_entry' | |
| - 'strmap_for_each_entry' | |
| - 'strset_for_each_entry' | |
| # A list of macros that should be interpreted as conditionals instead of as | |
| # function calls. | |
| IfMacros: | |
| - 'if_test' | |
| # The maximum number of consecutive empty lines to keep. | |
| MaxEmptyLinesToKeep: 1 | |
| # No empty line at the start of a block. | |
| KeepEmptyLinesAtTheStartOfBlocks: false | |
| # Don't sort #include's | |
| SortIncludes: false | |
| # Remove optional braces of control statements (if, else, for, and while) | |
| # according to the LLVM coding style. This avoids braces on simple | |
| # single-statement bodies of statements but keeps braces if one side of | |
| # if/else if/.../else cascade has multi-statement body. | |
| RemoveBracesLLVM: true |