company 和 lsp的原理性问题,求大佬解答

在2022年,company-mode 插件与lsp-mode 的关系是什么?

  1. 在配置emcas中,使我困惑的是:使用了lsp-mode之后,为什么多数人额外配置了company,这样的意义是什么? 根据我的初步理解,company仍旧是采用的基于语义,缩写,拼写等的补全机制。
(use-package company
  :ensure t
  :init
  (add-hook 'after-init-hook 'global-company-mode)
  :config
  (setq company-minimum-prefix-length 1)
  (setq company-idle-delay 0)
  (push '(company-semantic :with company-ispell) company-backends)
  )

根据emacs-lsp的官方教程(如下),lsp-mode与company并没有什么必须的依赖关系,那么 company-lsp的目的是什么?

(use-package lsp-mode
  :ensure t
  :init (setq lsp-keymap-prefix "C-c l")
  :hook ((python-mode . lsp))
  :commands lsp)
  1. 2022年,使用auctex+reftex写latex是否过时?是否可以使用lsp-mode完全替代? 如果不过时,可否有大神指出以下配置的问题。

(use-package tex
  :ensure auctex
  :config
  (setq TeX-view-program-list '(("Evince" "evince %o")))
  (setq TeX-engine 'xelatex)
  )

(use-package reftex
  :ensure t
  :init
  (add-hook 'LaTeX-mode-hook 'turn-on-reftex)
  :config
  (setq reftex-plug-into-AUCTeX t)
  (setq reftex-enable-partial-scans t)
  (setq reftex-save-parse-info t)
  (setq reftex-use-multiple-selection-buffers t)
  )

如果过时,请指导一下emacs的latex语言服务器 的配置。


我的工作平台是ubuntu20.04, emacs28

  • company 是作为补全的前端,也就是负责怎么展现补全的样子,比如补全列表有几个元素,用什么颜色
  • lsp 作为补全的后端,负责提供补全的具体内容是什么
  • company-lsp 已经被淘汰,现在只要用 company-capf
2 个赞

一个是前端展示,一个是后端提供内容,完全不冲突。而且lsp-mode能覆盖多大的使用场景呢?company自身携带了不少补全方便使用。建议用之前先读一读文档呢。

感谢! 请问company-capf的作用是什么了,将多个后端的补全结果综合起来?? 具体的如何与lsp-mode结合起来呢?

lsp-mode 把补全后端注册到 completion-at-point-functions (capf),company-capf 从 capf 获得后端。

corfu 就直接只支持通过 capf 获得补全了。

你用 lsp 写 latex 还得另外装 server,用 auctex 不用额外装东西,而且 latex 的 lsp server 也提供不了多少东西,本质上还是用正则那套,不如 auctex 还可以渲染公式预览。

1 个赞