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

按字符排列总感觉怪怪的 :rofl:,大佬这个有对应能设置的变量吗

更新看看吧。

用LSP多的人, 就喜欢LSP Server推荐来排序, 以前没用过 LSP 的人就喜欢按照前缀和长度来。

先这样吧, 再有分歧, 就按照语言来设置排序方式吧。

没问题了,感谢大佬 :pray:

我也有这个bug,非常讨厌。你有解决方案了么? 我有空也试试你的复现方案。看看能不能找出问题的根源。

windows 下连远程不能用 ssh 吧?是不是要换成 plink? 反正 tramp 里面是需要用 plink。

没有,最近事情比较多,所以现在放弃用Emacs做绝大多数事情了。在终端里面我都用nvim了

最近在改 Emacs C的代码, 发现 clangd 补全很慢, 以为是 clangd 的问题。

实际调研,发现是 acm.el 中 (beginning-of-defun) 这个函数的问题, 在Emacs 29以后, (beginning-of-defun) 的实现是用 treesit 来做的, 如果大量调用 (beginning-of-defun) 会导致性能损耗很大。

今天提交 Improve performance of `acm-in-comment-p` and `acm-in-string-p` · manateelazycat/lsp-bridge@2f005cf · GitHub 后, clangd的补全速度很丝滑了。

用 lsp-bridge 写 C 代码的同学可以更新一下啦。

6 个赞

大佬,更新了之后发现markdown mode跪了。能帮忙看看这个不?

已经合并了,感谢补丁。

才给lsp-bridge 添加一个补丁

当lsp-bridge 发现 PyPy 时, 用PyPy替代CPython来启动lsp-bridge, PyPy的性能是CPython的5倍, 意味着lsp-bridge 的性能也会有5倍提升。

已经安装lsp-bridge 的用户, 更新lsp-bridge 到最新版, 执行下面命令重启Emacs就可以享受速度的提升:

sudo pacman -S pypy3
pypy3 -m pip install epc sexpdata six paramiko
8 个赞

很不爽,m1 mac下面暂时用不了pypy3

如果没有pypy,cpython也是兼容的,cpython已经超级快了。

m1 只是不能用 brew 装 pypy,但是 pypy 是支持 m1 的

不是办法的办法,关掉doc 我就没有再复现了。

 (setq acm-enable-doc nil)
1 个赞

lsp-bridge 已经支持 Codeium 了:

  1. 更新到最新版, 打开选项 (setq acm-enable-codeium t)
  2. 运行命令 lsp-bridge-install-update-codeium 来安装 Codeium
  3. 运行命令 lsp-bridge-codeium-auth 来获取 auth token
  4. 运行命令 lsp-bridge-codeium-input-auth-token 获取 API Key 后就可以使用了

效果比TabNine要好很多, 使用截图:

5 个赞

迅速跟进学习了。太酷了。

现在必须开代理,不然使用不了codeium.

插件可以自己把函数补全吗?譬如补全好多行代码那种?

我帮你 @Mumulhl 大佬

似乎acm-backend-lsp-candidate-min-length没有起到作用;另外,在 Elisp 环境下,在 buffer 中输入setq 后删除空格后会自动触发补全框,可以设置成再输入字符后触发吗?我使用emacs -Q启动后加载配置如下:

(setq package-user-dir "~/.emacs.d/elpa")

(require 'package)
(package-initialize)

(require 'posframe)

(add-to-list 'load-path "/home/Leo/.emacs.d/site-lisp/lsp-bridge/")
(require 'lsp-bridge)
(global-lsp-bridge-mode)


(add-hook 'lsp-bridge-mode-hook '(lambda ()
								   (yas/minor-mode t)
								   (setq lsp-bridge-enable-diagnostics nil
										 lsp-bridge-c-lsp-server "ccls")
								   ))


(with-eval-after-load 'lsp-bridge
  (setq-default ;; acm-candidate-match-function 'orderless-flex
   acm-enable-icon t
   acm-enable-doc t
   acm-enable-yas t
   acm-enable-tempel t
   acm-enable-quick-access nil
   acm-enable-search-file-words t
   acm-enable-telega nil
   acm-enable-tabnine nil
   lsp-bridge-enable-log t
   lsp-bridge-enable-signature-help t
   lsp-bridge-enable-diagnostics t
   lsp-bridge-complete-manually nil
   lsp-bridge-enable-profile t
   ;; lsp-bridge-multi-lang-server-mode-list nil
   acm-backend-lsp-candidate-min-length 3
   ))

acm-backend-lsp-candidate-min-length 不生效可以给一个Demo我测试一下吗?

按照之前所提供的配置,在 *scratch* 输入(s 时就会弹出补全框,此时acm-backend-lsp-candidate-min-length 是 3。抱歉目前不方便提供截图。这算 Demo 吗?我不是很清楚。