From 97b42c449bedf0e7ce6a602aa0dd85797e49c488 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sun, 17 Jun 2018 21:40:32 +0200 Subject: [PATCH] Allow set-company-backend! to unset backends Passing nil as its second argument will unset previously set backends. --- modules/completion/company/autoload.el | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/modules/completion/company/autoload.el b/modules/completion/company/autoload.el index dfbcc6746..d9934721b 100644 --- a/modules/completion/company/autoload.el +++ b/modules/completion/company/autoload.el @@ -6,15 +6,20 @@ MODES should be one major-mode symbol or a list of them." (dolist (mode (doom-enlist modes)) - (let ((def-name (intern (format "+company|init-%s" mode)))) - (fset def-name - (lambda () (when (or (eq major-mode mode) - (and (boundp mode) (symbol-value mode))) - (require 'company) - (make-variable-buffer-local 'company-backends) - (dolist (backend backends) - (cl-pushnew backend company-backends :test #'equal))))) - (add-hook (intern (format "%s-hook" mode)) def-name)))) + (let ((fn (intern (format "+company|init-%s" mode))) + (hook (intern (format "%s-hook" mode)))) + (cond (backends + (fset fn + (lambda () (when (or (eq major-mode mode) + (and (boundp mode) (symbol-value mode))) + (require 'company) + (make-variable-buffer-local 'company-backends) + (dolist (backend backends) + (cl-pushnew backend company-backends :test #'equal))))) + (add-hook hook fn)) + (t + (fmakunbound fn) + (remove-hook hook fn)))))) ;; FIXME obsolete :company-backend ;;;###autoload