VSCode 无法识别所有 .clang 格式选项

VSCode not recognizing all .clang-format options

我是那种会系统地检查每一个可用选项的人,这次是 VSCode 中的 clang-format。我找到了 this,我假设它列出了所有可以塞进 .clang-format 文件供 VSCode 使用的东西。不幸的是,VSCode 似乎不认识其中的一小部分:

  1. BitFieldColonSpacing
  2. BreakBeforeConceptDeclarations
  3. EmptyLineBeforeAccessModifier
  4. IndentAccessModifier
  5. IndentRequires
  6. SortIncludes
  7. SpaceAroundPointerQualifiers
  8. SpaceBeforeCaseColon

在 VSCode 加载失败的少数几个选项中,只有 SortIncludes 被识别,但它只接受布尔值,而不是参考文献所说的可用选项。其余选项完全无法识别:

YAML:xxx:xxx: error: unknown key 'xxx'
Error reading /path/to/.clang-format: Invalid argument

我可能遗漏了什么,还是 VSCode 不支持这些选项?我正在使用 Microsoft 的 C/C++ 扩展,在 Linux.

上使用 VSCode

感谢您的宝贵时间。

快速回答:这不是错误。至少其中一些选项 (IndentAccessModifiers) 仍在“正在进行的工作”clang 13 中。您需要(下载并)替换底层的 clang-format 二进制文件才能使用这些新功能。

无论出于何种原因,描述各种选项的 clang-format 页面默认向您显示版本 13 中的所有内容,但实际上并没有警告您这些不是正式发布版本。它也至少不会告诉您引入了哪个版本的功能。直到你做了一点挖掘,你才发现主文档页面不是你想要的。最近的VSCode使用的是11.1.0版本,可以在这里找到匹配的选项:ClangFormatStyleOptions version 11.1.0

未来注意事项:这个答案大多只适用于 2021 年 5 月 27 日的今天。这可能不会在 6 年后适用,VS Code 现在是 clang 的第 22 版。也就是说,如果您在版本差异方面遇到此类相同类型的问题,您可能会发现这很有用。