Use unmodified official ClangFormat configuration as base formatter configuration (#1324)

The Arduino IDE's "Auto Format" feature is configured to produce the standard Arduino sketch formatting style by
default.

The Arduino IDE editor's default settings are compliant with that style. However, the user may adjust the editor
settings. In this case, the Arduino IDE automatically adjusts the Auto Format configuration to align with the user's
preferences.

The formatter configuration is consumed by several other projects in addition to the Arduino IDE. For this reason, the
configuration is hosted and maintained in a centralized location, from which it is pulled by all projects that use it.

Previously, the adjustment of the Arduino IDE formatter configuration according to the editor settings was integrated
into the configuration object itself. This meant that the standardized configuration had to be modified each time it was
pulled in to sync from the upstream source.

Moving the base formatter configuration object to a dedicated file, separated from the handling and adjustment code
allows syncs to be done by simply replacing the existing configuration file with the one automatically generated by the
CI system of the repository where the source configuration is hosted.
This commit is contained in:
per1234 2022-08-16 08:09:39 -07:00 committed by GitHub
parent 75e00c2bae
commit 9e2b73a045
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 196 additions and 181 deletions

View File

@ -147,189 +147,10 @@ function styleJson({
UseTab,
}: ClangFormatOptions): Record<string, unknown> {
// Source: https://github.com/arduino/tooling-project-assets/tree/main/other/clang-format-configuration
const defaultConfig = require('../../src/node/default-formatter-config.json');
return {
AccessModifierOffset: -2,
AlignAfterOpenBracket: 'Align',
AlignArrayOfStructures: 'None',
AlignConsecutiveAssignments: 'None',
AlignConsecutiveBitFields: 'None',
AlignConsecutiveDeclarations: 'None',
AlignConsecutiveMacros: 'None',
AlignEscapedNewlines: 'DontAlign',
AlignOperands: 'Align',
AlignTrailingComments: true,
AllowAllArgumentsOnNextLine: true,
AllowAllConstructorInitializersOnNextLine: true,
AllowAllParametersOfDeclarationOnNextLine: true,
AllowShortBlocksOnASingleLine: 'Always',
AllowShortCaseLabelsOnASingleLine: true,
AllowShortEnumsOnASingleLine: true,
AllowShortFunctionsOnASingleLine: 'Empty',
AllowShortIfStatementsOnASingleLine: 'AllIfsAndElse',
AllowShortLambdasOnASingleLine: 'Empty',
AllowShortLoopsOnASingleLine: true,
AlwaysBreakAfterDefinitionReturnType: 'None',
AlwaysBreakAfterReturnType: 'None',
AlwaysBreakBeforeMultilineStrings: false,
AlwaysBreakTemplateDeclarations: 'No',
AttributeMacros: ['__capability'],
BasedOnStyle: 'LLVM',
BinPackArguments: true,
BinPackParameters: true,
BitFieldColonSpacing: 'Both',
BraceWrapping: {
AfterCaseLabel: false,
AfterClass: false,
AfterControlStatement: 'Never',
AfterEnum: false,
AfterFunction: false,
AfterNamespace: false,
AfterObjCDeclaration: false,
AfterStruct: false,
AfterUnion: false,
AfterExternBlock: false,
BeforeCatch: false,
BeforeElse: false,
BeforeLambdaBody: false,
BeforeWhile: false,
IndentBraces: false,
SplitEmptyFunction: true,
SplitEmptyRecord: true,
SplitEmptyNamespace: true,
},
BreakAfterJavaFieldAnnotations: false,
BreakBeforeBinaryOperators: 'NonAssignment',
BreakBeforeBraces: 'Attach',
BreakBeforeConceptDeclarations: false,
BreakBeforeInheritanceComma: false,
BreakBeforeTernaryOperators: true,
BreakConstructorInitializers: 'BeforeColon',
BreakConstructorInitializersBeforeComma: false,
BreakInheritanceList: 'BeforeColon',
BreakStringLiterals: false,
ColumnLimit: 0,
CommentPragmas: '',
CompactNamespaces: false,
ConstructorInitializerAllOnOneLineOrOnePerLine: false,
ConstructorInitializerIndentWidth: 2,
ContinuationIndentWidth: 2,
Cpp11BracedListStyle: false,
DeriveLineEnding: true,
DerivePointerAlignment: true,
DisableFormat: false,
EmptyLineAfterAccessModifier: 'Leave',
EmptyLineBeforeAccessModifier: 'Leave',
ExperimentalAutoDetectBinPacking: false,
FixNamespaceComments: false,
ForEachMacros: ['foreach', 'Q_FOREACH', 'BOOST_FOREACH'],
IfMacros: ['KJ_IF_MAYBE'],
IncludeBlocks: 'Preserve',
IncludeCategories: [
{
Regex: '^"(llvm|llvm-c|clang|clang-c)/',
Priority: 2,
SortPriority: 0,
CaseSensitive: false,
},
{
Regex: '^(<|"(gtest|gmock|isl|json)/)',
Priority: 3,
SortPriority: 0,
CaseSensitive: false,
},
{ Regex: '.*', Priority: 1, SortPriority: 0, CaseSensitive: false },
],
IncludeIsMainRegex: '',
IncludeIsMainSourceRegex: '',
IndentAccessModifiers: false,
IndentCaseBlocks: true,
IndentCaseLabels: true,
IndentExternBlock: 'Indent',
IndentGotoLabels: false,
IndentPPDirectives: 'None',
IndentRequires: true,
IndentWidth: 2,
IndentWrappedFunctionNames: false,
InsertTrailingCommas: 'None',
JavaScriptQuotes: 'Leave',
JavaScriptWrapImports: true,
KeepEmptyLinesAtTheStartOfBlocks: true,
LambdaBodyIndentation: 'Signature',
Language: 'Cpp',
MacroBlockBegin: '',
MacroBlockEnd: '',
MaxEmptyLinesToKeep: 100000,
NamespaceIndentation: 'None',
ObjCBinPackProtocolList: 'Auto',
ObjCBlockIndentWidth: 2,
ObjCBreakBeforeNestedBlockParam: true,
ObjCSpaceAfterProperty: false,
ObjCSpaceBeforeProtocolList: true,
PPIndentWidth: -1,
PackConstructorInitializers: 'BinPack',
PenaltyBreakAssignment: 1,
PenaltyBreakBeforeFirstCallParameter: 1,
PenaltyBreakComment: 1,
PenaltyBreakFirstLessLess: 1,
PenaltyBreakOpenParenthesis: 1,
PenaltyBreakString: 1,
PenaltyBreakTemplateDeclaration: 1,
PenaltyExcessCharacter: 1,
PenaltyIndentedWhitespace: 1,
PenaltyReturnTypeOnItsOwnLine: 1,
PointerAlignment: 'Right',
QualifierAlignment: 'Leave',
ReferenceAlignment: 'Pointer',
ReflowComments: false,
RemoveBracesLLVM: false,
SeparateDefinitionBlocks: 'Leave',
ShortNamespaceLines: 0,
SortIncludes: 'Never',
SortJavaStaticImport: 'Before',
SortUsingDeclarations: false,
SpaceAfterCStyleCast: false,
SpaceAfterLogicalNot: false,
SpaceAfterTemplateKeyword: false,
SpaceAroundPointerQualifiers: 'Default',
SpaceBeforeAssignmentOperators: true,
SpaceBeforeCaseColon: false,
SpaceBeforeCpp11BracedList: false,
SpaceBeforeCtorInitializerColon: true,
SpaceBeforeInheritanceColon: true,
SpaceBeforeParens: 'ControlStatements',
SpaceBeforeParensOptions: {
AfterControlStatements: true,
AfterForeachMacros: true,
AfterFunctionDefinitionName: false,
AfterFunctionDeclarationName: false,
AfterIfMacros: true,
AfterOverloadedOperator: false,
BeforeNonEmptyParentheses: false,
},
SpaceBeforeRangeBasedForLoopColon: true,
SpaceBeforeSquareBrackets: false,
SpaceInEmptyBlock: false,
SpaceInEmptyParentheses: false,
SpacesBeforeTrailingComments: 2,
SpacesInAngles: 'Leave',
SpacesInCStyleCastParentheses: false,
SpacesInConditionalStatement: false,
SpacesInContainerLiterals: false,
SpacesInLineCommentPrefix: { Minimum: 0, Maximum: -1 },
SpacesInParentheses: false,
SpacesInSquareBrackets: false,
Standard: 'Auto',
StatementAttributeLikeMacros: ['Q_EMIT'],
StatementMacros: ['Q_UNUSED', 'QT_REQUIRE_VERSION'],
...defaultConfig,
TabWidth,
UseCRLF: false,
UseTab,
WhitespaceSensitiveMacros: [
'STRINGIZE',
'PP_STRINGIZE',
'BOOST_PP_STRINGIZE',
'NS_SWIFT_NAME',
'CF_SWIFT_NAME',
],
};
}

View File

@ -0,0 +1,193 @@
{
"AccessModifierOffset": -2,
"AlignAfterOpenBracket": "Align",
"AlignArrayOfStructures": "None",
"AlignConsecutiveAssignments": "None",
"AlignConsecutiveBitFields": "None",
"AlignConsecutiveDeclarations": "None",
"AlignConsecutiveMacros": "None",
"AlignEscapedNewlines": "DontAlign",
"AlignOperands": "Align",
"AlignTrailingComments": true,
"AllowAllArgumentsOnNextLine": true,
"AllowAllConstructorInitializersOnNextLine": true,
"AllowAllParametersOfDeclarationOnNextLine": true,
"AllowShortBlocksOnASingleLine": "Always",
"AllowShortCaseLabelsOnASingleLine": true,
"AllowShortEnumsOnASingleLine": true,
"AllowShortFunctionsOnASingleLine": "Empty",
"AllowShortIfStatementsOnASingleLine": "AllIfsAndElse",
"AllowShortLambdasOnASingleLine": "Empty",
"AllowShortLoopsOnASingleLine": true,
"AlwaysBreakAfterDefinitionReturnType": "None",
"AlwaysBreakAfterReturnType": "None",
"AlwaysBreakBeforeMultilineStrings": false,
"AlwaysBreakTemplateDeclarations": "No",
"AttributeMacros": ["__capability"],
"BasedOnStyle": "LLVM",
"BinPackArguments": true,
"BinPackParameters": true,
"BitFieldColonSpacing": "Both",
"BraceWrapping": {
"AfterCaseLabel": false,
"AfterClass": false,
"AfterControlStatement": "Never",
"AfterEnum": false,
"AfterFunction": false,
"AfterNamespace": false,
"AfterObjCDeclaration": false,
"AfterStruct": false,
"AfterUnion": false,
"AfterExternBlock": false,
"BeforeCatch": false,
"BeforeElse": false,
"BeforeLambdaBody": false,
"BeforeWhile": false,
"IndentBraces": false,
"SplitEmptyFunction": true,
"SplitEmptyRecord": true,
"SplitEmptyNamespace": true
},
"BreakAfterJavaFieldAnnotations": false,
"BreakBeforeBinaryOperators": "NonAssignment",
"BreakBeforeBraces": "Attach",
"BreakBeforeConceptDeclarations": false,
"BreakBeforeInheritanceComma": false,
"BreakBeforeTernaryOperators": true,
"BreakConstructorInitializers": "BeforeColon",
"BreakConstructorInitializersBeforeComma": false,
"BreakInheritanceList": "BeforeColon",
"BreakStringLiterals": false,
"ColumnLimit": 0,
"CommentPragmas": "",
"CompactNamespaces": false,
"ConstructorInitializerAllOnOneLineOrOnePerLine": false,
"ConstructorInitializerIndentWidth": 2,
"ContinuationIndentWidth": 2,
"Cpp11BracedListStyle": false,
"DeriveLineEnding": true,
"DerivePointerAlignment": true,
"DisableFormat": false,
"EmptyLineAfterAccessModifier": "Leave",
"EmptyLineBeforeAccessModifier": "Leave",
"ExperimentalAutoDetectBinPacking": false,
"FixNamespaceComments": false,
"ForEachMacros": ["foreach", "Q_FOREACH", "BOOST_FOREACH"],
"IfMacros": ["KJ_IF_MAYBE"],
"IncludeBlocks": "Preserve",
"IncludeCategories": [
{
"Regex": "^\"(llvm|llvm-c|clang|clang-c)/",
"Priority": 2,
"SortPriority": 0,
"CaseSensitive": false
},
{
"Regex": "^(<|\"(gtest|gmock|isl|json)/)",
"Priority": 3,
"SortPriority": 0,
"CaseSensitive": false
},
{
"Regex": ".*",
"Priority": 1,
"SortPriority": 0,
"CaseSensitive": false
}
],
"IncludeIsMainRegex": "",
"IncludeIsMainSourceRegex": "",
"IndentAccessModifiers": false,
"IndentCaseBlocks": true,
"IndentCaseLabels": true,
"IndentExternBlock": "Indent",
"IndentGotoLabels": false,
"IndentPPDirectives": "None",
"IndentRequires": true,
"IndentWidth": 2,
"IndentWrappedFunctionNames": false,
"InsertTrailingCommas": "None",
"JavaScriptQuotes": "Leave",
"JavaScriptWrapImports": true,
"KeepEmptyLinesAtTheStartOfBlocks": true,
"LambdaBodyIndentation": "Signature",
"Language": "Cpp",
"MacroBlockBegin": "",
"MacroBlockEnd": "",
"MaxEmptyLinesToKeep": 100000,
"NamespaceIndentation": "None",
"ObjCBinPackProtocolList": "Auto",
"ObjCBlockIndentWidth": 2,
"ObjCBreakBeforeNestedBlockParam": true,
"ObjCSpaceAfterProperty": false,
"ObjCSpaceBeforeProtocolList": true,
"PPIndentWidth": -1,
"PackConstructorInitializers": "BinPack",
"PenaltyBreakAssignment": 1,
"PenaltyBreakBeforeFirstCallParameter": 1,
"PenaltyBreakComment": 1,
"PenaltyBreakFirstLessLess": 1,
"PenaltyBreakOpenParenthesis": 1,
"PenaltyBreakString": 1,
"PenaltyBreakTemplateDeclaration": 1,
"PenaltyExcessCharacter": 1,
"PenaltyIndentedWhitespace": 1,
"PenaltyReturnTypeOnItsOwnLine": 1,
"PointerAlignment": "Right",
"QualifierAlignment": "Leave",
"ReferenceAlignment": "Pointer",
"ReflowComments": false,
"RemoveBracesLLVM": false,
"SeparateDefinitionBlocks": "Leave",
"ShortNamespaceLines": 0,
"SortIncludes": "Never",
"SortJavaStaticImport": "Before",
"SortUsingDeclarations": false,
"SpaceAfterCStyleCast": false,
"SpaceAfterLogicalNot": false,
"SpaceAfterTemplateKeyword": false,
"SpaceAroundPointerQualifiers": "Default",
"SpaceBeforeAssignmentOperators": true,
"SpaceBeforeCaseColon": false,
"SpaceBeforeCpp11BracedList": false,
"SpaceBeforeCtorInitializerColon": true,
"SpaceBeforeInheritanceColon": true,
"SpaceBeforeParens": "ControlStatements",
"SpaceBeforeParensOptions": {
"AfterControlStatements": true,
"AfterForeachMacros": true,
"AfterFunctionDefinitionName": false,
"AfterFunctionDeclarationName": false,
"AfterIfMacros": true,
"AfterOverloadedOperator": false,
"BeforeNonEmptyParentheses": false
},
"SpaceBeforeRangeBasedForLoopColon": true,
"SpaceBeforeSquareBrackets": false,
"SpaceInEmptyBlock": false,
"SpaceInEmptyParentheses": false,
"SpacesBeforeTrailingComments": 2,
"SpacesInAngles": "Leave",
"SpacesInCStyleCastParentheses": false,
"SpacesInConditionalStatement": false,
"SpacesInContainerLiterals": false,
"SpacesInLineCommentPrefix": {
"Minimum": 0,
"Maximum": -1
},
"SpacesInParentheses": false,
"SpacesInSquareBrackets": false,
"Standard": "Auto",
"StatementAttributeLikeMacros": ["Q_EMIT"],
"StatementMacros": ["Q_UNUSED", "QT_REQUIRE_VERSION"],
"TabWidth": 2,
"UseCRLF": false,
"UseTab": "Never",
"WhitespaceSensitiveMacros": [
"STRINGIZE",
"PP_STRINGIZE",
"BOOST_PP_STRINGIZE",
"NS_SWIFT_NAME",
"CF_SWIFT_NAME"
]
}

View File

@ -13,6 +13,7 @@
"emitDecoratorMetadata": true,
"module": "commonjs",
"moduleResolution": "node",
"resolveJsonModule": true,
"target": "ES2017",
"outDir": "lib",
"lib": [