我是那种会系统地检查每个可用选项的人,这次是在VSCode中使用clang-format
。我发现了这个,我假设它列出了所有可以塞进.clang-format
文件供VSCode使用的东西。不幸的是,VSCode似乎不能识别其中的一部分:
BitFieldColonSpacing
BreakBeforeConceptDeclarations
EmptyLineBeforeAccessModifier
IndentAccessModifier
IndentRequires
SortIncludes
SpaceAroundPointerQualifiers
SpaceBeforeCaseColon
在VSCode加载失败的少数选项中,只有SortIncludes
是被识别的,但它只接受bool类型,而不是引用中说可用的选项。其余的选项完全无法识别:
YAML:xxx:xxx: error: unknown key 'xxx'
Error reading /path/to/.clang-format: Invalid argument
我可能会错过一些东西,或者VSCode不支持这些选项?我正在使用微软的C/c++扩展,在Linux上使用VSCode。
感谢您的宝贵时间。
快速回答:这不是一个bug。至少其中一些选项(IndentAccessModifiers)仍在"进行中工作"中。铿锵声13。为了使用这些新特性,您需要(下载并)替换底层的clang-format二进制文件。
无论出于何种原因,clang-format页面描述了各种选项,默认情况下会显示版本13中的所有内容,但实际上并没有警告您这些不是正式发布版本。它至少也不会告诉你某个功能引入了哪个版本。直到您做了一些深入的研究,您才发现主文档页不是您想要的。最新的VSCode使用11.1.0版本,你可以在这里找到匹配的选项:ClangFormatStyleOptions version 11.1.0
未来注意这个答案只适用于今天,2021年5月27日。这可能不会在6年后生效,VS Code现在是clang的第22版。也就是说,如果您遇到类似的版本差异问题,您可能会发现这很有用。