我明明添加了这两个backends,但是却只有company-irony自动触发。 但是我卸载company-irony之后,company-c-headers反倒能自动触发了。 我的配置:
(when (maybe-require-package 'company-c-headers)
(after-load 'company
(add-hook 'c-mode-common-hook
(lambda () (sanityinc/local-push-company-backend 'company-c-headers)))))
;;; Use irony-mode to support auto-complete
(unless *is-macOS*
(when (maybe-require-package 'irony)
(add-hook 'c-mode-hook 'irony-mode)
(add-hook 'c++-mode-hook 'irony-mode)
(add-hook 'irony-mode-hook 'irony-cdb-autosetup-compile-options)))
(after-load 'irony
(diminish 'irony-mode))
;; Windows tweaks. Please uncomment to use (DO NOT uncomment this line).
;;
;; (when (boundp 'w32-pipe-read-delay)
;; (setq w32-pipe-read-delay 0))
;; Set the buffer size to 64K on Windows (from the original 4K)
;; (when (boundp 'w32-pipe-buffer-size)
;; (setq irony-server-w32-pipe-buffer-size (* 64 1024)))
;; Use company
(when (package-installed-p 'irony)
(when (maybe-require-package 'company-irony)
(after-load 'company
(add-hook 'c-mode-common-hook
(lambda () (sanityinc/local-push-company-backend 'company-irony))))))
company-backends的值:
Value: (company-c-headers company-irony
(company-capf company-dabbrev-code)
company-dabbrev)
sanityinc/local-push-copmany-backend的代码:
(defun sanityinc/local-push-company-backend (backend)
"Add BACKEND to a buffer-local version of `company-backends'."
(set (make-local-variable 'company-backends)
(append (list backend) company-backends)))
谢谢