Nox内建对微软Python Language Server的支持
Emacs
Nox
2020-03-30 948字

微软的VSCode之所以好用,除了LSP协议的标准化外,微软自家的语言服务器在质量和性能也比社区实现的语言服务器要好得多。

今天通过这个补丁实现了 intelephense 对PHP语法补全的支持,而intelephense正是VSCode内置的PHP语言服务器。

在Python领域,开源社区的Python Language Server主要是基于jedi这个库来实现的,对于大型的Python计算库,比如补全numpy的时候就会卡一下。

微软自己的Python Language Server – mspyls主要是用C#实现的,性能上要比pyls好很多。

今天晚上给Nox写了一个补丁Use mspyls as default Python Language Server,实现内建对mspyls的支持。

体验mspyls

  1. 下载和安装Nox
  2. 执行 nox-print-mspyls-download-url 命令,打印当前操作系统安装包的下载地址
  3. 下载并解压文件到 ~/.emacs.d/nox/mspyls 目录下,保证目录的根位置有 Microsoft.Python.LanguageServer 这个文件
  4. 给mspyls索引权限: sudo chmod +x -R ~/.emacs.d/nox/mspyls
  5. 直接打开 python 文件,即可快速进行语法补全

注意

mspyls 和 pyls 的优缺点

Nox默认使用mspyls作为Python的默认语言服务器,如果要切换回开源社区的 pyls ,直接修改默认服务器的设置即可:

(setq nox-python-server pyls)

感谢

感谢Emacs-China和Github社区朋友的帮助,让我这个老年人可以早点睡觉, 特别是 theFool32seagle0128的支持,在我解题解到山穷水尽时,给我柳暗花明的灵感和帮助。;)