mypyls 补全性能好很多

Win10-x64平台,原生Emacs,试过26/27/28,效果都一样。Spacemacs为develop分支,已pull到最新。

首先,我根据python layer README.org的指导,用pip的方式安装了pyls。使用一段时间,发现补全中很卡,因此想尝试用mypyls版本。

根据这个帖子里面的说法,我

  1. 在anaconda中用pip方式删除了之前安装的python-language-server,然后下载了dotnet-sdk-3.1.201-win-x64
  2. 按照python layer README.org中的方法成功生成了微软python-language-server的目录。其中dll全路径为D:\Program Files\python-language-server\output\bin\Release\Microsoft.Python.LanguageServer.dll
  3. 最后,我在.spacemacs配置文件中加入以下配置
     (python :variables
             python-backend 'lsp
             python-formatter 'black
             python-lsp-server 'mspyls
             python-lsp-git-root "d:\\Program Files\\python-language-server"
             )

其中python-lsp-git-root我设置成以上形式以及"d:/Program Files/python-language-server"的结果一样。 之后,我打开.py文件时,提示

lsp-python-ms: Using version at ‘d:/Program Files/python-language-server/output/bin/Release/’

随后,提示

Unable to find installed server supporting this file. The following servers could be installed automatically: mspyls.

回车之后提示

LSP:: Server mspyls install process failed with the following error message: Search failed "

".

请教大家这个问题怎么解决?

自己解决了,按照这个帖子的说法,加入以下设置

(lsp :variable lsp-python-ms-executable "d:/Program Files/python-language-server/output/bin/Release/Microsoft.Python.LanguageServer.exe")

并把以下设置删掉

(python :variable python-lsp-git-root "d:/Program Files/python-language-server")

再重启emacs就可以使用mspyls了。

使用mspyls之后,初次启动emacs,会花几分钟analyzing,过了这个时间之后,就可以非常流畅地补全了,之前的各种卡顿甚至卡死现象也不见了。补全比anaconda+jedi还快

之前为了不卡而禁用了helm、lsp-ui等等,现在全启动了也不卡。

有一个缺点是,后台有个Microsoft.Python.LanguageServer的常驻进程,内存一直占1.2G左右,不过我内存够用,只要使用流畅,这点占用没关系。