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

我在 ubuntu20.04上面 不能弹出 补全框(acm-mode),在其他环境是可以的。

不知道是不是 中文编码的问题。因为我在这个环境下 使用另一个插件也有问题,现在也没有解决。

大佬,这个 english-helper 很好用。早在之前的 company 版本我就一直用,并且加了自定义的其它语种的 backend。
想问一个有点过分的问题!
:rofl: 目前 acm 框架是否可以添加自定义的 backend 呢?如果可以,方法是怎样的呢?我蒙着用 advice ,但是没成成功…

;;; --- english-helper for korean-helper
(add-to-list 'load-path (concat user-emacs-directory "lisp/blove-extra/lang-helper"))
(require 'blove-backends-kor-zh-15000)
(defcustom acm-backend-kor-min-length 1
  "Minimum length of korean word."
  :type 'integer)
(advice-add 'acm-backend-english-candidates
			:after (lambda(keyword)
					 (let* ((candidates-kor (list)))
					   (when (>= (length keyword) acm-backend-korean-min-length)
						 (dolist (candidate blove-kor-zh-15000)
						   ;; (when (string-prefix-p (downcase keyword) candidate)
						   (when (string-prefix-p candidate)
							 (add-to-list 'candidates-kor (list :key candidate
															:icon "translate"
															:label candidate
															:display-label candidate
															:annotation (get-text-property 0 :initials candidate)
															:backend "korean")
										  t))))

					   candidates-kor))
			)

已经修复了。

就看 acm/acm-backend-* 文件,依葫芦画瓢吧, 都是非常简单的代码。

这种问题先自己 emacs -Q 对比测试一下再问吧, 每个 emacser 的环境都复杂,模糊的一句话我就能修复你的问题,我就是神仙了,哈哈哈哈。

好的!我先研究研究!有不懂的地方再向大佬请教! :grinning_face_with_smiling_eyes:

C-x 5 2 分frame后 在多显示器上补全时,补全列表会强制跑到 另外一个frame上。

截屏2022-06-07 14.46.37

没有使用多 frame 的习惯,研究提PR吧,我最近忙,没时间修了。

好像在计算位置的时候的问题,如果我先在其中一个frame补全过, 那么用第二个frame写代码补全时,就还在前一个frame上显示。 神奇的是docs显示位置又是正常的。 截屏2022-06-07 15.17.56

截屏2022-06-07 15.18.12

acm可能存在性能问题…我编写ts时卡得不要不要的…

不清楚是不是吐的补全项太多了,有没有什么方法可以调试的,现在写ts暂时把lsp-bridge-mode给关闭了

我写python的时候也有这种问题,后面我更新了emacs-git,就正常了。

我用了吞吐量最大的 volar, 很流畅呀。

emacs -Q 排除一下配置问题吧,比如是不是用了 js2-mode 这种超级卡的模式?

Macos在终端可以执行jdtls,但是emacs出现以下错误,有人碰到过吗?

[LSP-Bridge] Error: can’t find command jdtls 

自己手动下载的包配置了PATH也不行,直接brew install jdtls就可以正常使用。

日经问题,或许试试这个

1 个赞

找到问题了,原来是 svg 没安装,就会报错,然后连 补全窗口都不会弹出。

能不能加个 检查,如果svg 没安装,就直接 设置 acm-enable-icon nil.

Emacs安装的时候配置好吧,不同操作系统和发行版的环境都不一样,Elisp插件就不要去探测 libsvg 装没装吧。

先用advice临时解决一下

(defun acm-backend-yas-candidates-advice (keyword)
  (when acm-enable-yas
    (let* ((candidates (list))
           (snippets (cl-mapcan (lambda (table)
                                  (yas--table-all-keys table))
                                (yas--get-snippet-tables)))
           (match-snippets (seq-filter (lambda (s) (acm-candidate-fuzzy-search keyword s)) snippets)))
      (dolist (snippet (cl-subseq match-snippets 0 (min (length match-snippets) acm-backend-yas-candidates-number)))
        (cl-pushnew (list :key snippet
                          :icon "snippet"
                          :label snippet
                          :display-label snippet
                          :annotation "Yas-Snippet"
                          :backend "yas")
                    candidates))
      (acm-candidate-sort-by-prefix keyword candidates))))

(advice-add 'acm-backend-yas-candidates :override #'acm-backend-yas-candidates-advice)

(defun acm-backend-yas-get-snippet-advice (candidate)
  (let* (;; (templates (yas--all-templates (yas--get-snippet-tables)))
         (template (cl-mapcan (lambda (table)
                                (yas--fetch table (plist-get candidate :label)))
                              (yas--get-snippet-tables))))
    (yas--template-content (cdr (car template)))))

(advice-add 'acm-backend-yas-get-snippet :override #'acm-backend-yas-get-snippet-advice)

yas–get-snippet-tables 太耗费性能了,这样弄不卡手吗?