zbelial / lspce

LSP Client for Emacs implemented as a module using rust.
GNU General Public License v3.0
154 stars 11 forks source link

Make connect and shutdown asynchronous #22

Closed zbelial closed 7 months ago

zbelial commented 7 months ago

An issue reported Here

zbelial commented 7 months ago

Made shutdown asynchronous in c14f095b83bc7a5fc72783ce43351a459373bea9

zbelial commented 7 months ago

It seems that asynchronous connect makes no sense in lspce, since lspce has to be waiting until lsp server is initialized to send didOpen notification.

@lynnux 我尝试着将connect改成异步时,发现在lspce实现异步connect好像意义不大(以我目前对Emacs module的理解,也没法实现像eglot里那样的异步处理),因为在一个buffer里启用lspce mode时,lspce要等待server初始化完然后发送didOpen给server。如果connect改成异步,lspce的elisp代码还是要不断查询server状态,等server准备好了去发didOpen。

lynnux commented 7 months ago

嗯嗯,可以的。我上班这台机子在排除connect卡死后就没有卡死情况了,shutdown也没卡过。

zbelial commented 7 months ago

嗯嗯,可以的。我上班这台机子在排除connect卡死后就没有卡死情况了,shutdown也没卡过。

在dev分支上把shutdown改成异步的了,另外还加了个限制诊断信息数量的新特性(昨天找了个文件测试ts+deno,将近两千个诊断信息,Emacs卡到没法用),有需要的话可以切到dev尝试一下。