刚入emacs,大家现在都不用ycmd了吗,感觉lsp好卡

学习emacs几天。以前用vim,一直在用ycm,虽然没有vs code那么全,也算够用。

emacs折腾了一天,终于把lsp-mode跑起来了,结果发现很卡呀。后来专门下了neovim,装上coc,除了提示框打快了闪来闪去,补全速度和vscode没太大差别,反而嫌太快闪得荒,想把补全数量设为4个了…

最后上了ycmd,只试了js,感觉比lsp-mode流畅得多,lsp-mode基本只能追上我单手打字的速度,实在不够用。内容方面因为都是走tsserver,貌似差不多。

我觉得肯定是我姿势不对(~_~;)

我之前也遇到过,然后没再用lsp-mode了。在spacemacs里写go项目跳转的时候,CPU会飙升很高,跳转速度也很慢

ycmd的C++不准。

最近也有这种感觉。 也就前三四天吧,手贱把package全部更新了一遍,就卡的要死。。之前都感觉不错的,不晓得是哪里出了问题。。之前还是挺好的。。坐等更新回去

哦哦,好久没碰cpp好像都忘光了:joy:今天又试了下eglot,比ycm卡,比lsp-mode稍微好一点。

js 的话卡顿有相当一部分原因是垃圾回收造成的,可以尝试值设大一点,体验会好很多,比如设置成 32M

(setq gc-cons-threshold (* 32 1024 1024))

我是默认使用company-dabbrev-code,也会使用lsp-mode,但是默认使用company-dabbrev-code进行补全,这样是buffer内补全,涉及不到lsp,补全速度贼快.当无法补全时,就用绑定到快捷键的company-lsp进行补全,虽然多了个手动触发,但是不卡了,cpu也下来了.基本不影响使用了.我还是windows环境. 33333

1 个赞

Windows 上使用 Emacs 需要很大的勇气啊

不知道用wsl跑emacs会不会卡,vim还可以。以前因为办公室打印机没有linux驱动经常要开windows,最近买了几个树莓派完美解决了~

完全没影响啊,用的是msys2.基本用的都是gnu的工具.除了调试编译用vs,其他都能满足需求

你这个思路不错。可否发下你的这段设置。

我用的spacemacs,不过我改了一些spacemacs c++ layer的源码,不然无法默认使用 company-dabbrev-code,回头我看看都改了哪里,发上来

更新下情况。

这两天把几个JS补全方案都试了一遍。目前看来,最流畅的方案是tide+tsserver和tern,补全方面tide更强一下,两个都比YCM略快,很好用。eglot不如YCM流畅,虽然比lsp-mode快一点,但跟不上打字速度。lsp-mode连打字都略卡,吐槽下lsp-mode配置真的麻烦,弄了好久才跑起来,卡估计也是我配置问题。

lsp-mode 配置现在也不是很复杂了,跟 eglot 差不多了吧。新的默认 server 是包装的 tsserver,所以效率应该差不多。我还是觉得目前最大的瓶颈是 JSON 解析,对大项目有点吃力。

进展就是,main 函数已经写好了:

3 个赞

一开始搞复杂了,不懂elisp,网上搜的配置不知道是不是版本问题,lsp-mode好不容易才弄出补全:disappointed_relieved:最近在学common lisp好多了…

您的centaur有下过,整个界面都很漂亮清爽,也借鉴了好些内容,感谢~

真黑 :stuck_out_tongue_closed_eyes: 其实 vim 那边的 vim-go 已经默认用 gopls 补全了

1 个赞

感谢指正。

简单试了一下,的确补全和跳转到定义已经可以了。vim-go 用了 gocode + gopls,也许是 gopls 还有未完善的地方,各位自行体验去吧:

;; Pre-install:
;; go get -u golang.org/x/tools/cmd/gopls
(lsp-register-client
 (make-lsp-client :new-connection (lsp-stdio-connection "gopls")
                  :major-modes '(go-mode)
                  :priority 0
                  :initialization-options 'lsp-clients-go--make-init-options
                  :server-id 'gopls
                  :library-folders-fn (lambda (_workspace)
                                        lsp-clients-go-library-directories)))

:joy: 为啥我用gopls一直报 no room in queue,