<div dir="ltr">Hi All,<div><br></div><div>I'm curious if anybody tried to implement an option for clang-format to prevent bin packing conditions inside if statements (or maybe it already exists and I missed it).</div><div><br></div><div>Here is an example,</div><div><br></div><div><div><font face="monospace, monospace">% cat test.cpp</font></div><div><font face="monospace, monospace">void func(int a,</font></div><div><font face="monospace, monospace">          double b,</font></div><div><font face="monospace, monospace">          bool c);</font></div><div><font face="monospace, monospace">int main() {</font></div><div><font face="monospace, monospace">  func(123456,</font></div><div><font face="monospace, monospace">       1.23456,</font></div><div><font face="monospace, monospace">       false);</font></div><div><font face="monospace, monospace">  if(false ||</font></div><div><font face="monospace, monospace">     true ||</font></div><div><font face="monospace, monospace">     false) {</font></div><div><font face="monospace, monospace">     // stuff</font></div><div><font face="monospace, monospace">  }</font></div><div><font face="monospace, monospace">  return 0;</font></div><div><font face="monospace, monospace">}</font></div></div><div><br></div><div>Formatting with default settings (except a column limit) produces the following:</div><div><br></div><div><div><font face="monospace, monospace">% ./clang-format -style="{BasedOnStyle: LLVM, ColumnLimit: 27}" test.cpp</font></div><div><font face="monospace, monospace">void func(int a, double b,</font></div><div><font face="monospace, monospace">          bool c);</font></div><div><font face="monospace, monospace">int main() {</font></div><div><font face="monospace, monospace">  func(123456, 1.23456,</font></div><div><font face="monospace, monospace">       false);</font></div><div><font face="monospace, monospace">  if (false || true ||</font></div><div><font face="monospace, monospace">      false) {</font></div><div><font face="monospace, monospace">    // stuff</font></div><div><font face="monospace, monospace">  }</font></div><div><font face="monospace, monospace">  return 0;</font></div><div><font face="monospace, monospace">}</font></div></div><div><br></div><div>It's possible to prevent bin packing of function parameters and arguments:</div><div><br></div><div><div><font face="monospace, monospace">% ./clang-format -style="{BasedOnStyle: LLVM, ColumnLimit: 27, BinPackParameters: false, BinPackArguments: false}" test.cpp</font></div><div><font face="monospace, monospace">void func(int a,</font></div><div><font face="monospace, monospace">          double b,</font></div><div><font face="monospace, monospace">          bool c);</font></div><div><font face="monospace, monospace">int main() {</font></div><div><font face="monospace, monospace">  func(123456,</font></div><div><font face="monospace, monospace">       1.23456,</font></div><div><font face="monospace, monospace">       false);</font></div><div><font face="monospace, monospace">  if (false || true ||</font></div><div><font face="monospace, monospace">      false) {</font></div><div><font face="monospace, monospace">    // stuff</font></div><div><font face="monospace, monospace">  }</font></div><div><font face="monospace, monospace">  return 0;</font></div><div><font face="monospace, monospace">}</font></div></div><div><br></div><div>But nothing I can do about conditions inside the if statement. And I believe such an option would be quite useful as it provides the same readability benefits as BinPackParameters and BinPackArguments.</div><div><br></div><div>Thanks,</div><div>Mikhail</div><div><br></div></div>