clang-format总是将控制块合并到单行的问题求助
解决clang-format将短代码块合并到一行的问题
问题出在你的BraceWrapping配置未生效——clang-format仅在BreakBeforeBraces设为Custom时,才会应用BraceWrapping中的自定义规则。当前你缺少这个关键设置,导致AfterControlStatement: Always的规则不起作用,结合默认格式化行为,才会把大括号和语句合并到同一行。
修复步骤
在你的.clang-format配置中添加BreakBeforeBraces: Custom,并保留已有的相关设置,完整的核心配置如下:
AllowShortBlocksOnASingleLine: Never AllowShortCaseLabelsOnASingleLine: false AllowShortFunctionsOnASingleLine: Inline AllowShortIfStatementsOnASingleLine: Never AllowShortLambdasOnASingleLine: None AllowShortLoopsOnASingleLine: false BreakBeforeBraces: Custom BraceWrapping: AfterCaseLabel: false AfterClass: false AfterControlStatement: Always AfterEnum: false AfterExternBlock: false AfterFunction: false AfterNamespace: false AfterObjCDeclaration: false AfterStruct: false AfterUnion: false BeforeCatch: false BeforeElse: true IndentBraces: false SplitEmptyFunction: true SplitEmptyNamespace: true SplitEmptyRecord: true
验证
修改配置后,你的示例代码:
if (x >= y) { return 0; }
会保持原有格式,不会被修改为合并后的形式。
如果问题仍存在,可运行clang-format --dump-config > .clang-format导出当前生效的配置,检查是否正确包含上述设置,确保clang-format读取的是你修改后的配置文件。
内容的提问来源于stack exchange,提问作者Jason
相关产品推荐
相关产品推荐

