lsp服务慢的时候导致的Emacs输入卡顿问题请教

我有一个1300多行的vue文件,输入的时候vls补全一次大概需要5s,比较了vscode、vim+coc.nvim以及emacs,只有emacs会输了几个字符之后就无法上屏了,只有等补全结果返回之后才有反应,因为 company的补全也声称是异步的,为啥会出现交互卡顿的情况呢??

经测试如果后端秒回的话是不卡的,所以肯定不是 lisp 处理消息慢的问题。

简单对比了一下三个编辑器:

  1. vscode 和 coc.nvim 在输入的时候都是只触发一次补全(具体vscode是不是只触发一次,只是看打印lsp log来推断的),而coc.nvim 的介绍里面是提到了的;

  2. 而emacs的实现是每次触发新的请求都会取消上一个请求,对于这种后端很慢的情况,就成了恶性循环,每次都触发新请求的话,那啥时候也补全不上,而且还会导致后端要连续处理好几个耗时很长的任务。

所以,想问问emacs有类似的方案吗?只触发一次,如果要补全的内容差不多,比如a和ab,ab直接复用a的请求,等请求回来再前端过滤一下直接去补全,实际可能会更负杂,但是持续触发新的请求感觉更影响体验。 另外,再咨询下,company-mode 的异步是使用定时检查来实现的吗,emacs-lisp 貌似也支持 Promise ,好像 company 也没使用这种方式。