Install this package from MELPA with M-x package-install RET yatemplate RET.
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
Each filename will be turned into a new element to
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
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
(".*.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.