VSCode - clangd扩展在保存时不格式化/lint



我使用VSCode与clangd扩展进行c++开发(通过远程SSH扩展)。我有我的.clang-format和.clang-tidy文件,其中包含我想要执行的规则。如果我手动格式化代码(Ctrl-Alt-F或右键单击->格式文档)的代码被格式化没有任何问题。如果我手动执行clang-tidy建议的修复(Ctrl-.),情况也一样。相反,如果我保存,什么也不会发生。

这些是我对c++的设置覆盖。我试着将它们移动到不同的级别(用户,远程,工作区),但没有区别。

"[cpp]": {
"editor.codeActionsOnSave": {
"source.fixAll": true,
},
"editor.formatOnSave": true,
"editor.defaultFormatter": "llvm-vs-code-extensions.vscode-clangd"
}

ESLint或rustfmt的相同规则没有问题。

我调查了一下这个快速修复问题,发现"editor.codeActionsOnSave": { "source.fixAll": true }依赖于LSP 3.17中添加的新的语言服务器协议(LSP)增强(source.fixAll类型的代码操作)。

Clangd目前不支持此功能,但在我看来,添加此功能应该不会太难,因为Clangd已经根据是否适合自动应用对快速修复进行了分类(例如Select All --> "Auto Fix..."就使用了此功能)。

我填了一些更详细的https://github.com/clangd/clangd/issues/1446。

最新更新