VSCode 无法识别所有 .clang-format 选项

404*_*und 2 clang-format visual-studio-code

我是那种会系统地检查每个可切换选项的人,这次是clang-format在 VSCode 中。我发现了这个,我假设它列出了所有可以塞进.clang-format文件供 VSCode 使用的东西。不幸的是,VSCode 似乎无法识别其中的一些:

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

在 VSCode 无法加载的少数选项中,仅能SortIncludes完全识别,但它只接受 bool,而不接受参考文献所说的可用选项。其余选项完全无法识别:

YAML:xxx:xxx: error: unknown key 'xxx'
Error reading /path/to/.clang-format: Invalid argument
Run Code Online (Sandbox Code Playgroud)

我是否遗漏了某些内容,或者 VSCode 不支持这些选项?我正在使用 Microsoft 的 C/C++ 扩展,在 Linux 上使用 VSCode。

感谢您的时间。

wre*_*ang 5

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

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

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