坐等anacoda和jedi, 加一个lsp的option.
jedi用服务器实现completion就不是jedi了吗?
难道我上面遇到的问题你们都没碰到过吗?我给github提了issue,暂时还没得到回复,写起代码来这个问题真的烦人啊
大佬,麻烦你一下,在使用mspyls时,我发现import 一个同级文件总是出现unresolved import,比如在同一个文件夹里面有a.py和b.py,如果在b文件里面import a他就会出现上面的警告,导致跟他相关的类或者函数,都不能补全.但是实际的程序调用还是正常进行了,结果也正常能够输出.
尝试设置一下 lsp-python-ms-extra-paths,这个貌似是 python-language-server 的 bug,可以参考:https://github.com/Microsoft/python-language-server/issues/918
我一般都把 flycheck 关掉,用自己写的脚本来做 lint(基本上就是针对改动的文件 pylint → mypy → pytest 一波流)。
可以参考一下我的配置:https://github.com/forrestchang/.doom.d/blob/master/modules/private/my-python/config.el
之前它github上修复了一些bug,我昨天也给他们踢了issue,没人鸟我,他这个flycheck不是lsp时,不会出现这个问题,现在我都是关了,不管他,只用它补全了,但是强迫症的我,这段时间,又没太多时间花在emacs上,真的是揪心啊
已经安装了vscode,能直接使用那里面的mspyls吗?有成功的案例吗?
可以,只要把exe设置好…大约每次mspls升级都要改
可以写个脚本。大概下面这样就行。这个自己用的,没做一些容错上的兼容。
(defun find-vscode-mspyls-executable ()
(let* ((wildcards ".vscode/extensions/ms-python.python-*/languageServer*/Microsoft.Python.LanguageServer")
(dir-and-ext (if IS-WINDOWS
(cons (getenv "USERPROFILE") ".exe")
(cons (getenv "HOME") nil)))
(cmd (concat (file-name-as-directory (car dir-and-ext))
wildcards (cdr dir-and-ext))))
(file-expand-wildcards cmd t)))
(setq lsp-python-ms-executable
(car (find-vscode-mspyls-executable)))
(setq lsp-python-ms-dir
(file-name-directory lsp-python-ms-executable))
用上mspyls了,确实快多了,而且好些之前不显示的也提示了(比如tkinter下的)
但还有几个问题
1,mspyls的debug还是用的ptvsd吗?
2,mspyls的缓存数据,和vscode是可以公用吗?
大神,lsp-python-ms 是不是需要额外配置?
我们配合适配一下 nox 吧。
可以移植过去,适配下 eglot。如果不用自动下载功能,只需要注册 mspyls 的客户端就好了。
直接填dotnet和mspyls的dll路径不行
一直用python-ms,感觉比pyls速度快。加油。
感觉是不是 initializationOptions 的问题,我看了下 nox 用 mspyls 时候好像是 nil, 我记得 lsp-python-ms 要去解析 python 的位置,版本等等的。
ms-python-language-server 并不是标准的协议实现,需要调整一些参数才能工作。
谁在Linux下成功起来 mspyls ?
我感觉Linux版本有bug,服务器一直报错误:
server-reply (id:10) ERROR Mon Mar 30 18:44:46 2020: (:jsonrpc “2.0” :id 10 :error (:code -32000 :message “Object reference not set to an instance of an object.” :data " at Microsoft.Python.LanguageServer.Documents.Document.GetAnalysisAsync(Uri uri, IServiceContainer services, Int32 msTimeout, CancellationToken cancellationToken) in /home/andy/python-language-server/src/LanguageServer/Impl/Documents/Document.cs:line 28\n at Microsoft.Python.LanguageServer.Implementation.Server.Completion(CompletionParams params, CancellationToken cancellationToken) in /home/andy/python-language-server/src/LanguageServer/Impl/Implementation/Server.Editor.cs:line 41\n at Microsoft.Python.LanguageServer.Implementation.LanguageServer.Completion(JToken token, CancellationToken cancellationToken) in /home/andy/python-language-server/src/LanguageServer/Impl/LanguageServer.cs:line 163"))
你是Linux版本?