From 637c2437f01775fa0f10b5bac451e3b949d47077 Mon Sep 17 00:00:00 2001 From: Alan Pearce Date: Sun, 28 Mar 2021 20:01:45 +0200 Subject: Emacs: enable company-tide as secondary backend for typescript use a macro to set up secondary company backend s by mode --- user/emacs/init.el | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/user/emacs/init.el b/user/emacs/init.el index 680bfead..e5b2f9f5 100644 --- a/user/emacs/init.el +++ b/user/emacs/init.el @@ -516,6 +516,18 @@ _p_rev _u_pper _=_: upper/lower _r_esolve (use-package all-the-icons :config (setq all-the-icons-color-icons nil)) +(defmacro company-set-secondary-backend-for-mode (mode backend) + (let ((hook-fn-name (intern (concat "ap/set-local-backend-" (symbol-name mode))))) + `(progn + (defun ,hook-fn-name () + (make-local-variable 'company-backends) + (setq company-backends (append + (list + 'company-tabnine + ,backend) + (copy-tree (remq 'company-tabnine company-backends))))) + (add-hook ',(derived-mode-hook-name mode) #',hook-fn-name)))) + (use-package company-tabnine :commands (company-tabnine) :after (company) @@ -945,6 +957,9 @@ _p_rev _u_pper _=_: upper/lower _r_esolve (use-package tide :after (typescript-mode company flycheck) :ghook ('typescript-mode-hook #'tide-setup) + :init (progn + (setq tide-completion-setup-company-backend nil) + (company-set-secondary-backend-for-mode typescript-mode 'company-tide)) :config (progn ;; loading this package has the annoying effect of breaking my company configuration ;; upstream fix: https://github.com/ananthakumaran/tide/pull/384 -- cgit 1.4.1