;;; tools/chezmoi/config.el -*- lexical-binding: t; -*- (use-package! chezmoi :commands (chezmoi-write chezmoi-magit-status chezmoi-diff chezmoi-ediff chezmoi-find chezmoi-write-files chezmoi-open-other chezmoi-template-buffer-display chezmoi-mode) :config ;; Company integration (when (featurep! :completion company) (defun +chezmoi--company-backend-h () (require 'chezmoi-company) (if chezmoi-mode (add-to-list 'company-backends 'chezmoi-company-backend) (delete 'chezmoi-company-backend 'company-backends))) (add-hook 'chezmoi-mode-hook #'+chezmoi--company-backend-h)) ;; Integrate with evil mode by toggling template display when entering insert mode. (when (featurep! :editor evil) (defun +chezmoi--evil-insert-state-enter-h () "Run after evil-insert-state-entry." (chezmoi-template-buffer-display nil (point)) (remove-hook 'after-change-functions #'chezmoi-template--after-change 1)) (defun +chezmoi--evil-insert-state-exit-h () "Run after evil-insert-state-exit." (chezmoi-template-buffer-display nil) (chezmoi-template-buffer-display t) (add-hook 'after-change-functions #'chezmoi-template--after-change nil 1)) (defun +chezmoi--evil-h () (if chezmoi-mode (progn (add-hook 'evil-insert-state-entry-hook #'+chezmoi--evil-insert-state-enter-h nil 1) (add-hook 'evil-insert-state-exit-hook #'+chezmoi--evil-insert-state-exit-h nil 1)) (progn (remove-hook 'evil-insert-state-entry-hook #'+chezmoi--evil-insert-state-enter-h 1) (remove-hook 'evil-insert-state-exit-hook #'+chezmoi--evil-insert-state-exit-h 1)))) (add-hook 'chezmoi-mode-hook #'+chezmoi--evil-h)))