大家用lsp-mode + pyls + company-lsp 补全python卡吗?

lsp-use-native-json enable 经常陷入卡顿

(setq lsp-use-native-json nil) 有时卡顿

放弃gui,转入tty,如丝般顺滑 :flushed:

这个问题我也折腾了挺长时间了,最近找到一种解决方案。 首先,我遇到的第一个问题是用lsp-pyls时,在python文件中的注释中输入时会很卡,经常连着卡好几秒,后来从高人处学会用company-diag查看company上一次的补全状态,发现在注释中键入时company会用company-capf进行补全,把company-capf从company-backends中删去就可以解决。不过好像这个问题只有我遇到了… 第二,就是补全很慢的问题。我用company-lsp和company-jedi分别测试,前者补全np.需要三四秒,并且从np.''到np.arr’'中间每次键入字母(a, r, r)都会造成emacs短暂卡顿,体验较差;而company-jedi,在np.处弹出补全列表只用了0.5秒,并且之后键入字母时毫无卡顿,体验极好。(如果你用company-jedi补全慢,可以试试把/Users/XXX/Library/Caches/Jedi/中的缓存清空一遍,可能是因为之前积累的缓存太多导致jedi变慢,实际上jedi是很快的。 综上,配置可以这样写。除了补全用jedi外,lsp-pyls的其它功能都可用。

(use-package lsp-mode
  :ensure t
  :ensure company-jedi
  :commands lsp
  :hook (python-mode . (lambda ()
						 (lsp)
						 (setq-local company-backends '(company-jedi company-files))
						 ))
)

啊?tty的神秘力量 233333

可能是有些影响性能的package在tty下没能执行,一开始我就试过在terminal或是emacs -q + lsp最小依赖,发现还是会有掉帧卡顿的现象,后来有次心血来潮登录tty去跑,发现同样的lsp-server在tty下居然如此流畅 :rofl:

1 个赞

这个问题不是你一个人,我也遇到了 。然后发现 company-backends 里有两个 company-lsp,删掉一个就好了……(当然也可能是因为换成了ms-pyls)

更新:我也把capf禁了…

补全os, sys都很快, numpy稍慢, tensorflow慢得实在受不了…

我试过 lsp-use-native-jsoncompany-capf, 发现没什么效果. 大家有什么好办法吗?

建议还是先anaconda-mode用着,lsp-mode 现阶段还是太磨人