2015-06-15 09:05:52 +02:00
|
|
|
;;; macros-company.el --- macros for company-mode
|
|
|
|
;; for ../core-company.el
|
|
|
|
|
|
|
|
;;;###autoload
|
2016-04-23 22:08:46 -04:00
|
|
|
(defmacro def-company-backend! (hooks backends)
|
2015-06-15 09:05:52 +02:00
|
|
|
"Register a company backend for a mode."
|
2016-04-23 22:08:46 -04:00
|
|
|
(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) "-"))))
|
2016-04-23 22:08:46 -04:00
|
|
|
(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)))
|
2016-04-23 22:08:46 -04:00
|
|
|
(add-hook! ,hooks ',def-name))))
|
2015-06-15 09:05:52 +02:00
|
|
|
|
|
|
|
(provide 'macros-company)
|
|
|
|
;;; macros-company.el ends here
|