From eb3a272a881e463b999da5c71f15fbce618b7335 Mon Sep 17 00:00:00 2001 From: Zedhugh Chen Date: Wed, 25 Mar 2026 21:26:27 +0800 Subject: [PATCH] yasnippet: compactible with company-mode --- lisp/init-yasnippet.el | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/lisp/init-yasnippet.el b/lisp/init-yasnippet.el index 6f1696c..7f53d19 100644 --- a/lisp/init-yasnippet.el +++ b/lisp/init-yasnippet.el @@ -23,6 +23,31 @@ yas-minor-mode-map "yasnippet") +(defvar creature/company-with-yasnippet t + "Make every `company-backend' with `company-yasnippet'.") + +(defun creature/add-snippet (backend) + "Add `company-yasnippet' to echo backend in `company-backends'." + (if (and (listp backend) (member 'company-yasnippet backend)) + backend + (append (if (consp backend) backend (list backend)) + '(:with company-yasnippet)))) + +(defun creature/handle-company-backends () + "Handle `company-yasnippet' in `company-backends'." + (set (make-local-variable 'company-backends) + (mapcar #'creature/add-snippet company-backends))) + +(defun creature/yasnippet-setup () + "Setup yasnippet." + (when (and (bound-and-true-p company-mode) creature/company-with-yasnippet) + (with-current-buffer (buffer-name) + (run-with-timer 0.5 nil #'creature/handle-company-backends)))) + +(with-eval-after-load 'yasnippet + ;; (setq yas-indent-line 'auto) ;don't indent for snippet + (add-hook 'yas-minor-mode-hook #'creature/yasnippet-setup)) + (lazy-load-global-keys '(("w" . aya-create) ("TAB" . aya-expand)