lsp-bridge -- 速度最快的语法补全插件

我看到 Tree-Sitter 那边已经有对imenu支持的相关讨论, imenu: Add imenu functionality to tree-sitter #199

用lsp实现imenu的想法先放一放好了 :grinning:

并没有什么“意外”,从文章来看,你处理“流”数据的逻辑有问题。

流数据与消息的一个重要区别是流数据接收时并不保证每次收到的数据大小,分割的位置都是固定的,只保证数据顺序一致。

处理流数据时,接收端应该先将接收到的数据追加到本地缓冲区的尾部,然后再对本地缓冲区进行处理。如果收到足够可以处理的数据则进行处理,处理完毕之后,将已处理的数据移出缓冲区,如果没有足够可以处理的数据,则应该继续等待后续数据到来。

流数据的接收方并不能假设收到与发送方发送的大小一致的数据包。

1 个赞

这个 @zbelial 大佬已经帮我纠正了我的错误了,感谢大佬指点。

@zerol 大佬推送了一个新的补丁 Refactor by zerolfx · Pull Request #93 · manateelazycat/lsp-bridge · GitHub

主要解决了发送LSP事件的顺序一致性,在保证线程和完全异步的前提下,让 lsp-bridge 代码更加健壮,以前偶尔有补全不了的问题应该彻底修复了。

建议大家都更新一下。

2 个赞

接下来主要解决 Java 定义跳转的问题: lsp-bridge 服务器创建逻辑重构 · Issue #92 · manateelazycat/lsp-bridge · GitHub

这个问题预期解决后应该可以大大减少 LSP Server 的数量,帮大家降低 LSP Server 的内存占用和CPU负载。

2 个赞

大佬你用啥画的图?有教程么?

Google Docs 里面的画图, 就是用触摸板一点一点的拼。

哦哦,谢谢啦,我去看看。我还以为是native emacs 结合markdown啥画的。:slight_smile:

lsp-bridge 通过这个补丁也实现了直接跳转到 Java 第三方库的功能, 跳转效果请查看 `lsp-bridge-find-def` unexpected behavior · Issue #78 · manateelazycat/lsp-bridge · GitHub

感谢 @vritser 大佬! :grinning:

clojure反编译的也可以加上了感觉,一大票jvm语言 :slight_smile:

参考这个补丁吧 support java external denpendency find definition by vritser · Pull Request #95 · manateelazycat/lsp-bridge · GitHub

欢迎发PR

好想体验啊,不过现在已经用Doom的evil键位已经用习惯了,原生用起来已经是怎么用怎么别扭。好想用但是懒得在Doom里面折腾corfu,看能不能坐等到一个DoomEmacs中的解决方案。

1 个赞

把 lsp-bridge 的依赖装完,禁用 lsp-mode 和 company 以后。

直接拷贝我的配置就可以用 lazycat-emacs/init-lsp-bridge.el at master · manateelazycat/lazycat-emacs · GitHub

啥都不用折腾。

3 个赞

我在 Gitee 上弄了一个镜像仓库 lsp-bridge: Fastest LSP client for Emacs

方便没梯子的用户下载访问

你的访问受限!

服务器拒绝处理您的请求!您可能没有访问此操作的权限,点击这里返回首页

也可能是以下原因导致您没有权限

1. 没有登录,请登录后查看

2. 资源属于企业,企业用户因安全策略被企业屏蔽,请联系企业管理员

3. 项目因违规被 Gitee 屏蔽,请联系项目拥有者查看项目是否被屏蔽

4. 仓库处于“暂停”或“关闭”状态,功能被限制使用

因为 lsp 关键词被过滤了?

我这也是跟你一样的错误。

我还以为Gitea没人用了,上面的 Emacs 镜像都不更新啦

我怀疑是 @manateelazycat 设置成私有仓库了。

1 个赞

是的呢,为啥 gitee 默认是私有仓库呀。现在好了。

对于jdtls需要每个项目指定一个唯一的数据目录有什么推荐的实现方式吗?

我现在想到的是:

  1. java-mode-hook实现一下lsp-bridge-get-lang-server-by-project,然后在里面根据项目生成 jdtls配置的json文件。不过我感觉这样不太对。
  2. 或者每个项目指定一个jdtls的配置文件。

-data 不能是当前目录,不然加载项目的时候会因为jdtls生成的目录报错。



还有这边目前保存第三方库代码的时候感觉应该跟这项目走才对,目前这种实现方式,如果是多个项目感觉会有问题。

感谢 @vritser 大佬,跳转功能超级棒。 :grinning: