为何clang-format设置AlignAfterOpenBracket为BlockIndent会导致返回类型单独换行?
解决clang-format中AlignAfterOpenBracket=BlockIndent导致返回类型单独换行的问题
当设置AlignAfterOpenBracket: BlockIndent后出现返回类型与函数名强制分行的情况,调高PenaltyReturnTypeOnItsOwnLine无效是因为这个惩罚参数只针对因行宽限制触发的返回类型换行,而当前的分行是由括号对齐规则间接触发的,需要调整以下关键配置来实现预期格式:
关键配置调整
在你的.clang-format文件中添加/修改这些参数:
# 保持块缩进对齐括号内内容的设置 AlignAfterOpenBracket: BlockIndent # 禁止所有参数和函数名放在同一行,强制参数换行 AllowAllParametersOfDeclarationOnNextLine: false # 禁止将多个参数打包到同一行 BinPackParameters: false # 降低在第一个参数前换行的惩罚值,让clang-format更倾向于在括号后换行 PenaltyBreakBeforeFirstCallParameter: 0 # 保持高惩罚值,避免其他场景下返回类型单独换行 PenaltyReturnTypeOnItsOwnLine: 10000
效果验证
应用上述配置后,代码会被格式化为预期样式:
class Test { virtual void mergeOfflineRegions( const std::string &sideDatabasePath, std::function<void(expected<OfflineRegions, std::exception_ptr>)> ); };
内容的提问来源于stack exchange,提问作者Bart Louwers
相关产品推荐
相关产品推荐

