亲测:lsp-python-ms vs pyls 性能

已经添加到Nox对mspyls的支持,方便大文件的时候看一下进度,要不还以为mspyls挂了。

1 个赞

测试结果是目录和文件太多,索引很慢很慢………

是这个 spinner 进度条吗?好像不是太明确,只能大概表示还在活动。

是 spinner,在索引时会显示。*lsp-log* 里会打印详细信息。

你是mac吗?

mscOS Catalina

感觉好看,能介绍一下用了什么ui方面的包么?

目前在Mac catalina 下使用nox+lsp-python-ms体验很好,很流畅。
今天在Win10 上用,nox 好像还得其他针对windows的配置、不然会造成emacs冻结。

欢迎发送补丁

我在 windows 10 上用过一段事件,暂时没发现问题。

以我目前的水平也只能是进行一些简单配置,发补丁还得仰望各位大佬 :grin:
@smallzhan 能参考下你的配置吗?

就老王的官方配置,只是设置了下 nox-python-path 和 nox-python-server-dir 不过我发现win10 下面 mspyls 容易占用比较高的内存。你看是不是这个问题。 话说我看到你写的使用 nox + lsp-python-ms? 是写错了吧,应该是 nox + mspyls 吧。

多谢指正。是mspyls,我还以為lsp-python-ms 就是全称。原来这个是配合lsp-mode用的,很容易搞混。

有没有win10 下 emacs 27 的配置?我的设置后完全没有反映: 但lsp-log显示已经加载了呀:

(use-package lsp-python-ms
  :init
  (setq python-shell-interpreter "e:/anaconda3/Scripts/ipython.exe")
  (setq python-shell-exec-path "e:/anaconda3/python.exe")
  :defer t
  :demand
  ; :ensure nil
  :hook (python-mode . lsp)
  :config
  (setq lsp-python-ms-dir
        (expand-file-name "E:/gitrep/python-language-server/output/bin/Debug"))
  (setq lsp-python-ms-executable
        "E:/gitrep/python-language-server/output/bin/Debug/Microsoft.Python.LanguageServer.exe"))

加载显示:

Command "pyls" is present on the path.
Command "pyls" is present on the path.
Found the following clients for e:/gitrep/xxx/xxx.py: (server-id pyls, priority -1), (server-id mspyls, priority 1)
The following clients were selected based on priority: (server-id mspyls, priority 1)

此后蹦出一个莫名的json错误:

File mode specification error: (json-readtable-error 80)

是不是编译成debug的不行啊?

用python, ipython不确定。

是要把这行改成 python.exe 吗? 我修改了,还是不行呢

先解决json错误吧,这个跟lsp-mode有关。

无语了,是我的python环境有问题,python.exe直接调用了

~/AppData/Local/Micosoft/WindowsApps

里的python.exe,那个奇怪的文件只有0kb,链接到微软的商店,删除掉对应的 环境path变量值就好了。 另外,lsp-python-ms 每次启动 打开xxx.py文件都会索引,可不可以只索引一次?

image

;; Set up package.el to work with MELPA (require 'package) (package-initialize)

;; Download Evil (unless (package-installed-p 'evil) (package-install 'evil))

;; Enable Evil (require 'evil) (evil-mode 1) (provide 'init-evil) 然后在init.el增加一行require,就可以您的配置上使用evil了,亲测可用