如何让clang-format在模板声明后自动换行?
问题解决:clang-format模板声明与类定义换行不生效
你的核心问题是BreakTemplateDeclarations: Yes设置后未生效,结合你的配置文件,主要有几个关键点需要调整:
1. 修正配置中的拼写错误
你的配置里存在两处拼写错误,这会导致clang-format忽略这些配置项:
SeperateDefinitionBlocks→ 正确应为SeparateDefinitionBlocksSpaceBeeforeCpp11BracedList→ 正确应为SpaceBeforeCpp11BracedList
2. 调整模板换行强制规则
你基于WebKit风格,该风格默认不会强制模板声明后换行。即使设置了BreakTemplateDeclarations: Yes,行宽等因素可能会干扰生效逻辑。建议将BreakTemplateDeclarations的值改为Always,这会强制模板声明后换行,不受其他配置影响。
3. 移除已弃用的冲突选项
AlwaysBreakTemplateDeclarations是已弃用的旧选项,和BreakTemplateDeclarations同时存在可能产生冲突,建议删除该配置项,只保留BreakTemplateDeclarations: Always。
修正后的关键配置片段
--- BasedOnStyle: WebKit # ... 其他配置保持不变 ... # 移除 AlwaysBreakTemplateDeclarations: true BreakTemplateDeclarations: Always BreakBeforeBraces: Attach # ... 修正拼写错误 ... SeparateDefinitionBlocks: Always SpaceBeforeCpp11BracedList: false # ... 其他配置保持不变 ... ...
验证效果
修正后,你的示例代码会被格式化为期望的样子:
template<typename type> class Class{};
内容的提问来源于stack exchange,提问作者DavVader
相关产品推荐
相关产品推荐

