关于用 language server protocol 来对 Python 进行补全的体验。

我只在初次加载的时候才有这个问题,你怎么每次打开都有

用了一段时间, 感觉卡顿明显, 补全过程中, 补全列表要等500毫秒到2秒左右才出现, 体验不佳

同样卡顿明显。每次打开新的.py文件都需要很长时间的加载时间(并不知道它在干嘛),并且完全不能流畅地编写代码。代码量<100行时性能勉强可以接受,但如果要打开一个工程的话,反应就会十分缓慢,输入两个字母后需要等两秒左右才会弹出补全(或者高亮)的框。手动关闭lsp-ui之后性能会有所提高,然而依然满足不了日常编写代码的需求。目前不知道效率的瓶颈是在python的Language Server本身还是在lsp-python上。希望过段时间能够解决性能问题吧。

以及,真心希望lsp-mode能添加TRAMP支持。目前做科研,写的.py脚本都放在服务器上,因此经常用TRAMP远程编辑代码。用anaconda-mode基本可以完美支持TRAMP,但是不太稳定。lsp-mode虽然现在不支持TRAMP,但是有一个临时解决办法:用sshfs把远程目录挂载在本地。然而这样做在网络不稳定或者网速慢的时候不太适合。

总之,能work的方案是有很多的,但是都有妥协、并不完美。希望人类能不断进步,让coding更加美好^_^

除了importmagic,isort,还有其他好用的插件么?

请问下,这个Company 参考主题,我放在 post-init-company ()里,怎么没有效果呢

这个问题你解决了么?

没有, 已经很久不用python了. 现在用golang, 其lsp也是有点卡, 比python好点, 但也能明显感觉到.

anaconda-mode支持TRAMP吗? 我为什么没有试出来, 需要额外的配置吗?

想问一下,难道大家用lanuage server protocol没出现过"unsolved import"这个错误吗?

默认支持TRAMP,开箱即用。 如果你没有出现补全结果,可能是你的远程机器封了端口。anaconda-mode需要开启一系列的端口来让远程机器和你本地机器通信。如果这些端口被封禁了的话它肯定就不能work。

这个是 Python language server 的问题:https://github.com/Microsoft/python-language-server/issues/918

结果呢?any solution?

参考我在另外一个帖子的回复。

能参考一下配置吗?

可以在lsp启动后修改checker,python-pylint和python-flake8是flycheck自带的两个checker

(add-hook 'lsp-ui-mode-hook #'(lambda() (setq-local flycheck-checker 'python-pylint)))

把这行配置加进去了还是会有unresolved import 直接导致import sys 之后,使用sys根本就不会补全.并且在lsp-log 里面不断重复找地址

并且我发现一个奇怪的现象,就是在emacs第一次打开py文件时是正常的,如果你编辑一下,他就会重复出现reloading modules就会出现各种问题

是哪一个port?需要在服务器端做什么配置?

python 的 lsp 用的哪个? 这个问题我在 lsp-python-ms 这个包里面已经解决了。

主要是 lsp 的 searchPaths 参数问题。已经合并了,直接使用就行。

1 个赞

lsp用的是Microsoft python language server