#+TITLE: Templates layer

#+TAGS: completion|layer

* Table of Contents                     :TOC_5_gh:noexport:
- [[#description][Description]]
  - [[#features][Features:]]
- [[#install][Install]]
- [[#configuration][Configuration]]
  - [[#default-insertions][Default insertions]]
  - [[#querying][Querying]]

* Description
This layer provides templates to Spacemacs. A template consists of text that is
automatically inserted into a new file when it is opened. This is done via
[[https://github.com/mineo/yatemplate][yatemplate]], which leverages [[https://github.com/joaotavora/yasnippet][yasnippet]].

** Features:
- Auto-insert snippets when creating specific new files.

* Install
To use this configuration layer, add it to your =~/.spacemacs=. You will need to
add =templates= to the existing =dotspacemacs-configuration-layers= list in this
file.

* Configuration
Drop your templates in =~/.emacs.d/private/templates=.

You can also specify a different location with =templates-private-directory=:

#+BEGIN_SRC emacs-lisp
  (setq-default dotspacemacs-configuration-layers
    '((templates :variables templates-private-directory "~/.spacemacs.d/templates")))
#+END_SRC

Each file in this directory must be of the form =XXX:regexp= where =regexp= is a
regular expression that will be matched against filenames. The prefix =XXX= can
be used to enforce an ordering (templates that come first will have priority).
It is not part of the final regexp. Therefore, more specific templates should
come first. For example,

#+BEGIN_EXAMPLE
  00:test_.*.py
  01:.*.py
#+END_EXAMPLE

See the [[https://github.com/mineo/yatemplate][yatemplate]] documentation for specifics. Full yasnippet syntax is
supported, so consult the [[http://joaotavora.github.io/yasnippet/snippet-development.html][yasnippet]] documentation for details.

** Default insertions
Note that Emacs ships with some default templates. If these are not to your
liking, set the layer variable =templates-use-default-templates= to =nil=.

#+BEGIN_SRC emacs-lisp
  (setq-default dotspacemacs-configuration-layers
    '((templates :variables templates-use-default-templates nil)))
#+END_SRC

** Querying
To disable the automatic querying each time a new file is opened, set
=auto-insert-query= to =nil=.

#+BEGIN_SRC emacs-lisp
  (setq auto-insert-query nil)
#+END_SRC
