如何通过clang-format配置对齐同一行三元运算符的?和:符号
实现方案
目前原生clang-format没有内置配置项支持保留三元运算符在同一行的前提下,跨多行垂直对齐?和:符号的需求,你找到的BreakBeforeTernaryOperators仅负责控制三元运算符是否拆分为多行,无法满足该对齐要求。
有两种可行的落地方式:
- 少量代码场景直接锁定格式化
如果只有零散的代码段需要该对齐效果,手动调整好对齐后,用注释临时关闭这段代码的clang-format格式化即可,不会影响其他代码的格式化规则:// clang-format off double flagx_ul = wx * 2 > wy *3 ? -wy * 3 / 2 / wx : -1.0; double flagy_ul = wx * 2 > wy *3 ? 1.0 : wx * 2 / 3 / wy; double flagx_lr = wx * 2 > wy *3 ? wy * 3 / 2 / wx : 1.0; double flagy_lr = wx * 2 > wy *3 ? -1.0 : -wx * 2 / 3 / wy; // clang-format on - 通用场景用配置近似实现
如果你所有待对齐的三元表达式的条件部分长度完全一致,可以开启以下两个配置项实现对齐效果:
注意该方案仅适用于所有三元表达式条件部分长度相同的场景,条件长度不一致时无法对齐# 对齐连续行的赋值等号 AlignConsecutiveAssignments: true # 对齐同一行内的运算符操作数 AlignOperands: Align?和:符号。
内容的提问来源于stack exchange,提问作者isudfv
相关产品推荐
相关产品推荐

