Browse Source

clang-format: Sync config with LLVM 13

Disable minimum amount of spaces in comment prefix for now, as it otherwise
modifies the whole codebase. That's something we probably want to use as it
matches our convention, but we should look into fully converting these
comments to our style guide at the same time.

(cherry picked from commit 63544c3a9d4a11efde8d214a4936ae3e24e1c6c8)
Rémi Verschelde 3 years ago
parent
commit
093919196a
2 changed files with 80 additions and 18 deletions
  1. 77 15
      .clang-format
  2. 3 3
      misc/hooks/pre-commit-clang-format

+ 77 - 15
.clang-format

@@ -1,31 +1,41 @@
-# Commented out parameters are those with the same value as base LLVM style
+# Commented out parameters are those with the same value as base LLVM style.
 # We can uncomment them if we want to change their value, or enforce the
 # We can uncomment them if we want to change their value, or enforce the
-# chosen value in case the base style changes (last sync: Clang 6.0.1).
+# chosen value in case the base style changes (last sync: Clang 13.0).
 ---
 ---
 ### General config, applies to all languages ###
 ### General config, applies to all languages ###
 BasedOnStyle:  LLVM
 BasedOnStyle:  LLVM
 AccessModifierOffset: -4
 AccessModifierOffset: -4
 AlignAfterOpenBracket: DontAlign
 AlignAfterOpenBracket: DontAlign
-# AlignConsecutiveAssignments: false
-# AlignConsecutiveDeclarations: false
+# AlignArrayOfStructures: None
+# AlignConsecutiveMacros: None
+# AlignConsecutiveAssignments: None
+# AlignConsecutiveBitFields: None
+# AlignConsecutiveDeclarations: None
 # AlignEscapedNewlines: Right
 # AlignEscapedNewlines: Right
-# AlignOperands:   true
+# AlignOperands:   Align
 AlignTrailingComments: false
 AlignTrailingComments: false
+# AllowAllArgumentsOnNextLine: true
+# AllowAllConstructorInitializersOnNextLine: true
 AllowAllParametersOfDeclarationOnNextLine: false
 AllowAllParametersOfDeclarationOnNextLine: false
-# AllowShortBlocksOnASingleLine: false
+# AllowShortEnumsOnASingleLine: true
+# AllowShortBlocksOnASingleLine: Never
 # AllowShortCaseLabelsOnASingleLine: false
 # AllowShortCaseLabelsOnASingleLine: false
 AllowShortFunctionsOnASingleLine: Inline
 AllowShortFunctionsOnASingleLine: Inline
-# AllowShortIfStatementsOnASingleLine: false
+# AllowShortLambdasOnASingleLine: All
+# AllowShortIfStatementsOnASingleLine: Never
 # AllowShortLoopsOnASingleLine: false
 # AllowShortLoopsOnASingleLine: false
 # AlwaysBreakAfterDefinitionReturnType: None
 # AlwaysBreakAfterDefinitionReturnType: None
 # AlwaysBreakAfterReturnType: None
 # AlwaysBreakAfterReturnType: None
 # AlwaysBreakBeforeMultilineStrings: false
 # AlwaysBreakBeforeMultilineStrings: false
-# AlwaysBreakTemplateDeclarations: false
+# AlwaysBreakTemplateDeclarations: MultiLine
+# AttributeMacros:
+#   - __capability
 # BinPackArguments: true
 # BinPackArguments: true
 # BinPackParameters: true
 # BinPackParameters: true
 # BraceWrapping:
 # BraceWrapping:
+#   AfterCaseLabel:  false
 #   AfterClass:      false
 #   AfterClass:      false
-#   AfterControlStatement: false
+#   AfterControlStatement: Never
 #   AfterEnum:       false
 #   AfterEnum:       false
 #   AfterFunction:   false
 #   AfterFunction:   false
 #   AfterNamespace:  false
 #   AfterNamespace:  false
