我mac下面也有这个问题。但是 vscode就好好的,非常顺畅。
vscode 设置里面有一个 enableJedi 什么的,设置成 false,再打开一个python 文件就会去下载 mspyls 了
好像是一些内置包会出现这个状况。pip安装的大部分都没问题。我怀疑是那个 search path 里面那个zip什么的影响。
island
130
1 个赞
cireu
132
linux和win都有,mac似乎没有,ns也不行
windows 是 win, linux 是 linux, mac 是 osx
@smallzhan @fuck_dl
unresolved import也许跟这个bug有关。
直接用我这个配置吧,升级就修改下版本。
每次启动都去检查最新版mspyls没有必要。加个检查更新的函数倒是可以。
确实没必要,不过可以提供一个函数。另外,最新已经 0.3.20 了。
cireu
137
检测系统那里,非御三家系统直接user-error
崩掉比用空字符串好吧
不是这个问题, 我使用的版本是 26.2, 也没用 native json parser. 另外,问题只出现在 lsp-log 里面出现 Reloading modules… 之后, 现在是不知道这个 Reloading 是怎么触发的.
根据你这个改了一下, 试了试, 暂时没发现 reloading 了, 我再多试试.
hek14
141
用了你的配置,也用了vscode的server,还是卡的不行。请问你的mac os版本以及emacs版本分别是多少?emacs是用的emacsosx.com下载的dmg还是brew安装的版本?
我用的macOS Mojave 10.14.5,GNU Emacs 27.0.50 (brew install emacs-plus --without-spacemacs-icon --with-jansson --with-xwidgets --HEAD
安装的)。
hek14
143
谢谢! 刚才试了一下27.0.50的版本, 确实lsp-python-ms就很顺滑了. 希望这个帖子能够帮助到同样在mac os下对lsp有疑惑的人~
不客气!看来native json parser 性能还是有很大提升的。
写了一个获取最新 nupkg url 的函数:
(defun lsp-python-ms-latest-nupkg-url (&optional channel)
(let ((channel (or channel "stable")))
(unless (member channel '("stable" "beta" "daily"))
(error (format "Unknown channel: %s" cnannel)))
(with-temp-buffer
(url-insert-file-contents
(concat
"https://pvsc.blob.core.windows.net/python-language-server-"
channel
"?restype=container&comp=list&prefix=Python-Language-Server-"
(cond (*macos* "osx")
(*linux* "linux")
(*winnt* "win")
(t (error (format "Unknown system: %s" system-type))))
"-x64"))
(pcase (xml-parse-region (point) (point-max))
(`((EnumerationResults
((ContainerName . ,_))
(Prefix nil ,_)
(Blobs nil . ,blobs)
(NextMarker nil)))
(cdar
(sort
(mapcar (lambda (blob)
(pcase blob
(`(Blob
nil
(Name nil ,_)
(Url nil ,url)
(Properties nil (Last-Modified nil ,last-modified) . ,_))
(cons (encode-time (parse-time-string last-modified)) url))))
blobs)
(lambda (t1 t2)
(time-less-p (car t2) (car t1))))))))))
把中间判断 system-type
那几行替换城你自己的应该就可以了,以下是在 macOS 的测试结果:
(list
(lsp-python-ms-latest-nupkg-url)
(lsp-python-ms-latest-nupkg-url "beta")
(lsp-python-ms-latest-nupkg-url "daily"))
;; =>
;; ("https://pvsc.blob.core.windows.net/python-language-server-stable/Python-Language-Server-osx-x64.0.3.20.nupkg"
;; "https://pvsc.blob.core.windows.net/python-language-server-beta/Python-Language-Server-osx-x64.0.3.20.nupkg"
;; "https://pvsc.blob.core.windows.net/python-language-server-daily/Python-Language-Server-osx-x64.0.3.20.nupkg")
另外需要特别注意的是,输出的原始 xml 里有个 NextMarker 好像是分页标记,我目前直接当作 nil 处理没有问题(如果为 t 则 pcase pattern 不起作用),说明目前是没有分页的。将来有可能会返回分页数据,不过也可能源头控制好了,不产生分页数据,否则 daily 每天一个包早就该分页了。
UPDATE: 2019-06-27 01.43.47
修复排序问题 154楼
UPDATE: 2019-06-28 15.54.21
Replace url-retrieve-synchronously
with url-insert-file-contents
3 个赞
手动点赞!
我也想写, 不过 elisp 不熟,还在查 url-retrieve-synchronously 和 xml-parse-<file, region, string> 之类的用法, 好好研究下你这个…