如何为 clang-format 添加功能?

How to add capabilities to clang-format?

Clang 有助于让每个人都对公司的编码标准保持诚实,但它并没有提供所有情况的完整覆盖并且做出(IMO)错误的选择而不是忽略某些情况。例如(来自另一个有类似问题的post):

z1 = sqrt(x*x + y*y);

被 clang 格式“破坏”成

z2 = sqrt(x * x + y * y);

确实符合公司标准,但z1表达式更容易一目了然。我希望 clang-format ignore(不添加也不删除)二元运算符周围的空格。我没有看到 any 设置二元运算符周围的空格。不管我要不要,它都能做到。

那么,我可以添加处理新参数的功能吗? SpaceAroundBinaryOperator: true|false|ignore? 即,经验丰富的 C++ 程序员是否可以访问 clang 格式的代码,而无需花费一周或更长时间来弄清楚代码?有什么建议吗?

So, can I add the capability to handle a new parameter...

is the clang-format code accessible to an experienced C++ programmer without having to spend a week or more just figuring out the code?

有这个:https://clang.llvm.org/docs/ClangFormatStyleOptions.html#adding-additional-style-options,但是那里的信息不多。

还有这个:https://clang.llvm.org/docs/LibFormat.html

也许这样:https://clang.llvm.org/docs/#design-documents

但我认为您真的必须深入研究 source code。有很多代码(因为 clang-format 代码是整个 clang C++ 编译器和相关工具 LLVM 项目的一部分),所以我认为您需要一周或更长时间来解决问题。不过只是我的猜测...