@@ -35,13 +45,17 @@ AllowShortFunctionsOnASingleLine: Inline
 #   AfterExternBlock: false
 #   AfterExternBlock: false
 #   BeforeCatch:     false
 #   BeforeCatch:     false
 #   BeforeElse:      false
 #   BeforeElse:      false
+#   BeforeLambdaBody: false
+#   BeforeWhile:     false
 #   IndentBraces:    false
 #   IndentBraces:    false
 #   SplitEmptyFunction: true
 #   SplitEmptyFunction: true
 #   SplitEmptyRecord: true
 #   SplitEmptyRecord: true
 #   SplitEmptyNamespace: true
 #   SplitEmptyNamespace: true
 # BreakBeforeBinaryOperators: None
 # BreakBeforeBinaryOperators: None
+# BreakBeforeConceptDeclarations: true
 # BreakBeforeBraces: Attach
 # BreakBeforeBraces: Attach
 # BreakBeforeInheritanceComma: false
 # BreakBeforeInheritanceComma: false
+# BreakInheritanceList: BeforeColon
 BreakBeforeTernaryOperators: false
 BreakBeforeTernaryOperators: false
 # BreakConstructorInitializersBeforeComma: false
 # BreakConstructorInitializersBeforeComma: false
 BreakConstructorInitializers: AfterColon
 BreakConstructorInitializers: AfterColon
@@ -53,14 +67,19 @@ ConstructorInitializerAllOnOneLineOrOnePerLine: true
 ConstructorInitializerIndentWidth: 8
 ConstructorInitializerIndentWidth: 8
 ContinuationIndentWidth: 8
 ContinuationIndentWidth: 8
 Cpp11BracedListStyle: false
 Cpp11BracedListStyle: false
+# DeriveLineEnding: true
 # DerivePointerAlignment: false
 # DerivePointerAlignment: false
 # DisableFormat:   false
 # DisableFormat:   false
+# EmptyLineAfterAccessModifier: Never
+# EmptyLineBeforeAccessModifier: LogicalBlock
 # ExperimentalAutoDetectBinPacking: false
 # ExperimentalAutoDetectBinPacking: false
 # FixNamespaceComments: true
 # FixNamespaceComments: true
 # ForEachMacros:
 # ForEachMacros:
 #   - foreach
 #   - foreach
 #   - Q_FOREACH
 #   - Q_FOREACH
 #   - BOOST_FOREACH
 #   - BOOST_FOREACH
+# IfMacros:
+#   - KJ_IF_MAYBE
 # IncludeBlocks:   Preserve
 # IncludeBlocks:   Preserve
 IncludeCategories:
 IncludeCategories:
   - Regex:           '".*"'
   - Regex:           '".*"'
@@ -70,13 +89,21 @@ IncludeCategories:
   - Regex:           '^<.*'
   - Regex:           '^<.*'
     Priority:        3
     Priority:        3
 # IncludeIsMainRegex: '(Test)?$'
 # IncludeIsMainRegex: '(Test)?$'
+# IncludeIsMainSourceRegex: ''
+# IndentAccessModifiers: false
 IndentCaseLabels: true
 IndentCaseLabels: true
+# IndentCaseBlocks: false
+# IndentGotoLabels: true
 # IndentPPDirectives: None
 # IndentPPDirectives: None
+# IndentExternBlock: AfterExternBlock
+# IndentRequires:  false
 IndentWidth:     4
 IndentWidth:     4
 # IndentWrappedFunctionNames: false
 # IndentWrappedFunctionNames: false
+# InsertTrailingCommas: None
 # JavaScriptQuotes: Leave
 # JavaScriptQuotes: Leave
 # JavaScriptWrapImports: true
 # JavaScriptWrapImports: true
 KeepEmptyLinesAtTheStartOfBlocks: false
 KeepEmptyLinesAtTheStartOfBlocks: false
