奇怪了,我这边 mspyls 一直不响应 textDocument/completion 请求。
就是这个commit以前的版本在centos上很快,cpu也低,但是这个commit编译的一启动mspyls就非常吃cpu,分析完代码后,就正常了。
lsp-mode是自动显示函数帮助和变量类型。速度很快,不卡顿。
偶尔在windows上通过x server用一下linux的emacs和lsp-mode。
死磕了一下午,我终于明白了。
pyls不需要索引,支持单文件,比如我在 HOME 目录下创建 test.py 可以直接补全工作 mspyls需要建索引,当我在 HOME 目录下创建 test.py 文件时,mspyls 会分析我整个HOME目录,我的HOME目录超多源代码,这也是为啥我一直没法得到 mspyls 对 textDocument/completion 请求的回应,因为他没有索引完。
创建一个 ~/test/test.py 的目录包裹一下 test.py , mspyls 马上就好了。
天啊,折磨死我了,知道原因就好让Nox默认支持 mspyls 了。
王哥,nox 的 mspyls 跑起来了。我找了 eglot 的 issue,然后调整了下,也不知道哪个参数的鬼。
(defvar lsp-python "/usr/local/bin/python")
(defvar lsp-search-paths [])
(defclass nox-mspyls (nox-lsp-server) ()
:documentation "MS Python Language Server.")
(setq-default nox-workspace-configuration
'((:python :autoComplete (:extraPaths nil)
:analysis (:autoSearchPaths :json-false :usePYTHONPATH :json-false))))
(cl-defmethod nox-initialization-options ((_server nox-mspyls))
`(:interpreter
(:properties
(:InterpreterPath ,lsp-python))
:searchPaths ,lsp-search-paths))
(add-to-list 'nox-server-programs
`(python-mode nox-mspyls
"Microsoft.Python.LanguageServer"))
我把 “Microsoft.Python.LanguageServer” 放 PATH 了。
看我上面的帖子,因为mspyls要建立索引,等我半个小时,我把 mspyls 的支持内置了。
又一个被 mspyls 扫描 HOME 目录坑到的例子。
哈哈哈,mspyls索引一开始没懂确实很头痛
可以设置cache吗?
我记得 lsp-python-ms 配合 doom-modeline ,在索引会有提示,在 doom-modeline 还有个进度条。
目前忙测的结果是,目录大了 mspyls 就不工作了,还没有研究是目录大了没索引完还是直接不索引了?
研究了下 lsp-python-ms, 发现 initializationOptions 里面加上 :analysisUpdates t, 会返回索引的进度。
回复类似
(:jsonrpc "2.0" :method "python/reportProgress" :params
["Analyzing in background, 86 items left..."])
server-notification Mon Mar 30 23:11:24 2020:
(:jsonrpc "2.0" :method "python/reportProgress" :params
["Analyzing in background, 72 items left..."])
server-notification Mon Mar 30 23:11:24 2020:
(:jsonrpc "2.0" :method "python/reportProgress" :params
["Analyzing in background, 58 items left..."])
server-notification Mon Mar 30 23:11:25 2020:
(:jsonrpc "2.0" :method "python/reportProgress" :params
["Analyzing in background, 39 items left..."])
server-notification Mon Mar 30 23:11:25 2020:
(:jsonrpc "2.0" :method "python/reportProgress" :params
["Analyzing in background, 37 items left..."])
已经添加到Nox对mspyls的支持,方便大文件的时候看一下进度,要不还以为mspyls挂了。
测试结果是目录和文件太多,索引很慢很慢………
是 spinner,在索引时会显示。*lsp-log*
里会打印详细信息。
你是mac吗?
mscOS Catalina
感觉好看,能介绍一下用了什么ui方面的包么?