doomemacs/core/defuns/macros-company.el
2016-05-20 22:37:30 -04:00

24 lines
979 B
EmacsLisp

;;; macros-company.el --- macros for company-mode
;; for ../core-company.el
;;;###autoload
(defmacro def-company-backend! (hooks backends)
"Register a company backend for a mode."
(let* ((hooks (if (listp hooks) hooks (list hooks)))
(def-name (intern (format "doom--init-company-%s"
(mapconcat 'identity (mapcar 'symbol-name hooks) "-"))))
(quoted (eq (car-safe backends) 'quote)))
`(progn
(defun ,def-name ()
(set (make-local-variable 'company-backends)
(append '((,@(mapcar (lambda (backend)
(if quoted
backend
(intern (format "company-%s" backend))))
(if quoted (cadr backends) backends))))
company-backends)))
(add-hook! ,hooks ',def-name))))
(provide 'macros-company)
;;; macros-company.el ends here