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

在company -mode和lsp-bridge 会同时补全,补全的弹出窗口会重叠。除了手动M+company mode disable 关闭外。怎么样直接在init.el中设置关闭company -mode?我设置(setq global-company-mode nil) 好像不起作用。

直接删除 company-mode 就好了, 如果缺啥补全后端可以直接提 issue .

company/corfu 这种依赖 capf 的补全前端以后都应该废弃, 因为 capf 本质上根本就解决不了卡顿的问题(主要原因就是单线程和GC的限制)。

1 个赞

今天回顾了一下 lsp-bridge 的开发提交历史, 72位开发者提交了1338个commit, 反馈了497个issue, 合并了493个PR。

感谢社区开发者, 才有可能让 lsp-bridge 从2022-05-01构思到2023-01-08现在的成熟使用。 :grinning:

12 个赞

如果用的是doom的话, 可以这样设, 其他的参考这个设置就可以了

(after! company
  (setq company-global-modes '(not erc-mode circe-mode message-mode help-mode gud-mode vterm-mode c-mode c++-mode python-mode emacs-lisp-mode verilog-mode org-mode))
  )

1 个赞

猫哥这 youtube 的头像是20年前的吧。偷笑。 :stuck_out_tongue_winking_eye: :stuck_out_tongue_winking_eye:

2011年的,岁月是把杀猪刀,不堪回首。

由于各种原因,一个go的项目使用了以下目录结构

~/Workspace/project
~/Workspace/project/src
~/Workspace/project/src/mod/foobar.go

因而需要projectile工作在~/Workspace/project, lsp-bridge工作在~/Workspace/project/src,在配置中加入

(use-package lsp-bridge
  :custom
  (lsp-bridge-get-project-path-by-filepath
   (lambda (filepath)
     (let ((vcdir (vc-call-backend (vc-responsible-backend filepath) 'root filepath)))
       (if (not (string-empty-p vcdir))
           (if (file-exists-p (concat vcdir "src/go.mod"))
               (expand-file-name (concat vcdir "src"))
             vcdir)
         filepath)))))

但我觉得这样太死板了,有没有好的方法呢?

  • Archlinux
  • Emacs 28.2(Emacs 30 上也可以复现,并且更明显)

c++文件中输入快了会感觉到lsp-bridge的反应比输入慢一拍,会有点卡手

Peek 2023-01-12 08-02

这是特性吗?

emacs啥分支?开了日志选项了吗?

啥桌面环境,特别是不是pgtk版本?

而且开发版我不建议用,我去年发现emacs的pgtk版本在frame现实合隐藏有明显的性能问题。

  • archlinux 官方仓库中提供的emacs,未开启nativecomppgtk
  • KDE Plasma
  • 刚才没有开启日志选项,现在开启后问题更明显

Peek 2023-01-12 09-24

日志见此:

1 个赞

开日志主要是看是不是你的 LSP Server有啥问题没, 默认肯定不能开。

第一, 你要测试一下 emacs -Q, 避免配置影响

第二, 你要看一下, 是不是原来流程, 最近变卡和你最近升级系统是否有关?

第三, 如果都不是上面问题, 就要看 frame 相关的性能影响

奇怪,这个问题在lisp-mode中不存在,可是在c++-mode中很突出 :thinking:

我这里C++工程也会有类似的问题,不过我用的是ccls。我觉得就是Server的原因,而不是配置的原因,为啥会这么想是因为我的lsp相关配置很复杂,但python那边pyright从来没觉得慢过,这种事情只在C++出现

2 个赞

我也用的cclsclangd总是会 trying to get preamble for non-added document

但我测试了一下,clangd也有这个问题

1 个赞
  1. emacs -Q测试过了,问题仍然存在,和配置无关
  2. 原来没太注意,应该是流畅的,但最近有点卡
  3. 其他mode没有问题,只有c++-mode会卡顿,所以和 frame 也没关系吧

所以应该是lsp-bridge与 c++ 的 LSP Server 之间的信息传输有问题?(胡乱猜的)

先发issue吧,我有空看看,不一定修的了

1 个赞

lsp-bridge 在python中,导入库后np.在输入点后会补全函数如array等么?

from numpy import np

后续为了输入np.array()

我输入点之后的弹出窗如下:只有5条。没有看到你的截图中的候选项?

我的配置如下:

(require 'posframe)                                                         ;; ;;
(require 'markdown-mode)
(add-to-list 'load-path "/Users/apple/.emacs.d/elpa/lsp-bridge") ;;   ;; ;; ;; ;;

(require 'yasnippet)                                             ;; ;; ;; ;; ;;
(yas-global-mode 1)                                              ;; ;; ;; ;; ;;
                                                                 ;;   ;; ;; ;; ;;
(require 'lsp-bridge)                                            ;;   ;; ;; ;; ;;

 (setq lsp-bridge-default-mode-hooks                                  ;; ;; ;; ;;
        (remove 'org-mode-hook lsp-bridge-default-mode-hooks))        ;; ;; ;; ;;

(setq lsp-bridge-python-command "/Users/apple/miniforge3/bin/python") ;; ;; ;; ;;

(global-lsp-bridge-mode)                                         ;;   ;; ;; ;; ;;
;(lsp-bridge-mode 1)

(setq lsp-bridge-org-babel-lang-list '("python"))                     ;; ;; ;; ;;
                                                                      ;; ;; ;; ;;
(setq lsp-bridge-toggle-sdcv-helper t)                                ;; ;; ;; ;;
(setq lsp-bridge-toggle-engine-helper t)                              ;; ;; ;; ;;

(setq acm-frame-background-light-color "#eef4f7")

(setq lsp-bridge-diagnostics-error-face nil)

(setq lsp-bridge-python-lsp-server "pyright")

(setq acm-enable-quick-access t) 

你的弹出窗口好像和我的不一样?