rust web-sys 的补全,lsp-mode 和 vscode 的同一个请求的返回结果不一样,是为啥?【已解决】

同一个项目pandadoodle-rust-wasm ,同一个 rust-analyzer 服务(用的 vscode rust-analyzer 插件自动安装的服务),vscode 里面是可以识别变量类型:

但是 emacs 里面识别不了,所以也补全不出来:

测试了一下 LSP 的交互,同样的参数,返回结果不一样:

上面两张图,第一张是 emacs 的,第二张是 vscode 的,是在同一个位置执行lsp-rust-analyzer-open-external-docsRust Analyzer: open doc under cursor 命令的结果。

配置用的是 doom-emacs + rust-analyzer

这个是一个 WASM 项目,只是对 web-sys 这个库的补全有这个问题, Cargo.toml 里面的依赖是需要这么配置的:

也就是 lsp-mode 是可以直接识别这里罗列的这些 feature 的,但是它们下面的方法就识别不出来了。

LSP的服务 Debug 太TM难了,完全不知道该咋排查问题

什么东西会对这个有影响呢?我能想到的只有【启动服务的初始化选项】两个编辑器存在不一样。。。

我还试了下,neovim 的 nvim-lspconfig 的 rust-analyzer 补全就没问题,看了下它插件实现极其简单的样子

https://github.com/hlissner/doom-emacs/issues/1686

之前看到这个 issure,看着没解决,而vscode又可以就没有仔细找下面的评论,确实是配置的问题,至少看起来是 extern C 里面的没有支持导致的。

哪里的配置问题?没看懂为什么 VSCode 可以工作。

上面的链接没贴好,更新了下,就是配置的问题:

 lsp-rust-analyzer-cargo-load-out-dirs-from-check t
 lsp-rust-analyzer-proc-macro-enable t
1 个赞