<div dir="ltr">Could no-operator-names be on by default?</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Sun, May 4, 2014 at 7:52 AM, Bobby Moretti <span dir="ltr"><<a href="mailto:bobmoretti@gmail.com" target="_blank">bobmoretti@gmail.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello,<br>
<br>
clang-format does a really nice job breaking lines with boolean binary<br>
operators, e.g., && and ||.<br>
<br>
The C++ standard provides alternative keywords for these operators<br>
(and, or). I think clang-format should be able to treat these<br>
alternative keywords the same as the corresponding binary operators.<br>
However, with these alternative keywords, clang-format makes<br>
completely different whitespace choices. For example, using<br>
clang-format 3.5 from svn r207601, with the default LLVM style options<br>
<br>
void foo(void) {<br>
  if (call_some_function() ><br>
      0 and(some_other_function_result() ==<br>
            0 or yet_another_result or(something_else == 1))) {<br>
  }<br>
<br>
  if (call_some_function() > 0 &&<br>
      (some_other_function_result() == 0 || yet_another_result ||<br>
       (something_else == 1))) {<br>
  }<br>
}<br>
<br>
I did some investigation to see what might be causing this behavior.<br>
It boils down to the LangOptions returned by getFormattingOptions() in<br>
Format.cpp line 1848. If I add<br>
<br>
LangOpts.CXXOperatorNames = 1;<br>
<br>
to that function, then clang-format outputs the much more pleasing<br>
<br>
void foo(void) {<br>
  if (call_some_function() > 0 and<br>
      (some_other_function_result() == 0 or yet_another_result or<br>
       (something_else == 1))) {<br>
  }<br>
<br>
  if (call_some_function() > 0 &&<br>
      (some_other_function_result() == 0 || yet_another_result ||<br>
       (something_else == 1))) {<br>
  }<br>
}<br>
<br>
Of course, this should probably not always be enabled.<br>
<br>
One option would be to only enable this option if LS_Cpp03 or LS_Cpp11<br>
were chosen. But C users #including <iso646.h> might want this option,<br>
and not all C++ users would want it (since for example, MSVC++ does<br>
not recognize these unless using standards compliant mode).<br>
<br>
So another option would be to add a format style option to selectively<br>
enable this behavior.<br>
<br>
Would such a change to clang-format be welcome? If so, what would be<br>
the preferred implementation?<br>
<br>
Thanks,<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
Bobby Moretti<br>
<a href="mailto:bobmoretti@gmail.com">bobmoretti@gmail.com</a><br>
_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@cs.uiuc.edu">cfe-dev@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev</a><br>
</font></span></blockquote></div><br></div>