如何修改clang-format配置实现函数参数超列宽时逗号后换行缩进?
解决clang-format函数参数逗号后换行的问题
我来帮你搞定这个clang-format的参数换行问题~
你当前使用LLVM 8.0.0,期望函数参数超过列限制时,最后一个参数在逗号后换行并缩进,比如:
void MyVideoClass::Play(CJNIVideo* pJNIVideo, const char* pFile, float startPos, bool bLooping, int nGLTextureId)
但实际得到的却是整个参数列表从括号后直接换行:
void MyVideoClass::Play( CJNIVideo* pJNIVideo, const char* pFile, float startPos, bool bLooping, int nGLTextureId)
关键配置修改
你只需要调整两个配置项就能达到预期效果:
AllowAllParametersOfDeclarationOnNextLine:当前你设为false,需要改成true。这个选项的作用是:当参数列表超出列限制时,允许保留部分参数在同一行,而不是强制把所有参数都移到下一行。PenaltyBreakBeforeFirstCallParameter:当前值是2000,这个惩罚值太高了,clang-format会极力避免在第一个参数前换行。你可以把它降低到100(甚至0),这样工具会更倾向于在参数中间(而不是开头)换行。
修改后的核心配置片段如下:
AllowAllParametersOfDeclarationOnNextLine: true PenaltyBreakBeforeFirstCallParameter: 100
另外,注意保持你当前的BinPackParameters: true不变,这个选项会让clang-format尽量把参数打包在同一行,直到超过列限制才触发换行。
验证效果
调整完配置后重新运行clang-format,就能得到你想要的格式啦——前面的参数留在同一行,最后一个参数在逗号后换行并缩进。
内容的提问来源于stack exchange,提问作者void.pointer
相关产品推荐
相关产品推荐

