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 的检测,这两者的启用不需要安装额外的包。
好的,可能实际上最快的反而是花一定时间去看这些文档,不然看啥都是很模糊
对的,其实上面的大佬已经说明的很清楚了。
你看看文档配置起来使用一下,执行 M-x, flycheck-verify-setup
就可以看到相应的后端安装的情况了。
看文档是基础了
为啥我看完觉得flycheck和lsp-mode在语法检查上功能是一样的啊,比如python,flycheck需要安装相应的pylint,lsp-mode也需要安装相应的pyright一类的。但是lsp-mode还提供了其他的一些功能?
lsp-mode 语法检查默认是依赖 flycheck 完成的,见 lsp-diagnostics-provider
原来如此,谢谢