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; -*-
(def-setting! :company-backend (modes backends)
"Register company BACKENDS to MODES."
(let ((backends (doom-enlist (doom-unquote backends))))
`(progn
,@(cl-loop for mode in (doom-enlist (doom-unquote modes))
for def-name = (intern (format "doom--init-company-%s" mode))
collect `(defun ,def-name ()
(when (eq major-mode ',mode)
(require 'company)
(cl-pushnew ',backends company-backends :test #'equal)))
collect `(add-hook! ,mode #',def-name)))))
(def-setting! :company-backend (modes &rest backends)
"Prepends BACKENDS to `company-backends' in major MODES.
MODES should be one major-mode symbol or a list of them."
`(progn
,@(cl-loop for mode in (doom-enlist (doom-unquote modes))
for def-name = (intern (format "doom--init-company-%s" mode))
collect `(defun ,def-name ()
(when (and (eq major-mode ',mode)
,(not (eq backends '(nil))))
(require 'company)
(setq company-backends (append (list ,@backends) company-backends))))
collect `(add-hook! ,mode #',def-name))))
;;