我用的是 2011 年的笔记本,性能比较渣,有时候按 TAB 阻塞,直到补全列表出来(或者提示 Timeout)才能继续操作。
而 vsc 从来没遇到这种情况。我并不是说 vsc 快,实际在我的破电脑上,补全也是要等的。但是我可以选择不等待,继续输入,没有丝毫阻塞。
所以我对 lsp(或者 Emacs)的异步表现有所怀疑,把锅都甩给 json 可能有失公平。
不仅仅是 c/s 之间通信需要异步,UI 的更新也应该要异步,否则无法真正解决卡顿问题。
我用的是 2011 年的笔记本,性能比较渣,有时候按 TAB 阻塞,直到补全列表出来(或者提示 Timeout)才能继续操作。
而 vsc 从来没遇到这种情况。我并不是说 vsc 快,实际在我的破电脑上,补全也是要等的。但是我可以选择不等待,继续输入,没有丝毫阻塞。
所以我对 lsp(或者 Emacs)的异步表现有所怀疑,把锅都甩给 json 可能有失公平。
不仅仅是 c/s 之间通信需要异步,UI 的更新也应该要异步,否则无法真正解决卡顿问题。
Emacs的小短腿,我觉得lsp得用dynamic-module,从connection到UI都交给外部实现才行。
Dynamic module解析JSON很难给lsp加速,因为dynamic module每次都要吧lisp string拷贝出来再把原生数据结构拷贝回去,一来一会的十分耗时
你说的这种现象很可能是company-lsp的锅,你可以profile看看就知道了。
一直 code analysis is in progress … 这个怎么破? 没有用过 lsp,如果换虚拟环境的话会重新索引吗?这个索引时间真的有点长。
我这边配置之后,lsp一直在加载lsp-mode默认的python后端,pyls,不知道这个怎么debug?也没有报错。
检查你配置/安装是否正确。
lsp-python-ms 安装之后,会注册一个 mspyls,它的优先级高于 pyls。
但是如果 mspyls 找不到对应的可执行文件,就会去启用 pyls。
这几个问提你需要去排除。
你要在调用(lsp)函数之前加载lsp-python-ms
必须(require 'lsp-python-ms)
.
我能够用lsp-ms-python,但是我总感觉补全特别卡,跳转还好,你有什么针对lsp补全额外的配置吗?
这个都还卡就没辙了,现在应该是性能最高的了,用C#开发的server,多线程比python好太多。理论上和VSCode差不多的。是用的Emacs27吗?不是就换成27试试。
感觉可能是client端的问题,vscode效果非常棒
我这里还行啊,用pandas都不卡,比用pyls体验好太多
打算直接用你的配置试一下,我用的doom,系统是mac os mojave。 BTW,假如我想在你的配置的基础上加入evil,你觉得工作量大吗? 有没有什么建议?
不大,直接把evil的配置加到~/.emacs.d/custom-post.el
中就可以了。我自己测试时加过evil
package,很方便。只是其他包和兼容的代码需要你自行加了,我想这个也不难。
感觉好像是快不少,写了个懒人script找vscode的executable。。。懒得安装那么多东东。
(def-package! lsp-python-ms
:demand nil
:hook (python-mode . lsp)
:config
;; for executable of language server, if it's not symlinked on your PATH
(setq lsp-python-ms-executable
(string-trim (shell-command-to-string
"fd -a ^Microsoft.Python.LanguageServer$ $HOME/.vscode/extensions | tail -1")))
;; for dev build of language server
(setq lsp-python-ms-dir
(file-name-directory lsp-python-ms-executable)))
26上有人用过的说一下体验。感觉是不是必须要27
我的lsp-python-ms在emacs26下运行不卡,只是我还没尝试numpy
我26.1卡的不行
我感觉是lsp-python-ms 这个client配置,可能在不同平台表现不一样,我在win10上 是卡的爆炸,基本不能用。
我的一直提示LSP:: No LSP server for python-mode,能看一下你的配置吗