company-lsp lsp-mode 啥关系啊,怎么补全啊,eslint server也连接上了

  1. M-x company-lsp 提示 cannot complete at point

  2. 直接执行M-x lspimage

  3. M-x completion-at-point 没反应

  4. github还说company-lsp不支持了

  5. 抄配置不好使

(use-package lsp-mode
  :ensure t
  :init
  (setq lsp-keymap-prefix "C-c l")
  :hook (
  (prog-mode-hook . lsp)
  (lsp-mode . lsp-enable-which-key-integration)
  )
:commands lsp)


;; optionally
(use-package lsp-ui :ensure t :commands lsp-ui-mode)
;; if you are helm user
(use-package helm-lsp :ensure t :commands helm-lsp-workspace-symbol)

所以我现在就想知道lsp补全要怎么搞。。他这个文档翻完了就看见个Code completion - company-capf / completion-at-point

1 个赞

要不你用下我的配置?

(use-package company
  :hook
  ((c++-mode python-mode clojure-mode web-mode) . company-mode)
  :config
  ;; (setq company-backends '(company-lsp company-files company-keywords)
  (setq company-backends '(company-capf company-files company-keywords)
	company-idle-delay 0.2)
  :commands company-mode)

(use-package lsp-mode
  :hook
  ((c++-mode python-mode clojure-mode web-mode) . lsp)
  :config
  (setq lsp-enable-snippet nil)
  :commands lsp)

另外要去下相应的语言服务器 lsp-mode才能正常工作,比如c++用的是clangd

感谢。下载了,也连上了,但是我看你的配置,没看到lsp-mode是怎么和company产生关系的,company走的company-bakcends里面没lsp的事啊。。这个lsp怎么补全的

我不太清楚,我想是要company-lsp来做后端,但是我发现company-lsp好像被废弃了,我就去问了一下,上面的帖子就是解决方法

lsp-mode通过设置lsp-enable-completion-at-point为t(默认)提供capf,company通过company-capf使用之。

capf是emacs内置机制。

1 个赞

提供 capf 是什么意思呀?是指 lsp 对 completion-at-point-functions 变量进行设置吗