如何配置clang-format使其优先在函数参数处换行而非点操作符后
你可以通过调整clang-format的换行惩罚权重配置,让工具优先选择在函数参数列表处换行,而非在成员访问的点操作符后换行,适配你使用的clang-format 10版本的配置修改如下:
修改配置项
在你现有的.clang-format文件中添加/调整以下两个配置:
# 提高在成员访问操作符(.、->)后换行的惩罚值,让工具尽量避免在此处换行 PenaltyBreakAfterMemberAccess: 100 # 可选:降低在第一个调用参数前换行的惩罚值,提高此处换行的优先级 PenaltyBreakBeforeFirstCallParameter: 10
原理说明
clang-format通过对比不同换行位置的惩罚值总和,选择总惩罚最低的换行方案:
- 你原有配置中
PenaltyBreakBeforeFirstCallParameter默认是19,而成员访问后换行的默认惩罚值较低,所以中等长度下工具优先选择在点后换行 - 调整后成员访问后换行的惩罚远高于参数前换行的惩罚,工具就会优先选择把函数调用拆成开括号后每个参数一行的格式
你原有配置里的AlignAfterOpenBracket: AlwaysBreak已经符合要求,不需要额外修改,调整后重载clang-format配置即可生效。如果有极个别特殊场景不符合预期,可以在对应代码块前后添加// clang-format off和// clang-format on手动控制格式。
内容的提问来源于stack exchange,提问作者code_fodder
相关产品推荐
相关产品推荐

