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

:blush:感觉实时切换 StarDict 字典也非常方便。
自己写了对应切换字典的函数,绑定到快捷键,立即实时切换到目标词典!爽~!!!

;;; --- blove/korean-zh-dict
(defun toggle-dict-kc ()
  "switch to korean-zh dict."
  (interactive)
  (setq acm-backend-search-sdcv-words-dictionary (expand-file-name "naver_krcn/Naver_KrCn" user-emacs-directory))
  (lsp-bridge-restart-process)
  )
;;; --- blove/zh-korean-dict
(defun toggle-dict-ck ()
  "switch to zh-korean dict."
  (interactive)
  (setq acm-backend-search-sdcv-words-dictionary (expand-file-name "naver_cnkr/Naver_CnKr" user-emacs-directory))
  (lsp-bridge-restart-process)
  )
2 个赞

问个lsp-bridge使用问题:

目前遇到这样一个问题,比如,我需要对nginx 二次开发,由于头文件分散在各个目录下,需要include才能补全,怎么在lsp-bridge中设置c项目的包含目录,配置ccls后在项目根目录下.ccls不生效(lsp-mode可以)。

第二个,由于python项目是很老的项目,模块的目录也不规范,导致一些公用的目录在python项目本身的目录之外,怎么设置让其能找到。

这些你要分别研究ccls和pyright的配置,自己编写ccls.json和pyright.json

然后设置lsp-bridge用你定制化的json文件加载。

虽然 sdcv-helper 已经带来的极大的简易使用方式,无需再 fork lsp-bridge 的代码了。但是本着探索好奇,简单 fork 了一下,换成自定义 svg图标,并结合自己的使用习惯,形成系统的快捷切换。

;;;
;;; --- dec init var
;;;
(defvar my-lang "defor"
  "for no sdcv-helper.")
(defvar or-acm-icon-dir acm-icon-dir
  "get init acm-icon-dir.")
;;;
;;; --- main icons path func
;;;
(defun blove-icons-path (my-lang)
  (interactive)
  (when (string= my-lang "korean")
	(setq acm-icon-dir (expand-file-name "svg/korean" user-emacs-directory))
	)
  (when (string= my-lang "us-eng")
	(setq acm-icon-dir (expand-file-name "svg/us-eng" user-emacs-directory))
	)
  (when (string= my-lang "ox-eng")
	(setq acm-icon-dir (expand-file-name "svg/ox-eng" user-emacs-directory))
	)
  (when (string= my-lang "defor")
	(setq acm-icon-dir or-acm-icon-dir)
	)
  )
;;;
;;; --- fork acm-icon-filepath
;;;
(advice-add 'acm-icon-filepath
			:before (lambda (collection name)
						(blove-icons-path my-lang)
						)
			)
;;;
;;; --- toggle dict
;;;
;;; :: blove/korean-zh-dict
;;;
(defun toggle-dict-kc ()
  "switch to korean-zh dict."
  (interactive)
  (setq my-lang "korean")
  (setq acm-backend-search-sdcv-words-dictionary (expand-file-name "blove_krcn/krcn" user-emacs-directory))
  (lsp-bridge-restart-process)
  )
;;;
;;; :: my-sdcv-toggle
;;;
(defun blove/toggle-sdcv ()
  (interactive)
  (lsp-bridge-toggle-sdcv-helper)
  (if acm-enable-search-sdcv-words
	  (setq spc-add 0)
	(progn
	  (setq my-lang "defor")
	  (setq spc-add 20)
	  )
	)
  )

目前的办法是~将用到的多个 svg 图标文都命名为相同的 material_file-find-outline.svg,分别放到对应的目录内。通过 fork (acm-icon-filepath) 这个函数,在特定条件下切换到对应的自定义 svg 目录内!

Archlinux + 最新版lsp-bridge

*Messages*报错

Error in post-command-hook (lsp-bridge-monitor-post-command): (void-function org-at-table-p)

辛苦大佬看一下

这种项目 manateelazycat/lsp-bridge - Gource visualisation - YouTube 是机器人自动生成的吗?

今天的补丁, 避免 lsp-bridge 在 org 表格中弹出补全, 已经修复了, 更新吧。

1 个赞

https://gource.io/

是这个吧

lsp-bridge 可以补全英文单词输入么?

一直都可以啊。

我尝试在 doom 下使用,提示这个错误

Error in private config: config.el, (file-missing Cannot open load file No such file or directory acm)

我看了 stright clone lsp-bridge 是成功的,我是还需要装一个 acm 相关的包吗?还是这个应该是 lsp-bridge 自带的?

需要如何设置么?

自带的, 你要检查你的配置

lsp-bridge-toggle-sdcv-helper

1 个赞

Emacs 29 的 make-frame-invisible‘ 函数性能太慢了(Emacs 28 很快), 导致 acm 菜单打字非常卡, 上面这个补丁暂时用 run-with-timer’ 绕过 Emacs 29 这个问题。

现在 Emacs 29 应该不卡了, 但是我的体验, Emacs 28 的性能反而比 Emacs 29 好。

我今天测试的结果是, Emac28 下ACM的性能最少是 Emacs29 两倍。

Emacs28下 lsp-bridge 非常丝滑, Emacs29下 acm 渲染很慢, 原因未知。

如果大家重度使用 lsp-bridge, 推荐使用 Emacs 28, 我的版本是 GNU Emacs 28.2 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.34, cairo version 1.17.6) of 2022-09-12

2 个赞

应该是个bug, 我在gopls 下,候选项老是停在 yasnippet 的条目上面。

给重现方式吧

这个挺容易触发的,我分别试了两次单独输入 ‘s’ 一次停在最后一个s(search word) 一次停在resdb(yas-snippet). 可能工程要大一点吧的时候会比较容易触发,而且要有点耐心,因为不是每次都会触发。 因为最近写代码老是一不小心把yasnippet 给补全上去所以就比较心烦。

再就是,因为明明想补全第一个,但是手速快的时候,就不知道补全的到底是个啥了 :rofl: 有点违反直觉了。

我刚去看了下lsp-bridge buf 的简略日志 发现有挺多这种报错的