# Basic .clang-format --- BasedOnStyle: WebKit AlignAfterOpenBracket: DontAlign AlignConsecutiveMacros: AcrossEmptyLines AlignConsecutiveAssignments: false AlignConsecutiveDeclarations: false AlignEscapedNewlines: Left AlignOperands: false AlignTrailingComments: true AllowAllArgumentsOnNextLine: false AllowAllParametersOfDeclarationOnNextLine: false AllowShortBlocksOnASingleLine: Never AllowShortCaseLabelsOnASingleLine: false AllowShortFunctionsOnASingleLine: InlineOnly AllowShortIfStatementsOnASingleLine: Never AllowShortLoopsOnASingleLine: false AlwaysBreakAfterReturnType: TopLevelDefinitions AlwaysBreakBeforeMultilineStrings: false AlwaysBreakTemplateDeclarations: MultiLine BinPackArguments: true BinPackParameters: true BreakBeforeBinaryOperators: None BreakBeforeBraces: WebKit BreakBeforeTernaryOperators: false # TODO: BreakStringLiterals can cause very strange formatting so turn it off? BreakStringLiterals: false # Prefer: # some_var = function(arg1, # arg2) # over: # some_var = # function(arg1, arg2) PenaltyBreakAssignment: 100 # Prefer: # some_long_function(arg1, arg2 # arg3) # over: # some_long_function( # arg1, arg2, arg3) PenaltyBreakBeforeFirstCallParameter: 100 CompactNamespaces: true DerivePointerAlignment: false DisableFormat: false ForEachMacros: - ARB_ARRFOREACH - ARB_ARRFOREACH_REVWCOND - ARB_ARRFOREACH_REVERSE - ARB_FOREACH - ARB_FOREACH_FROM - ARB_FOREACH_SAFE - ARB_FOREACH_REVERSE - ARB_FOREACH_REVERSE_FROM - ARB_FOREACH_REVERSE_SAFE - BIT_FOREACH_ISCLR - BIT_FOREACH_ISSET - CPU_FOREACH - CPU_FOREACH_ISCLR - CPU_FOREACH_ISSET - FOREACH_THREAD_IN_PROC - FOREACH_PROC_IN_SYSTEM - FOREACH_PRISON_CHILD - FOREACH_PRISON_DESCENDANT - FOREACH_PRISON_DESCENDANT_LOCKED - FOREACH_PRISON_DESCENDANT_LOCKED_LEVEL - MNT_VNODE_FOREACH_ALL - MNT_VNODE_FOREACH_ACTIVE - RB_FOREACH - RB_FOREACH_FROM - RB_FOREACH_SAFE - RB_FOREACH_REVERSE - RB_FOREACH_REVERSE_FROM - RB_FOREACH_REVERSE_SAFE - SLIST_FOREACH - SLIST_FOREACH_FROM - SLIST_FOREACH_FROM_SAFE - SLIST_FOREACH_SAFE - SLIST_FOREACH_PREVPTR - SPLAY_FOREACH - LIST_FOREACH - LIST_FOREACH_FROM - LIST_FOREACH_FROM_SAFE - LIST_FOREACH_SAFE - STAILQ_FOREACH - STAILQ_FOREACH_FROM - STAILQ_FOREACH_FROM_SAFE - STAILQ_FOREACH_SAFE - TAILQ_FOREACH - TAILQ_FOREACH_FROM - TAILQ_FOREACH_FROM_SAFE - TAILQ_FOREACH_REVERSE - TAILQ_FOREACH_REVERSE_FROM - TAILQ_FOREACH_REVERSE_FROM_SAFE - TAILQ_FOREACH_REVERSE_SAFE - TAILQ_FOREACH_SAFE - VM_MAP_ENTRY_FOREACH - VM_PAGE_DUMP_FOREACH SpaceBeforeParens: ControlStatementsExceptForEachMacros IndentCaseLabels: false IndentPPDirectives: None Language: Cpp NamespaceIndentation: None PointerAlignment: Right ContinuationIndentWidth: 4 IndentWidth: 8 TabWidth: 8 ColumnLimit: 80 UseTab: Always SpaceAfterCStyleCast: false IncludeBlocks: Regroup IncludeCategories: - Regex: '^\"opt_.*\.h\"' Priority: 1 SortPriority: 10 - Regex: '^<sys/cdefs\.h>' Priority: 2 SortPriority: 20 - Regex: '^<sys/types\.h>' Priority: 2 SortPriority: 21 - Regex: '^<sys/param\.h>' Priority: 2 SortPriority: 22 - Regex: '^<sys/systm\.h>' Priority: 2 SortPriority: 23 - Regex: '^<sys.*/' Priority: 2 SortPriority: 24 - Regex: '^<vm/vm\.h>' Priority: 3 SortPriority: 30 - Regex: '^<vm/' Priority: 3 SortPriority: 31 - Regex: '^<machine/' Priority: 4 SortPriority: 40 - Regex: '^<(x86|amd64|i386|xen)/' Priority: 5 SortPriority: 50 - Regex: '^<dev/' Priority: 6 SortPriority: 60 - Regex: '^<net.*/' Priority: 7 SortPriority: 70 - Regex: '^<protocols/' Priority: 7 SortPriority: 71 - Regex: '^<(fs|nfs(|client|server)|ufs)/' Priority: 8 SortPriority: 80 - Regex: '^<[^/].*\.h' Priority: 9 SortPriority: 90 - Regex: '^\".*\.h\"' Priority: 10 SortPriority: 100 # LLVM's header include ordering style is almost the exact opposite of ours. # Unfortunately, they have hard-coded their preferences into clang-format. # Clobbering this regular expression to avoid matching prevents non-system # headers from being forcibly moved to the top of the include list. # http://llvm.org/docs/CodingStandards.html#include-style IncludeIsMainRegex: 'BLAH_DONT_MATCH_ANYTHING' SortIncludes: true KeepEmptyLinesAtTheStartOfBlocks: false TypenameMacros: - ARB_ELMTYPE - ARB_HEAD - ARB8_HEAD - ARB16_HEAD - ARB32_HEAD - ARB_ENTRY - ARB8_ENTRY - ARB16_ENTRY - ARB32_ENTRY - LIST_CLASS_ENTRY - LIST_CLASS_HEAD - LIST_ENTRY - LIST_HEAD - QUEUE_TYPEOF - RB_ENTRY - RB_HEAD - SLIST_CLASS_HEAD - SLIST_CLASS_ENTRY - SLIST_HEAD - SLIST_ENTRY - SMR_POINTER - SPLAY_ENTRY - SPLAY_HEAD - STAILQ_CLASS_ENTRY - STAILQ_CLASS_HEAD - STAILQ_ENTRY - STAILQ_HEAD - TAILQ_CLASS_ENTRY - TAILQ_CLASS_HEAD - TAILQ_ENTRY - TAILQ_HEAD