Skip to content
A template system for Emacs
Find file
Pull request Compare This branch is 365 commits behind capitaomorte:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.



yasnippet is a template system for Emacs. It allows you to type an abbreviation and automatically expand it into function templates. Bundled language templates includes: C, C++, C#, Perl, Python, Ruby,

SQL, LaTeX, HTML, CSS and more. The snippet syntax is inspired from TextMate's syntax, you can even import most TextMate templates to yasnippet. Watch a demo on YouTube or download a higher resolution version


Install the most recent version

Clone this repository somewhere

$ cd ~/.emacs.d/plugins
$ git clone

Add the following in your .emacs file:

(add-to-list 'load-path
(require 'yasnippet)
(yas/global-mode 1)

Add your own snippets to ~/.emacs.d/snippets by placing files there or invoking yas/new-snippet.

Install with package-install

In a recent emacs M-x list-packages is the recommended way to list and install packages. MELPA keeps a very recent snapshot of yasnippet, see

Install with el-get

El-get is a nice way to get the most recent version, too. See for instructions. Be sure to install the "master" branch since the 3.x series still use the old googlecode code, base. Consider using this "local" recipe.

(push '(:name yasnippet
              :website ""
              :description "YASnippet is a template system for Emacs."
              :type github
              :pkgname "capitaomorte/yasnippet"
              :features "yasnippet"
              :compile "yasnippet.el")

Use yas/minor-mode on a per-buffer basis

To use yasnippet as a non-global minor mode, replace (yas/global-mode 1) with (yas/reload-all) to load the snippet tables. Then add a call to (yas/minor-mode) to the major-modes where you to enable yasnippet.

(add-hook 'prog-mode-hook
          '(lambda ()

Contributing snippets

Please do not ask me to add snippets to the default collection under /snippets. This is considered frozen and by customizing yas/snippet-dirs you can point yasnippet to good snippet collections out there.

There is a tool extras/textmate-import.rb than can import many actual Textmate snippets and there are extras/imported/*-mode/.yas-setup.el files that can help it with the more difficult importation.

I'm focusing on developping textmate-import.rb tool and the yas-setup.el files. In the future /snippets snippets will be deprecated and replaced with extras/imported.

Follow through the following example to start using these snippets for rails development. It will convert ruby, rails and html bundles from drnic's github repositories based on corresponding .yas-setup.el files.

Using imported textmate snippets (rails example)

After cloning this repository to ~/.emacs.d/plugins/yasnippet

cd ~/.emacs.d/plugins/yasnippet
git submodule init
git submodule update
gem install plist trollop
rake convert_bundles             # will convert ruby, rails and html bundles from drnic

Then, in your .emacs file

(add-to-list 'load-path
(require 'yasnippet)
(setq yas/snippet-dirs '("~/.emacs.d/snippets" "~/.emacs.d/plugins/yasnippet/extras/imported"))
(yas/global-mode 1)

Open some rails file (model, app, etc) and start using the textmate snippets. Note thqt in the example above we abandon the default snippet collection on ~/.emacs.d/plugins/yasnippet/snippets

Documentation, issues, etc

Please refer to the comprehensive (albeit slightly outdated) documentation for full customization and support. If you find a bug, please report it on the GitHub issue tracker. (please do not submit new issues to the old googlecode tracker)

If you run into problems using yasnippet, or have snippets to contribute, post to the yasnippet google group. Thank you very much for using yasnippet!

Something went wrong with that request. Please try again.