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

新的补全框下面会有一条空白,不知道为啥,之前是没有的。

然后就是要是python没装six 的话,会报错哈。pip3 install six 后就好了

有空白是因为我把font-lock-keyword-face 的字体调大了,才会这样的。应该属于我的配置的问题了。

(acm-backend-yas-trigger-keyword-face ((t (:inherit font-lock-keyword-face :height ,(face-attribute 'default :height) :bold t))))

在use-package 的:custom-face 下加这一行就完美解决字体问题了哈哈哈哈

我刚刚推送了几个补丁, 把LSP的排序代码全部弄到 Python 那边, Elisp 这边直接用, 所有二次排序的代码都删除了。

最新版我测试, LSP的性能继续提升, 同时手速太快候选词颠倒顺序的现象基本上没有了。

2 个赞

讲真,原来elisp的补全就已经很快了,刚拉了下代码试了一下,又快了很多很多。可感知了属于是

原来的 Elisp 补全是在 Emacs 这边过滤的, 我今天把Elisp符号搜索弄到 Python 线程里面, 同时还加了模糊匹配, Python端的补全性能最少是 Elisp 端的2倍以上。

你现在体会到的 Elisp 符号补全性能是 Emacs 目前最快的实现了, 特别是你直接和 company/corfu 对比一下, 性能差距明显。

今晚我在写公司项目的时候,就感觉快了一些了。

最少更新到 We need filter empty keyword for better performance even you set `acm… · manateelazycat/lsp-bridge@9fffa23 · GitHub 这个版本以上吧。

现在 LSP 的性能要比昨天之前的版本快很多, 同时 Elisp 的补全性能和LSP一样丝滑了。

gopls 太慢了,我一直觉得elisp的补全要比gopls的快一些

你没事试一下lsp-bridge补全 Python/Rust 的代码, 就是丝滑的感觉。

确实,之前用python 给我老大写运维工具的时候,就感觉python的补全要顺畅很多。

而且gopls这东西,动不动就吃掉我10几个G的内存。

今天把 Elisp Symbol 的搜索弄到 Python 线程中, 性能提升非常明显。

基于 lsp-bridge 的架构重新做一个 helm 的补全架构, 功能复杂度不减的情况下应该会比 ivy 还要快很多。

等过段时间我基于 lsp-bridge 的原理重新做一个最快的搜索框架出来。

哈哈哈,那很棒。不过写运维工具的时候,不太会python。还是看了你lsp-bridge.py的代码才知道python的面相对象是咋写的

Python就看 《Python核心编程》 这本书吧, 看完这一本就可以解决 90% 的问题, 其他书都不用看。

6 个赞
(defun wk/select-winum-or-acm-complete-1()
  "select-winum-or-acm-complete"
  (interactive)
  (if (lsp-bridge-completion-ui-visible-p) 
      (acm-complete-quick-access 0) 
    (winum-select-window-1) ))
(defun wk/select-winum-or-acm-complete-2()
  "select-winum-or-acm-complete"
  (interactive)
  (if (lsp-bridge-completion-ui-visible-p) 
      (acm-complete-quick-access 1) 
    (winum-select-window-2) ))
    (defun wk/select-winum-or-acm-complete-3()
  "select-winum-or-acm-complete"
  (interactive)
  (if (lsp-bridge-completion-ui-visible-p) 
      (acm-complete-quick-access 2) 
    (winum-select-window-3) ))
    (defun wk/select-winum-or-acm-complete-4()
  "select-winum-or-acm-complete"
  (interactive)
  (if (lsp-bridge-completion-ui-visible-p) 
      (acm-complete-quick-access 3) 
    (winum-select-window-4) ))
    (defun wk/select-winum-or-acm-complete-5()
  "select-winum-or-acm-complete"
  (interactive)
  (if (lsp-bridge-completion-ui-visible-p) 
      (acm-complete-quick-access 4) 
    (winum-select-window-5) ))
    (defun wk/select-winum-or-acm-complete-6()
  "select-winum-or-acm-complete"
  (interactive)
  (if (lsp-bridge-completion-ui-visible-p) 
      (acm-complete-quick-access 5) 
    (winum-select-window-6) ))
    (defun wk/select-winum-or-acm-complete-7()
  "select-winum-or-acm-complete"
  (interactive)
  (if (lsp-bridge-completion-ui-visible-p) 
      (acm-complete-quick-access 6) 
    (winum-select-window-7) ))
    (defun wk/select-winum-or-acm-complete-8()
  "select-winum-or-acm-complete"
  (interactive)
  (if (lsp-bridge-completion-ui-visible-p) 
      (acm-complete-quick-access 7) 
    (winum-select-window-8) ))
    (defun wk/select-winum-or-acm-complete-9()
  "select-winum-or-acm-complete"
  (interactive)
  (if (lsp-bridge-completion-ui-visible-p) 
      (acm-complete-quick-access 8) 
    (winum-select-window-9) ))

(add-to-list 'acm-continue-commands 'wk/select-winum-or-acm-complete-1)
(add-to-list 'acm-continue-commands 'wk/select-winum-or-acm-complete-2)
(add-to-list 'acm-continue-commands 'wk/select-winum-or-acm-complete-3)
(add-to-list 'acm-continue-commands 'wk/select-winum-or-acm-complete-4)
(add-to-list 'acm-continue-commands 'wk/select-winum-or-acm-complete-5)
(add-to-list 'acm-continue-commands 'wk/select-winum-or-acm-complete-6)
(add-to-list 'acm-continue-commands 'wk/select-winum-or-acm-complete-7)
(add-to-list 'acm-continue-commands 'wk/select-winum-or-acm-complete-8)
(add-to-list 'acm-continue-commands 'wk/select-winum-or-acm-complete-9)

(define-key global-map (kbd "M-1") 'wk/select-winum-or-acm-complete-1)
(define-key global-map (kbd "M-2") 'wk/select-winum-or-acm-complete-2)
(define-key global-map (kbd "M-3") 'wk/select-winum-or-acm-complete-3)
(define-key global-map (kbd "M-4") 'wk/select-winum-or-acm-complete-4)
(define-key global-map (kbd "M-5") 'wk/select-winum-or-acm-complete-5)
(define-key global-map (kbd "M-6") 'wk/select-winum-or-acm-complete-6)
(define-key global-map (kbd "M-7") 'wk/select-winum-or-acm-complete-7)
(define-key global-map (kbd "M-8") 'wk/select-winum-or-acm-complete-8)
(define-key global-map (kbd "M-9") 'wk/select-winum-or-acm-complete-9)

成功了,虽然有点粗暴把,不知道快捷键怎么传参哈哈

1 个赞

谢谢大佬 @manateelazycat ,升级了下,performance 提升不少。 :+1:

有个疑惑请教下: 在 org-mode 下,输入所出现的选项包含两个部分。

一部分是来自 “Search Word”, 但是存在打开文件中的部分单词,却不出现,比如 “Something” (等了一段时间再测也是一样的,去掉之前的引号也是不出现) 如下:

确认了下,Dabbrev: 继续输入,文件中的单词出现在第二个部分 Tabnine 中:

我的之前理解是 “Search Words” 有与 Dabbrev 相关联,补全的是能够 search 到本机子上的补全。TabNine 中的选项与外部的数据关联实现智能补全。

现在的情况是,“Search Words” 中不能搜索到当前文件的所有单词 (去掉Something之前的引号也不行),而会接着出现在 TabNine 中。

逻辑是这样的吗?谢谢大佬们!

Dabbrev 我的到现在也不能用,tabnine的补全覆盖了Dabbrev的功能而且更多,所以我没管直接用tabnine了,

(set-frame-parameter (selected-frame) 'alpha (list a ab)) 吵了一个spacemacs的透明度函数过来,然后这里设置透明度时候,补全的小窗口的透明度会跟着变低 ,但是设置透明度更低的时候会变低,设置透明度到更高的时候不会回到更高。所以我改透明度到很低再改回来,补全窗口酒还是很低的透明底,这个有啥设置么? 或者我宁愿补全窗口的透明度不变化

估计是这一段代码的问题, 你可以发送一下你的测试文本给我吗?

好的,谢谢大佬!晚些时候,发到你的邮箱 ~