git clone 'git://github.com/mineo/yatemplate.git'




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


This package bridges the gap betwen 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.

This means that if yatemplate-dir looks like this:

├── 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.