I've been using clang-format for quite some time and it's a great tool. However, it has undesirable behavior in the situations listed below (or maybe I couldn't find a way to configure it properly):
1. AlwaysBreakTemplateDeclarations documentation states "If true, always break after the template<...> of a template declaration." So, I expect to see, for example, the following result: template <class T> inline constexpr T sqr(const T& x) { return x * x; } However, clang-format produces this even with AllowShortFunctionsOnASingleLine and AllowShortBlocksOnASingleLine set to true: template <class T> inline constexpr T sqr(const T& x) { return x * x; } 2. All spaces are removed in operator declarations, so instead of point operator + (point lhs, point rhs); I get point operator+(point lhs, point rhs); 3. AllowAllParametersOfDeclarationOnNextLine is great, but it doesn't work with template parameters, so I can't write, for example template < class Derived, class Iterator, class Category = use_default, class Value = use_default, class Reference = use_default, class Pointer = use_default, class Distance = use_default> class iterator_adaptor; 4. There's no support for initialization list syntax with a comma on the left: point::point(int x, int y) : x(x) , y(y) {} 5. There's no support for the following (more readable to me) lambda formatting: std::transform(s.begin(), s.end(), s.begin(), [](unsigned char c) { return std::toupper(c); }); 6. Semicolon from the empty statement is carried to the next line: for (int i = 0; i < n; ++i) ; 7. When FixNamespaceComments is set to false, the empty line before the namespace closing bracket is removed. 8. +1 to the issue with breaking before the operator -> raised before. Best regards, Oleksandr
_______________________________________________ cfe-users mailing list cfe-users@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-users