同一个项目pandadoodle-rust-wasm ,同一个 rust-analyzer
服务(用的 vscode rust-analyzer 插件自动安装的服务),vscode 里面是可以识别变量类型:
但是 emacs 里面识别不了,所以也补全不出来:
测试了一下 LSP 的交互,同样的参数,返回结果不一样:
上面两张图,第一张是 emacs 的,第二张是 vscode 的,是在同一个位置执行
lsp-rust-analyzer-open-external-docs
和
Rust 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 个赞