问这个问题主要是发现 lsp-mspyls 对一个项目总是出现 stack overflow,但其它项目运行起来都没问题。所以有没有办法对这个出现问题的项目指定用lsp-pyright,但是对其它项目仍然使用lsp-mspyls?
试试 .dir-locals.el
2 个赞
- 使用
.dir-locals.el
- 由于 mspyls 即将废弃,lsp-mspyls 不再维护。
2 个赞
这个理解,但是目前使用体验上来看,大多数时候 mspyls > pyright 。所以想混用两种,当不能使用 mspyls 的时候再使用 pyright。
使用 dir-locals 的话能提示一下应该设置哪个变量吗?@enchanter, @seagle0128
(setf (lsp--client-priority (gethash 'mspyls lsp-clients)) 100)
1 个赞
好像不太对,基于你的代码,这是我的 dir-locals:
;;; Directory Local Variables
;;; For more information see (info "(emacs) Directory Variables")
((python-mode . ((eval . (progn
(require 'lsp-mode)
(setf
(lsp--client-priority
(gethash 'pyright lsp-clients))
100))))))
但是会报错:
File local-variables error: (wrong-type-argument lsp--client nil)
可以的。
除了设置优先级让 lsp 自主决定,还可以在检查可用的 client 的时候强行指派。
没有 require pyright?
何以见得?是pyright对conda的支持不好吗?
各种小细节吧,比如文档格式显示有问题,函数文档显示不全等等。之前用过一段时间后来又退回到mspyls了。