我可以为同一项目中的某些文件使用不同的.clang_format吗?

时间:2013-12-12 09:49:37

标签: c++ visual-studio vim clang clang-format

我想向我们的公司介绍 clang-formatter ,但有一些限制,例如:

我们公司的一些文件使用tab-width = 2可以更好地阅读,而其他文件使用tab-width = 4可以更好地阅读。

这意味着某些文件(由于其内容的性质)应该具有不同的.clang格式配置文件。所以,假设我们最终得到2或3个配置,适合每个内容,  有没有办法可以强制某些文件格式化特定的.clang_format

例如,

  • 可以通过在每个文件夹中放置一个不同的.clang_format来完成吗?

  • 在每个文件的开头输入YAML行作为注释(如doxygen)?

我们使用C,C ++,visual studio和vim

2 个答案:

答案 0 :(得分:3)

您对使用.clang_format文件的控制有限,因为格式化程序将开始在源文件目录中搜索文件,然后连续搜索父目录。但是,以这种方式组织目录结构可能非常不方便。

但是,您可以通过每次调用覆盖样式中的特定选项。来自clang-format docs

  

使用-style="{key: value, ...}"设置特定参数,例如:   -style="{BasedOnStyle: llvm, IndentWidth: 8}"

不幸的是Visual Studio plugin目前不允许在每个文件的基础上更改传递给clang-format的选项,因此后一种方法在这里不起作用。

据我所知,不支持允许在源文件中设置样式选项的'modeline' comments,尽管我希望在将来的版本中添加这些选项。

答案 1 :(得分:1)

您可以将不同的.clang格式(_clang格式)文件放入每个目录中。 clang-format将开始在文件目录中查找它,然后搜索其所有父项,直到找到一个(假设您正在设置-style = file)。

这听起来像是可以解决您的用例。如果没有,我想了解如何。您是否在同一目录中有需要不同缩进的文件?