Emacs Lisp Makefile
Switch branches/tags
Nothing to show
Clone or download
mineo Enforce the order of elements in tests
This ensures the sorting that's documented to happen actually happens.
Latest commit 4f4fca9 Jun 17, 2018
Permalink
Failed to load latest commit information.
.travis.yml
Cask
LICENSE
Makefile
README.md
test-yatemplate.el
yatemplate.el

README.md

MELPA MELPA Stable Build Status

YATemplate

Installation

Install this package from MELPA with M-x package-install RET yatemplate RET.

Description

This package bridges the gap between YASnippet and auto-insert-mode. By populating auto-insert-alist with filenames and automatically expanding their content after insertion by auto-insert-mode, it's an easy way to create dynamic file templates. Simply call yatemplate-fill-alist somewhere in your Emacs initialization file to populate auto-insert-alist with filenames from yatemplate-dir.

Each filename will be turned into a new element to push onto auto-insert-alist. To guarantee a particular order, filenames must contain one colon (":"). After collecting all the filenames in yatemplate-dir, their names will be sorted with string<, then split on the colon. The first substring will be discarded, which means it can be used to establish an ordering. The second substring will be used as a regexp as the CONDITION of the element to push onto auto-insert-alist. The ACTION will be a vector of actions that first insert the content of the template file and then expand the content of the buffer with yatemplate-expand-yas-buffer, which simply calls yas-expand-snippet, so you can use everything YASnippet offers in the template.

Note that a dollar sign $ will be added to the end of the regular expression automatically because most of the template filenames will very likely be of the form filename.extension. If you want to specify a template filename where the last letters are not the extension, add .* at the end.

This means that if yatemplate-dir looks like this:

.emacs.d/templates
├── 00:test_.*.py
└── 01:.*.py

yatemplate-fill-alist will first push (".*.py$" . ACTION) onto auto-insert-alist and then ("test_.*.py$" . ACTION).

Of course, you will need to enable auto-insert-mode to have the snippet inserted and expanded into new files.