+# LambdaBodyIndentation: Signature
 # MacroBlockBegin: ''
 # MacroBlockBegin: ''
 # MacroBlockEnd:   ''
 # MacroBlockEnd:   ''
 # MaxEmptyLinesToKeep: 1
 # MaxEmptyLinesToKeep: 1
@@ -86,29 +113,62 @@ KeepEmptyLinesAtTheStartOfBlocks: false
 # PenaltyBreakComment: 300
 # PenaltyBreakComment: 300
 # PenaltyBreakFirstLessLess: 120
 # PenaltyBreakFirstLessLess: 120
 # PenaltyBreakString: 1000
 # PenaltyBreakString: 1000
+# PenaltyBreakTemplateDeclaration: 10
 # PenaltyExcessCharacter: 1000000
 # PenaltyExcessCharacter: 1000000
 # PenaltyReturnTypeOnItsOwnLine: 60
 # PenaltyReturnTypeOnItsOwnLine: 60
+# PenaltyIndentedWhitespace: 0
 # PointerAlignment: Right
 # PointerAlignment: Right
-# RawStringFormats:
-#   - Delimiter:       pb
-#     Language:        TextProto
-#     BasedOnStyle:    google
+# PPIndentWidth:   -1
+# ReferenceAlignment: Pointer
 # ReflowComments:  true
 # ReflowComments:  true
-# SortIncludes:    true
+# ShortNamespaceLines: 1
+# SortIncludes:    CaseSensitive
+# SortJavaStaticImport: Before
 # SortUsingDeclarations: true
 # SortUsingDeclarations: true
 # SpaceAfterCStyleCast: false
 # SpaceAfterCStyleCast: false
+# SpaceAfterLogicalNot: false
 # SpaceAfterTemplateKeyword: true
 # SpaceAfterTemplateKeyword: true
 # SpaceBeforeAssignmentOperators: true
 # SpaceBeforeAssignmentOperators: true
+# SpaceBeforeCaseColon: false
+# SpaceBeforeCpp11BracedList: false
+# SpaceBeforeCtorInitializerColon: true
+# SpaceBeforeInheritanceColon: true
 # SpaceBeforeParens: ControlStatements
 # SpaceBeforeParens: ControlStatements
+# SpaceAroundPointerQualifiers: Default
+# SpaceBeforeRangeBasedForLoopColon: true
 # SpaceInEmptyParentheses: false
 # SpaceInEmptyParentheses: false
 # SpacesBeforeTrailingComments: 1
 # SpacesBeforeTrailingComments: 1
-# SpacesInAngles:  false
+# SpaceInEmptyBlock: false
+# SpaceInEmptyParentheses: false
+# SpacesBeforeTrailingComments: 1
+# SpacesInAngles:  Never
+# SpacesInContainerLiterals: true
+# SpacesInConditionalStatement: false
 # SpacesInContainerLiterals: true
 # SpacesInContainerLiterals: true
 # SpacesInCStyleCastParentheses: false
 # SpacesInCStyleCastParentheses: false
+## Godot TODO: We'll want to use a min of 1, but we need to see how to fix
+## our comment capitalization at the same time.
+SpacesInLineCommentPrefix:
+  Minimum:         0
+  Maximum:         -1
 # SpacesInParentheses: false
 # SpacesInParentheses: false
 # SpacesInSquareBrackets: false
 # SpacesInSquareBrackets: false
+# SpaceBeforeSquareBrackets: false
+# BitFieldColonSpacing: Both
+# StatementAttributeLikeMacros:
+#   - Q_EMIT
+# StatementMacros:
+#   - Q_UNUSED
+#   - QT_REQUIRE_VERSION
 TabWidth:        4
 TabWidth:        4
+# UseCRLF:         false
 UseTab:          Always
 UseTab:          Always
