doomemacs/init/init-auto-insert.el

91 lines
5.1 KiB
EmacsLisp
Raw Normal View History

2014-12-05 17:28:03 -05:00
(use-package autoinsert
:init (auto-insert-mode 1)
:config
(progn
;; (setq auto-insert-directory "%/.emacs.d/templates/")
(setq auto-insert-query nil) ; Don't prompt before insertion
(setq auto-insert-alist '())))
2014-12-05 17:28:03 -05:00
(after "yasnippet"
2015-05-12 01:04:38 -04:00
(defun add-template (regexp-or-major-mode uuid yas-mode &optional project-only)
(define-auto-insert regexp-or-major-mode
`(lambda () (insert-template ,uuid ',yas-mode ,project-only))))
2014-12-05 17:28:03 -05:00
2015-05-12 01:04:38 -04:00
(defun insert-template (uuid mode &optional project-only)
"Expand snippet template in MODE by its UUID"
2015-05-12 01:04:38 -04:00
(unless (or (and project-only (not (project-p)))
(not (or (eq major-mode mode)
(symbol-value mode))))
(insert uuid)
(yas-expand-from-trigger-key)
2015-05-28 22:24:43 -04:00
(if (string-equal uuid (s-trim (buffer-string)))
2015-05-12 01:04:38 -04:00
(erase-buffer)
(evil-insert-state 1))))
2015-05-12 01:04:38 -04:00
(add-template "/\\.gitignore$" "%%" 'gitignore-mode)
;; C/C++
2015-05-12 01:04:38 -04:00
(add-template "/Makefile$" "%%" 'makefile-gmake-mode)
(add-template "/main\\.\\(cc\\|cpp\\)$" "%main.cpp%" 'c++-mode)
(add-template "/win32_\\.\\(cc\\|cpp\\)$" "%winmain.cpp%" 'c++-mode)
(add-template "\\.\\([Hh]\\|hpp\\)$" "%.h%" 'c++-mode)
(add-template "\\.\\([Cc]\\|cc\\|cpp\\)$" "%.cpp%" 'c++-mode)
;; Shell scripts
2015-05-12 01:04:38 -04:00
(add-template "\\.z?sh$" "%%" 'sh-mode)
2015-04-22 20:48:28 -04:00
;; Ruby
2015-05-12 01:04:38 -04:00
(add-template "/spec_helper\\.rb$" "%helper%" 'rspec-mode t)
(add-template "_spec\\.rb$" "%%" 'rspec-mode t)
(add-template "/\\.rspec$" "%.rspec%" 'rspec-mode)
(add-template "/Rakefile$" "%Rakefile%" 'ruby-mode t)
(add-template "/Gemfile$" "%Gemfile%" 'ruby-mode t)
;; (add-template "\\.gemspec$" "%.gemspec%" 'ruby-mode t)
(add-template "/lib/.+\\.rb$" "%module%" 'ruby-mode t)
(add-template "\\.rb$" "%%" 'ruby-mode)
2015-04-22 20:48:28 -04:00
;; ;; Python
2015-05-12 01:04:38 -04:00
;; (add-template "tests?/test_.+\\.py$" "%%" 'nose-mode)
;; (add-template "/setup\\.py$" "%setup%" 'python-mode)
(add-template "\\.py$" "%%" 'python-mode)
2015-04-22 20:48:28 -04:00
;; ;; PHP
2015-05-12 01:04:38 -04:00
;; (add-template "\\.class\\.php$" "%class%" 'php-mode)
;; (add-template "\\.php$" "%%" 'php-mode)
2015-04-22 20:48:28 -04:00
;; ;; Markdown
2015-05-12 01:04:38 -04:00
(add-template "/README\\.md$" "%README.md%" 'markdown-mode)
;; (add-template "/_posts/.+\\.md$" "%jekyll-post" 'markdown-mode)
;; (add-template "/_layouts/.+\\.html$" "%jekyll-layout%" 'web-mode)
2015-04-22 20:48:28 -04:00
;; ;; Javascript
2015-05-28 22:24:43 -04:00
(add-template "\\.lbaction/Contents/Info.plist$" "%Info.plst%" 'lb6-mode)
(add-template "\\.lbaction/.+/\\(default\\|suggestions\\)\\.js$" "%default.js%" 'lb6-mode)
2015-05-12 01:04:38 -04:00
;; (add-template "/package\\.json$" "%package.json%" 'json-mode)
;; (add-template "\\.\\(json\\|jshintrc\\)$" "%%" 'json-mode)
2015-04-22 20:48:28 -04:00
;; ;; SCSS
2015-05-12 01:04:38 -04:00
;; (add-template "/master\\.scss$" "%master%" 'scss-mode)
;; (add-template "/normalize\\.scss$" "%normalize%" 'scss-mode)
;; (add-template "\\.scss$" "%%" 'scss-mode)
2015-04-22 20:48:28 -04:00
;; ;; HTML
2015-05-12 01:04:38 -04:00
;; (add-template "\\.html$" "%%" 'web-mode)
2015-04-22 20:48:28 -04:00
;; Lua
2015-05-12 01:04:38 -04:00
;; (add-template "\\.love/main\\.lua$" "%love.main%" 'lua-mode)
(add-template "/conf\\.lua$" "%love.conf%" 'love-mode)
;; (add-template "\\.lua$" "%%" 'lua-mode)
2015-04-22 20:48:28 -04:00
;; ;; Java
2015-05-12 01:04:38 -04:00
(add-template "/src/.+/.+\\.java$" "%%" 'java-mode)
(add-template "/build\\.gradle$" "%gradle%" 'android-mode)
2015-04-22 20:48:28 -04:00
;; ;; Elisp
2015-05-12 01:04:38 -04:00
(add-template "\\.emacs\\.d/.+\\.el$" "%initfile%" 'emacs-lisp-mode)
(add-template "\\.emacs\\.d/snippets/.+$" "%%" 'snippet-mode))
2014-12-10 15:54:36 -05:00
2015-05-28 22:24:43 -04:00
2014-12-10 15:54:36 -05:00
(provide 'init-auto-insert)
;;; init-auto-insert.el ends here