欢迎使用 Nox -- 轻量级 LSP 客户端

看到您的建议最后还是用回了lsp-java了,先干活要紧,谢谢了

我也是显示这个错误。

[jsonrpc] Server exited with status 101
[nox] (warning) Reconnecting after unexpected server exit.
[nox] Connected server with project: hello
[nox] Reconnected!
[nox] Server reports (type=1): rust-analyzer failed to discover workspace
[nox] (warning) Server tried to register unsupported capability `textDocument/didSave'
[yas] Prepared just-in-time loading of snippets successfully.
Company: An error occurred in auto-begin
Company: backend company-capf error "jsonrpc-error: "request id=2 failed:", (jsonrpc-error-code . -32801), (jsonrpc-error-message . "Rust Analyzer is still loading..."), (jsonrpc-error-data)" with args (candidates p)

用rls 是可以正常在nox 下工作的。

这个问题找到解决方案了,原来Nox自带一个功能,可以在kill buffer的时候请求断开lsp服务。

 (setq nox-autoshutdown t) ;; kill bufer 时自动关闭nox的服务。

最新版本的 rust-analyzer 配合 nox 可以正常工作了,不再会提示错误。 加入下面的配置即可:

                    (add-to-list 'nox-server-programs
                                 '(rust-mode . ("rust-analyzer")))
1 个赞

谢谢aqua0210!

请问win10下pyright是怎么安装的,是通过npm吗,我通过npm安装后,nox提示pyright-langserver不在Path

是npm装的,你试试在CMD窗口能找到pyright吗?如果没找到就要自己加一下Path。

能看看你的配置吗?重新装了还是不行。

将npm升级到最新,然后npm install -g pyright安装就可以了。
接着在终端试试 pyright --version 是否能识别到pyright。
Nox的配置中加入下面这条命令即可:

(setq nox-python-server "pyright")

给像我一样晕了的小伙伴:

今天突发奇想试了试nox,怎么也跑不起来(clangd for C++可以,python怎么都不行),查源码;发现是python的设置的问题:nox是直接写了python路径 /usr/bin/python(linux用户最爱 :rofl: ),而不是查找PATH下默认的python,所以mac用户(我相信你没在用/usr/bin/下的python2.7 :laughing: 也是神了,python2 住 osx 默认里不走了) 要改成你自己homebrew安装的python。

另外我发现,自从 2020年9、10月份 mspyls 更新后,基本处于不可用状态了 (针对科学计算和机器学习),譬如numpy、scipy、pandas等这些本来jedi有bug (2、3年前),mspyls之前解析的非常好,现在它统统出问题(各种各样的问题,这是jedi之前开发者跳槽到MS复现一下jedi的bug么),对象的member functions基本零补全信息。唉,看来MS是真的放弃mspyls了 (恶意的想,难道为了推 pylance,要逆优化 mspyls,mspyls本来那么好的啊)

注:我这里是有用vscode也测试过的。

想和你确认下,你的pyright在nox下跑的起来么? 我的pyright稳定报错 (pyls和mspyls跑的起来):

client-reply (id:0) ERROR Mon Mar  8 13:28:49 2021:
(:jsonrpc "2.0" :id 0 :result nil :error
          (:code -32603 :message "Internal error"))

我之前按上面的设置就可以正常使用了(Windows,Mac, Arch Linux)。现在我不用 Nox,用 eglot 了。Pyright 目前更新频烦。

1 个赞

哦,了解,谢谢!

请教一下eglot 如何正确设置pyright ?

可以参考我用的配置 https://github.com/Eason0210/emacs.d/blob/master/lisp/init-eglot.el

1 个赞

老哥你的 eglot+pyright 配置好像没有了。。

前段时间 eglot 老是连不上 pyright,我就删了。最近不怎么写 Python 就没弄这个。

打算直接用 eglot 默认支持的这个 GitHub - python-lsp/python-lsp-server: Fork of the python-language-server project, maintained by the Spyder IDE team and the community

这个后端是 Python 实现的,现在社区维护挺活跃的,你可以试试看。

对 eglot 和 nox 都用不了 pyright 了,好奇论坛里大家都没有提到hh。这个 python-lsp 今天下午试了下,好像是基于 jedi 的,我试了下不能补全 pytorch 这样的包,后端 jedi 会报错,也没看到要怎么解决。现在就 lsp-pyright 还可以用了。

安装 lsp-mode + pyright 试试看,这个组合用的人比较多。