新手求助:flycheck和lsp-mode啥关系啊

flycheck提供了语法检查功能,但是lsp-mode配合clangd或者gopls后端不也有类似功能吗

flycheck 有提供自定义后端的能力,而在使用 lsp-mode 的时候,lsp-mode 自己会注册相关的后端,近而使用 flycheck 的界面来呈现出来。

flycheck 自带的能力多是需要调用额外命令,例如 flycheck-cppcheck 是依赖外部的 cppcheck, flycheck-gcc 则是依赖 gcc.

那flycheck本身有检查能力吗,还是单纯的需要我们提供backend呢

严格意义上来说,flycheck 是拿来展示错误界面的。其自身的检查能力都是透过对应语言的后端而实现的,不过它默认就已经针对多数语言配置好了。

例如对于 c/c++ 它就有

  • flycheck-cppcheck
  • flycheck-gcc
  • flycheck-clang

这3个后端可以选择(也可以同时使用,搜一下 flycheck chained backends)。通常不需要用户再手工配置一遍,不过如果想结合 lsp-mode 与 flycheck 自身的后端的话需要用户介入,这个可以在 lsp-mode 的 issue 里找一下有对应解法

意思是安装flycheck的时候它会安装部分backend吗

这依赖当前所在机器,对于 c/c++ 的话需要安装 gcc, clang 或者 cppcheck。但是一般 gcc 都会自带,所以也可以将就用,但是 clang 的报错相比 gcc 会友好一点。如果你是 ccls/clangd 用户,由于后面都是 clang 报的错,那就不用关心这个了。

如果是 elisp 的话,那么默认就会有 byte-comp 和 checkdoc 的检测,这两者的启用不需要安装额外的包。

1 个赞

可以看看 flycheck 的官方文档,说明的挺详细的,可以只关注自己要用的语言。 https://www.flycheck.org/en/latest/

好的,可能实际上最快的反而是花一定时间去看这些文档,不然看啥都是很模糊

对的,其实上面的大佬已经说明的很清楚了。

你看看文档配置起来使用一下,执行 M-x, flycheck-verify-setup 就可以看到相应的后端安装的情况了。

1 个赞

看文档是基础了

为啥我看完觉得flycheck和lsp-mode在语法检查上功能是一样的啊,比如python,flycheck需要安装相应的pylint,lsp-mode也需要安装相应的pyright一类的。但是lsp-mode还提供了其他的一些功能?

lsp-mode 语法检查默认是依赖 flycheck 完成的,见 lsp-diagnostics-provider

1 个赞

原来如此,谢谢