求助:lsp-bridge pyright配置问题

本人Emacs新人,debug功底薄弱,最近配置lsp-bridge(目前主要是用pyright)遇到了一些问题无法解决,来社区请教各位大佬。

目前已经基本排除跟别的package冲突的可能(只保留straight、pyvenv和yasnippet、markdown-mode和lsp-bridge依然存在问题)。lsp-bridge配置如下(pyvenv直接copy的wiki里的):

(use-package lsp-bridge
  :straight '(lsp-bridge :type git :host github :repo "manateelazycat/lsp-bridge"
            :files (:defaults "*.el" "*.py" "acm" "core" "langserver" "multiserver" "resources")
            :build (:not compile))
  :ensure t
  :init
  (global-lsp-bridge-mode)
  :config
  ;; (setq lsp-bridge-python-lsp-server 'pyright)
  (setq lsp-bridge-enable-log t)
  (setq lsp-bridge-python-command (expand-file-name "~/Documents/venv/lsp-bridge/bin/python3"))
  (setq acm-enable-copilot t))

目前的问题是(我按照操作顺序及相应的lsp-bridge message描述): 0. ~/Documents/venv/lsp-bridge/bin/python3已经装了README中的要求的依赖,工作目录下的虚拟环境仅装了pyright

  1. 打开一个py文件:Eval in Emacs: (message '"[LSP-Bridge] Error: can't find command 'pyright-langserver' to start LSP server pyright (/path/to/myfile.py), disable LSP feature.")(minibuffer也会回显)ps ux | rg pyright发现没有pyright-langserver启动
  2. M-x pyvenv-activate选择工作目录下的虚拟环境(配置了pyvenv-post-activate-hooks会执行lsp-bridge-restart-process):没有报错(当然这是因为LSP feature已经被关闭了)
  3. 打开一个新的py文件(因为我不知道怎么手动打开LSP feature所以选择另打开一个文件来测试):没有报错(Message为Eval in Emacs: (message '"[LSP-Bridge] Active file 'listcomp_speed.py', enjoy hacking!")),ps ux | rg pyright发现有工作目录虚拟环境下的pyright-langserver(和node相应组件)运行。

自己翻资料配两天了,从刚开始各种报错mode line都是红色到现在copilot可以用,pyright这个实在搞不懂了,麻烦各位大佬帮帮忙,有什么需要的信息我一定及时补充。

感谢作者的回复!

不好意思,可能我的描述不太清楚,目前的情况是在virtual venv中是可以正常使用pyright的,但是在activate venv之前是不能正常启动pyright。

我的venv的配置就是参考(复制)您发的wiki里的代码修改了pyright.json路径。

虚拟环境一般都是找不到python或者找不到lsp server引起的,请看中文readme底部调试方法,知道报错内容就知道怎么折腾环境了。

1 个赞

感谢回复! 确实是我没仔细阅读,误用了lsp-bridge-enable-log进行调试。

简单查看似乎确实是找不到python,不知道是不是跟虚拟环境使用symbolic link有关。我去折腾一下。

谢谢作者的指点! 顺带一提,虽然emacs新人,但也用过一些别的lsp client了,当时发现lsp-bridge就是为了找一个更快不卡手的,lsp-bridge也确实做到了,十分感谢!也希望之后自己有能力为社区做贡献吧。

提前祝作者和各位emacser新年快乐!:slight_smile:

1 个赞

lsp-bridge的目标就是代码补全完全不卡手,很高兴你喜欢,新年快乐。

3 个赞

新年快乐各位emacser!

在补充一点吧。我之前对lsp-bridge的配置认知应该是一点偏差,误认为pyright和lsp-bridge的python环境是一致的,昨晚突然想到两个环境是(可以)不同的(不然也不会出现我之前换到虚拟环境之后可以正常运行的情况),所以我在我的相关init文件中配置了一个基础虚拟环境(类似于conda中的base?对conda也不是很熟),这样就可以流畅的使用lsp-bridge和pyright了。