doomemacs/core/defuns/macros-company.el

25 lines
1,007 B
EmacsLisp
Raw Normal View History

2015-06-15 09:05:52 +02:00
;;; macros-company.el --- macros for company-mode
;; for ../core-company.el
;;;###autoload
(defmacro def-company-backend! (hooks backends)
2015-06-15 09:05:52 +02:00
"Register a company backend for a mode."
(let* ((hooks (if (listp hooks) hooks (list hooks)))
2016-05-20 22:37:30 -04:00
(def-name (intern (format "doom--init-company-%s"
2016-05-12 02:53:31 -04:00
(mapconcat 'identity (mapcar 'symbol-name hooks) "-"))))
(quoted (eq (car-safe backends) 'quote)))
2015-06-15 09:05:52 +02:00
`(progn
(defun ,def-name ()
2016-06-04 22:31:01 -04:00
(require 'company)
2015-06-15 09:05:52 +02:00
(set (make-local-variable 'company-backends)
(append '((,@(mapcar (lambda (backend)
(if quoted
backend
(intern (format "company-%s" backend))))
2016-02-26 00:08:41 -05:00
(if quoted (cadr backends) backends))))
2015-06-15 09:05:52 +02:00
company-backends)))
(add-hook! ,hooks ',def-name))))
2015-06-15 09:05:52 +02:00
(provide 'macros-company)
;;; macros-company.el ends here