diff --git a/init.example.el b/init.example.el index 809dc3e2f..a864d3e64 100644 --- a/init.example.el +++ b/init.example.el @@ -63,6 +63,7 @@ vc ; version-control and Emacs, sitting in a tree :tools + ;ansible ;docker editorconfig ; let someone else argue about tabs vs spaces ;ein ; tame Jupyter notebooks with emacs diff --git a/modules/lang/data/config.el b/modules/lang/data/config.el index fef54fb72..1a7378093 100644 --- a/modules/lang/data/config.el +++ b/modules/lang/data/config.el @@ -38,10 +38,6 @@ ;; ;; Frameworks -(def-project-mode! +data-ansible-mode - :modes (yaml-mode) - :files ("roles/")) - (def-project-mode! +data-vagrant-mode :files ("Vagrantfile")) diff --git a/modules/tools/ansible/config.el b/modules/tools/ansible/config.el new file mode 100644 index 000000000..d44a4b8b3 --- /dev/null +++ b/modules/tools/ansible/config.el @@ -0,0 +1,25 @@ +;;; tools/ansible/config.el -*- lexical-binding: t; -*- + +(def-package! ansible + :commands ansible::auto-decrypt-encrypt + :init + (put 'ansible::vault-password-file 'safe-local-variable #'stringp) + :config + (setq ansible::section-face 'font-lock-variable-name-face + ansible::task-label-face 'font-lock-doc-face) + (map! :map ansible::key-map + :localleader + :n "d" #'ansible::decrypt-buffer + :n "e" #'ansible::encrypt-buffer + :n "h" #'ansible-doc)) + +(after! ansible-doc + (set-evil-initial-state! '(ansible-doc-module-mode) 'emacs)) + +(def-package! jinja2-mode + :mode "\\.j2$") + +(def-project-mode! +ansible-yaml-mode + :modes (yaml-mode) + :add-hooks (ansible ansible::auto-decrypt-encrypt ansible-doc-mode) + :files ("roles/")) diff --git a/modules/tools/ansible/packages.el b/modules/tools/ansible/packages.el new file mode 100644 index 000000000..0601eb054 --- /dev/null +++ b/modules/tools/ansible/packages.el @@ -0,0 +1,10 @@ +;; -*- no-byte-compile: t; -*- +;;; tools/ansible/packages.el + +(package! yaml-mode) +(package! ansible) +(package! ansible-doc) +(package! jinja2-mode) + +(when (featurep! :completion company) + (package! company-ansible))