clang-format: update rules

Update clang-format rules to the linux kernel coding style, with some
exceptions
This commit is contained in:
Ryan Turner 2025-09-03 20:44:50 -05:00 committed by Silvano Seva
parent 485dedc8f3
commit 28fe4eb9e1
1 changed files with 132 additions and 31 deletions

View File

@ -1,35 +1,136 @@
# Clang format taken from https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/.clang-format?id=b9a10f876409bf3768178f4aded199e193ddbe33
# Patched with:
# - .*indentwidth: 4
# - IndentCaseLabels: true
# - removal of "ForEachMacros" that are irrevelant to this project
# - AlignConsecutiveBitFields: true
# - AlignOperands: AlignAfterOperator
# - AlignTrailingComments:
# Kind: Always
# OverEmptyLines: 1
# - Standard: c++14
# Original header below
##########################################################################
# SPDX-License-Identifier: GPL-2.0
#
# clang-format configuration file. Intended for clang-format >= 11.
#
# For more information, see:
#
# Documentation/dev-tools/clang-format.rst
# https://clang.llvm.org/docs/ClangFormat.html
# https://clang.llvm.org/docs/ClangFormatStyleOptions.html
#
--- ---
BasedOnStyle: Google AccessModifierOffset: -4
AlignConsecutiveBitFields: AcrossEmptyLinesAndComments AlignAfterOpenBracket: Align
AlignTrailingComments: 'true' AlignConsecutiveAssignments: false
AlignConsecutiveAssignments: Consecutive AlignConsecutiveDeclarations: false
AllowShortFunctionsOnASingleLine: 'false' AlignEscapedNewlines: Left
ColumnLimit: '80' AlignConsecutiveBitFields: true
DerivePointerAlignment: 'false' AlignOperands: AlignAfterOperator
IndentExternBlock: NoIndent AlignTrailingComments:
IndentWidth: '4' Kind: Always
NamespaceIndentation: Inner OverEmptyLines: 1
AllowAllParametersOfDeclarationOnNextLine: false
BinPackParameters: 'false' AllowShortBlocksOnASingleLine: false
BreakBeforeBraces: Custom AllowShortCaseLabelsOnASingleLine: false
AllowShortFunctionsOnASingleLine: None
AllowShortIfStatementsOnASingleLine: false
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: false
BinPackArguments: true
BinPackParameters: true
BraceWrapping: BraceWrapping:
AfterCaseLabel: 'true' AfterClass: false
AfterClass: 'true' AfterControlStatement: false
AfterControlStatement: Always AfterEnum: false
AfterEnum: 'true' AfterFunction: true
AfterFunction: 'true' AfterNamespace: true
AfterNamespace: 'true' AfterObjCDeclaration: false
AfterObjCDeclaration: 'true' AfterStruct: false
AfterStruct: 'true' AfterUnion: false
AfterUnion: 'true' AfterExternBlock: false
AfterExternBlock: 'false' BeforeCatch: false
BeforeCatch: 'true' BeforeElse: false
BeforeElse: 'true' IndentBraces: false
BeforeLambdaBody: 'true' SplitEmptyFunction: true
BeforeWhile: 'false' SplitEmptyRecord: true
IndentBraces: 'false' SplitEmptyNamespace: true
SplitEmptyFunction: 'true' BreakBeforeBinaryOperators: None
SplitEmptyRecord: 'true' BreakBeforeBraces: Custom
SplitEmptyNamespace: 'true' BreakBeforeInheritanceComma: false
BreakBeforeTernaryOperators: false
BreakConstructorInitializersBeforeComma: false
BreakConstructorInitializers: BeforeComma
BreakAfterJavaFieldAnnotations: false
BreakStringLiterals: false
ColumnLimit: 80
CommentPragmas: '^ IWYU pragma:'
CompactNamespaces: false
ConstructorInitializerAllOnOneLineOrOnePerLine: false
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: false
DerivePointerAlignment: false
DisableFormat: false
ExperimentalAutoDetectBinPacking: false
FixNamespaceComments: false
IncludeBlocks: Preserve
IncludeCategories:
- Regex: '.*'
Priority: 1
IncludeIsMainRegex: '(Test)?$'
IndentCaseLabels: true
IndentGotoLabels: false
IndentPPDirectives: None
IndentWidth: 4
IndentWrappedFunctionNames: false
JavaScriptQuotes: Leave
JavaScriptWrapImports: true
KeepEmptyLinesAtTheStartOfBlocks: false
MacroBlockBegin: ''
MacroBlockEnd: ''
MaxEmptyLinesToKeep: 1
NamespaceIndentation: None
ObjCBinPackProtocolList: Auto
ObjCBlockIndentWidth: 4
ObjCSpaceAfterProperty: true
ObjCSpaceBeforeProtocolList: true
# Taken from git's rules
PenaltyBreakAssignment: 10
PenaltyBreakBeforeFirstCallParameter: 30
PenaltyBreakComment: 10
PenaltyBreakFirstLessLess: 0
PenaltyBreakString: 10
PenaltyExcessCharacter: 100
PenaltyReturnTypeOnItsOwnLine: 60
PointerAlignment: Right
ReflowComments: false
SortIncludes: false
SortUsingDeclarations: false
SpaceAfterCStyleCast: false
SpaceAfterTemplateKeyword: true
SpaceBeforeAssignmentOperators: true
SpaceBeforeCtorInitializerColon: true
SpaceBeforeInheritanceColon: true
SpaceBeforeParens: ControlStatementsExceptForEachMacros
SpaceBeforeRangeBasedForLoopColon: true
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 1
SpacesInAngles: false
SpacesInContainerLiterals: false
SpacesInCStyleCastParentheses: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
Standard: c++14
TabWidth: 4
UseTab: Never
... ...