46 lines
1.8 KiB
EmacsLisp
46 lines
1.8 KiB
EmacsLisp
;;; 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)))
|