如何配置clang-format避免点前换行并拆分超长注释?
类C++方言代码的clang-format格式化问题
我正在使用clang-format对类C++方言代码进行自动格式化,该方言不支持链式命令或声明中点前换行的写法。
输入代码
以下代码符合方言规范,但超出了.clang-format中ColumnLimit:80的限制(注释仅开头有空格,其余无空格):
extern int some_outer_scope.some_variable; // Description.where.this.variable.is.coming.from.which.is.far.too.long.and.should.be.broken
当前错误输出
clang-format(配置见下文)将其格式化为方言不允许的样式:
extern int some_outer_scope .some_variable; // Description.where.this.variable.is.coming.from.which.is.far.too.long.and.should.be.broken
期望输出
以下任意一种格式均可接受:
- 保持原代码不变,忽略此场景下的
ColumnLimit限制:
extern int some_outer_scope.some_variable; // Description.where.this.variable.is.coming.from.which.is.far.too.long.and.should.be.broken
- 优先按
::、.分隔符拆分注释,或任意拆分注释以满足ColumnLimit要求:
extern int some_outer_scope.some_variable; // Description.where.this.variable // .is.coming.from.which.is.far.too.long.and // .should.be.broken // 或者 extern int some_outer_scope.some_variable; // Description.where.this.variable.is.coming.fr // om.which.is.far.too.long.and.should.be.broken
当前clang-format样式配置
--- BasedOnStyle: Google IndentWidth: 2 --- Language: Cpp AlignAfterOpenBracket: BlockIndent AlignArrayOfStructures: Right AlignConsecutiveAssignments: Enabled: true AcrossEmptyLines: false AcrossComments: false AlignCompound: true PadOperators: false AlignConsecutiveDeclarations: Enabled: true AcrossEmptyLines: false AcrossComments: false AlignConsecutiveMacros: Enabled: false AcrossEmptyLines: false AcrossComments: false AlignOperands: Align AlignTrailingComments: Kind: Never OverEmptyLines: 0 AllowAllArgumentsOnNextLine: true AllowAllParametersOfDeclarationOnNextLine: true AllowShortBlocksOnASingleLine: Always AllowShortEnumsOnASingleLine: true AllowShortFunctionsOnASingleLine: All AllowShortIfStatementsOnASingleLine: Never AllowShortLoopsOnASingleLine: true AlwaysBreakAfterReturnType: None AlwaysBreakBeforeMultilineStrings: true AlwaysBreakTemplateDeclarations: Yes BinPackArguments: true BinPackParameters: true BreakBeforeBraces: Custom BraceWrapping: AfterClass: false AfterControlStatement: Never AfterFunction: false AfterExternBlock: false BeforeElse: true BeforeWhile: false IndentBraces: false SplitEmptyFunction: false SplitEmptyRecord: false #BreakAdjacentStringLiterals: false BreakBeforeBinaryOperators: NonAssignment BreakStringLiterals: true ColumnLimit: 80 ConstructorInitializerIndentWidth: 2 ContinuationIndentWidth: 2 Cpp11BracedListStyle: false ExperimentalAutoDetectBinPacking: false IncludeBlocks: Merge IndentExternBlock: AfterExternBlock IndentPPDirectives: BeforeHash IndentWrappedFunctionNames: true InsertBraces: false InsertNewlineAtEOF: true InsertTrailingCommas: None KeepEmptyLinesAtEOF: false KeepEmptyLinesAtTheStartOfBlocks: false LineEnding: LF MaxEmptyLinesToKeep: 1 PenaltyBreakBeforeFirstCallParameter: 0 PenaltyBreakComment: 0 PenaltyBreakString: 0 PPIndentWidth: -1 ReflowComments: true RemoveSemicolon: true SeparateDefinitionBlocks: Always SortIncludes: false SpaceBeforeAssignmentOperators: true SpaceBeforeCpp11BracedList: true SpaceBeforeParens: ControlStatements SpaceBeforeSquareBrackets: false SpaceInEmptyBlock: false SpaceInEmptyParentheses: false SpacesBeforeTrailingComments: 2 SpacesInAngles: Never SpacesInConditionalStatement: true SpacesInLineCommentPrefix: Minimum: 1 Maximum: 1 SpacesInParentheses: true SpacesInSquareBrackets: false Standard: Latest TabWidth: 2 TypeNames: ['int', 'string'] UseTab: Never ...
内容的提问来源于stack exchange,提问作者JE_Muc
相关产品推荐
相关产品推荐

