【问题标题】:Can I use a different .clang_format for some files in the same project?我可以为同一个项目中的某些文件使用不同的 .clang_format 吗?
【发布时间】:2013-12-30 15:48:15
【问题描述】:

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

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

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

例如,

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

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

我们使用 C、C++、Visual Studio 和 vim

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    据我所知,目前尚不支持 'modeline' comments 允许从源文件中设置样式选项,但我希望在未来的版本中添加该选项。

    【讨论】:

    • 在 Visual Studio 中,Tools->Options 窗口,在 LLVM/Clang->ClangFormat 下,我可以设置 Style 作为 YAML sn-p,例如 {BasedOnStyle: "LLVM"}。或者,如果我将 Style 设置为 File,它将搜索 .clang-format_clang-format 以获取配置。我可以将其设置为读取 特定 文件,例如 File my_clang-format 吗?
    • @GrimFandango 不幸的是,没有。目前文件名是硬编码的,不能更改。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2011-01-17
      • 1970-01-01
      • 1970-01-01
      • 2021-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多