feature/file-templates: refactor & lazy load

This commit is contained in:
Henrik Lissner 2018-02-20 02:16:07 -05:00
parent 51a9e670ad
commit 2dd2ff7ff2
No known key found for this signature in database
GPG key ID: 5F6C0EA160557395

View file

@ -12,13 +12,22 @@
;; ;;
(def-package! autoinsert ; built-in (def-package! autoinsert ; built-in
:defer 1 :commands (auto-insert-mode auto-insert)
:init :init
(setq auto-insert-query nil ; Don't prompt before insertion (setq auto-insert-query nil ; Don't prompt before insertion
auto-insert-alist nil) ; Tabula rasa auto-insert-alist nil) ; Tabula rasa
(after! yasnippet (after! yasnippet
(push '+file-templates-dir yas-snippet-dirs)) (push '+file-templates-dir yas-snippet-dirs))
;; load autoinsert as late as possible
(defun +file-templates|init ()
(and (not buffer-read-only)
(bobp) (eobp)
(remove-hook 'find-file-hook #'+file-templates|init)
(auto-insert)))
(add-hook 'find-file-hook #'+file-templates|init)
:config :config
(auto-insert-mode 1) (auto-insert-mode 1)
@ -41,19 +50,24 @@
(defun +file-templates-add (args) (defun +file-templates-add (args)
(cl-destructuring-bind (regexp trigger &optional mode project-only-p) args (cl-destructuring-bind (regexp trigger &optional mode project-only-p) args
(define-auto-insert (push `(,regexp . (lambda () (+file-templates--expand ,trigger ',mode ,project-only-p)))
regexp auto-insert-alist)))
(if trigger
(vector
`(lambda () (+file-templates--expand ,trigger ',mode ,project-only-p)))
#'ignore))))
(let ((doom (concat "/" (regexp-opt '(".emacs.d" ".doom.d" "doom-emacs" "doom")) "/.*"))) (mapc #'+file-templates-add
(mapc #'+file-templates-add (let ((doom (concat "/" (regexp-opt '(".emacs.d" ".doom.d" "doom-emacs" "doom")) "/.*")))
;; General `(;; General
`(("/\\.gitignore$" "__" gitignore-mode) ("/\\.gitignore$" "__" gitignore-mode)
("/Dockerfile$" "__" dockerfile-mode) ("/Dockerfile$" "__" dockerfile-mode)
("/docker-compose.yml$" "__" yaml-mode) ("/docker-compose.yml$" "__" yaml-mode)
("/Makefile$" "__" makefile-gmake-mode)
;; elisp
("\\.el$" "__initfile" emacs-lisp-mode)
("/.dir-locals.el$" nil)
("-test\\.el$" "__" emacs-ert-mode)
(,(concat doom "/.+\\.el$") "__doom-module" emacs-lisp-mode)
(,(concat doom "/packages\\.el$") "__doom-packages" emacs-lisp-mode)
(,(concat doom "/test/.+\\.el$") "__doom-test" emacs-lisp-mode)
(snippet-mode "__" snippet-mode)
;; C/C++ ;; C/C++
("\\.h$" "__h" c-mode) ("\\.h$" "__h" c-mode)
("\\.c$" "__c" c-mode) ("\\.c$" "__c" c-mode)
@ -61,25 +75,19 @@
("\\.\\(cc\\|cpp\\)$" "__cpp" c++-mode) ("\\.\\(cc\\|cpp\\)$" "__cpp" c++-mode)
("/main\\.\\(cc\\|cpp\\)$" "__main.cpp" c++-mode) ("/main\\.\\(cc\\|cpp\\)$" "__main.cpp" c++-mode)
("/win32_\\.\\(cc\\|cpp\\)$" "__winmain.cpp" c++-mode) ("/win32_\\.\\(cc\\|cpp\\)$" "__winmain.cpp" c++-mode)
("/Makefile$" "__" makefile-gmake-mode) ;; go
;; Elisp
("\\.el$" "__initfile" emacs-lisp-mode)
("/.dir-locals.el$" nil)
("-test\\.el$" "__" emacs-ert-mode)
(,(concat doom "/.+\\.el$") "__doom-module" emacs-lisp-mode)
(,(concat doom "/packages\\.el$") "__doom-packages" emacs-lisp-mode)
(,(concat doom "/test/.+\\.el$") "__doom-test" emacs-lisp-mode)
(snippet-mode "__" snippet-mode)
;; Go
("\\.go$" "__.go" go-mode) ("\\.go$" "__.go" go-mode)
("/main\\.go$" "__main.go" go-mode t) ("/main\\.go$" "__main.go" go-mode t)
;; HTML ;; web-mode
("\\.html$" "__.html" web-mode) ("\\.html$" "__.html" web-mode)
("\\.scss$" "__" scss-mode)
("/master\\.scss$" "__master.scss" scss-mode)
("/normalize\\.scss$" "__normalize.scss" scss-mode)
;; java ;; java
("/src/.+/.+\\.java$" "__" java-mode) ("/src/.+\\.java$" "__" java-mode)
("/main\\.java$" "__main" java-mode) ("/main\\.java$" "__main" java-mode)
("/build\\.gradle$" "__build.gradle" android-mode) ("/build\\.gradle$" "__build.gradle" android-mode)
;; Javascript ;; javascript
("\\.\\(json\\|jshintrc\\)$" "__" json-mode) ("\\.\\(json\\|jshintrc\\)$" "__" json-mode)
("/package\\.json$" "__package.json" json-mode) ("/package\\.json$" "__package.json" json-mode)
("/bower\\.json$" "__bower.json" json-mode) ("/bower\\.json$" "__bower.json" json-mode)
@ -112,10 +120,6 @@
;; Rust ;; Rust
("/main\\.rs$" "__main.rs" rust-mode) ("/main\\.rs$" "__main.rs" rust-mode)
("/Cargo.toml$" "__Cargo.toml" rust-mode) ("/Cargo.toml$" "__Cargo.toml" rust-mode)
;; SCSS
("\\.scss$" "__" scss-mode)
("/master\\.scss$" "__master.scss" scss-mode)
("/normalize\\.scss$" "__normalize.scss" scss-mode)
;; Slim ;; Slim
("/\\(index\\|main\\)\\.slim$" "__" slim-mode) ("/\\(index\\|main\\)\\.slim$" "__" slim-mode)
;; Shell scripts ;; Shell scripts