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

大佬能帮忙再看看嘛

ccls 补全服务器没有signature help

在 emacs -Q 下也有问题.

测试配置如下:

(show-paren-mode 1)
(eval-when-compile (require 'cl))

;; package repositories
(require 'package)
(add-to-list 'package-archives '("melpa" . "http://mirrors.tuna.tsinghua.edu.cn/elpa/melpa/") t)
(package-initialize)

(add-to-list 'load-path "~/.emacs.d/site-lisp/lsp-bridge")

(require 'lsp-bridge)
(setq lsp-bridge-c-lsp-server "ccls")
(global-lsp-bridge-mode)

边框是你主题或者配置的问题,善用emacs -Q排查。

看看 lsp-bridge 有没有报错?

报了这个错误

麻烦报个github issue吧,是bug,谢谢。

好的, 紫薯布丁

前两个功能和第三个功能拆成两个PR吧,这样好对第三个补丁review,万一第三个补丁有问题也好回滚。

第三个补丁要改一下,只有lsp server要求全部同步选项的时候,elisp才向服务器发送buffer全部内容。

现在这样会导致编辑大文件时,其他语言每次变动都发buffer全部内容,影响性能。

我想过这个,只是看现在lsp-bridge.el的设计是不需要知道server配置的,所以写成这样了。如果是多服务器的话elisp就要知道每个server的capabilities了。

我想要不把buffer名也发到change_file里然后让epc直接拉buffer内容算了

这个补丁已经修复了, 原因是大多数服务器直接返回参数字符串, ccls和其他服务器实现都不一样, 它返回参数整体字符串以后, 再根据每个参数位置返回对应字符串切片的 index, lsp client 需要针对 ccls 做二次处理才行。

这个补丁的作用主要是针对 ccls 这种不标准的返回格式做了兼容。

对, 传递 buffer 的名字是一个更好的设计, buffer名字不耗费性能, 如果那个 lsp server 需要全部内容, 临时通过 epc 抓取一下 buffer 全部内容就好了。 :+1:

你调整的时候, 顺便把 https://github.com/manateelazycat/lsp-bridge/blob/f0ff38d5a2a182736b5c45a49bd4aefb01ad8dc2/lsp-bridge.el#L1433-#L1436 这一块一并改进吧, 现在为了提升代码格式化的性能, 格式化中间没有发送 didChange 请求, 而是全部格式化以后先保存文件再让 lsp server 读取文件, 这样的实现的缺陷是强制用户保存一下文件, 如果能改成你现在说的通过 buffer name 来获取文件内容, 整个方案就更好了。

支持局部同步的还是现在逻辑, 要求全部更改内容的lsp server才通过 buffer name 获取全部文件内容, 因为在大文件的时候(比如几兆), 局部更改字符串肯定比传输整个文件要快(因为字符串动一下就传输整个文件还是有影响的)

大佬,我在编辑xxx.vue文件时遇到以下错误

貌似是decoder出了点小问题,可我检查确认orjson有安装且安装正确。

请问怎么解?

上图是emacs -Q导入最小配置straight.elevil和:

改完了,不过我没有趁手的project在手上测formatting

你把orjson卸载看看,感觉orjson对windows遇到编码问题了。

测试这个吧 dwm.c - dwm - dynamic window manager ,一下子格式化2000多行,需要安装clangd

卸载后问题依然存在,而且我看那个Traceback的路径是python内置的json库?

方便在github上发一段测试代码嘛?我有空看看

好,感谢了!

focus(NULL);是我加的一行, 不保存直接format也保留了

就是format完之后高亮太慢了,tree sitter的那个插件直接跪了

1 个赞