+# WhitespaceSensitiveMacros:
+#   - STRINGIZE
+#   - PP_STRINGIZE
+#   - BOOST_PP_STRINGIZE
+#   - NS_SWIFT_NAME
+#   - CF_SWIFT_NAME
 ---
 ---
 ### C++ specific config ###
 ### C++ specific config ###
 Language:        Cpp
 Language:        Cpp
@@ -116,7 +176,9 @@ Standard:        c++14
 ---
 ---
 ### ObjC specific config ###
 ### ObjC specific config ###
 Language:        ObjC
 Language:        ObjC
+# ObjCBinPackProtocolList: Auto
 ObjCBlockIndentWidth: 4
 ObjCBlockIndentWidth: 4
+# ObjCBreakBeforeNestedBlockParam: true
 # ObjCSpaceAfterProperty: false
 # ObjCSpaceAfterProperty: false
 # ObjCSpaceBeforeProtocolList: true
 # ObjCSpaceBeforeProtocolList: true
 ---
 ---

+ 3 - 3
misc/hooks/pre-commit-clang-format

@@ -77,10 +77,10 @@ fi
 # To get consistent formatting, we recommend contributors to use the same
 # To get consistent formatting, we recommend contributors to use the same
 # clang-format version as CI.
 # clang-format version as CI.
 RECOMMENDED_CLANG_FORMAT_MAJOR_MIN="11"
 RECOMMENDED_CLANG_FORMAT_MAJOR_MIN="11"
-RECOMMENDED_CLANG_FORMAT_MAJOR_MAX="12"
+RECOMMENDED_CLANG_FORMAT_MAJOR_MAX="13"
 
 
 if [ ! -x "$CLANG_FORMAT" ] ; then
 if [ ! -x "$CLANG_FORMAT" ] ; then
-	message="Error: clang-format executable not found. Please install clang-format $RECOMMENDED_CLANG_FORMAT_MAJOR.x.x."
+	message="Error: clang-format executable not found. Please install clang-format $RECOMMENDED_CLANG_FORMAT_MAJOR_MAX."
 
 
     if [ ! -t 1 ] ; then
     if [ ! -t 1 ] ; then
         if [ -x "$ZENITY" ] ; then
         if [ -x "$ZENITY" ] ; then
@@ -108,7 +108,7 @@ CLANG_FORMAT_VERSION="$(clang-format --version | sed "s/[^0-9\.]*\([0-9\.]*\).*/
 CLANG_FORMAT_MAJOR="$(echo "$CLANG_FORMAT_VERSION" | cut -d. -f1)"
 CLANG_FORMAT_MAJOR="$(echo "$CLANG_FORMAT_VERSION" | cut -d. -f1)"
 
 
 if [[ "$CLANG_FORMAT_MAJOR" -lt "$RECOMMENDED_CLANG_FORMAT_MAJOR_MIN" || "$CLANG_FORMAT_MAJOR" -gt "$RECOMMENDED_CLANG_FORMAT_MAJOR_MAX" ]]; then
 if [[ "$CLANG_FORMAT_MAJOR" -lt "$RECOMMENDED_CLANG_FORMAT_MAJOR_MIN" || "$CLANG_FORMAT_MAJOR" -gt "$RECOMMENDED_CLANG_FORMAT_MAJOR_MAX" ]]; then
-    echo "Warning: Your clang-format binary is the wrong version ($CLANG_FORMAT_VERSION, expected between $RECOMMENDED_CLANG_FORMAT_MAJOR_MIN.x.x and $RECOMMENDED_CLANG_FORMAT_MAJOR_MAX.x.x)."
+    echo "Warning: Your clang-format binary is the wrong version ($CLANG_FORMAT_VERSION, expected between $RECOMMENDED_CLANG_FORMAT_MAJOR_MIN and $RECOMMENDED_CLANG_FORMAT_MAJOR_MAX)."
     echo "         Consider upgrading or downgrading clang-format as formatting may not be applied correctly."
     echo "         Consider upgrading or downgrading clang-format as formatting may not be applied correctly."
 fi
 fi