Improve :company-backend setting according to #125

(set! :company-backend MODES &rest BACKENDS)
This commit is contained in:
Henrik Lissner 2017-06-27 23:05:14 +02:00
parent 705d951af9
commit a7dc91e7bf
No known key found for this signature in database
GPG key ID: 5F6C0EA160557395

View file

@ -1,16 +1,18 @@
;;; completion/company/config.el -*- lexical-binding: t; -*- ;;; completion/company/config.el -*- lexical-binding: t; -*-
(def-setting! :company-backend (modes backends) (def-setting! :company-backend (modes &rest backends)
"Register company BACKENDS to MODES." "Prepends BACKENDS to `company-backends' in major MODES.
(let ((backends (doom-enlist (doom-unquote backends))))
`(progn MODES should be one major-mode symbol or a list of them."
,@(cl-loop for mode in (doom-enlist (doom-unquote modes)) `(progn
for def-name = (intern (format "doom--init-company-%s" mode)) ,@(cl-loop for mode in (doom-enlist (doom-unquote modes))
collect `(defun ,def-name () for def-name = (intern (format "doom--init-company-%s" mode))
(when (eq major-mode ',mode) collect `(defun ,def-name ()
(require 'company) (when (and (eq major-mode ',mode)
(cl-pushnew ',backends company-backends :test #'equal))) ,(not (eq backends '(nil))))
collect `(add-hook! ,mode #',def-name))))) (require 'company)
(setq company-backends (append (list ,@backends) company-backends))))
collect `(add-hook! ,mode #',def-name))))
;; ;;