# -*- mode: org; fill-column: 80 -*-
#+TITLE: Yet another snippet extension
#+OPTIONS: toc:1
#+STARTUP: showall

#+STYLE: <link rel="stylesheet" type="text/css" href="assets/stylesheet.css" />

# External links
#
#+LINK: smart-snippet http://code.google.com/p/smart-snippet
#+LINK: pluskid       http://pluskid.lifegoo.org


#+LINK: screencast         http://www.youtube.com/watch?v=ZCGmZK4V7Sg
#+LINK: docs               http://capitaomorte.github.com/yasnippet
#+LINK: issues             https://github.com/capitaomorte/yasnippet/issues
#+LINK: googlecode-tracker http://code.google.com/p/yasnippet/issues/list
#+LINK: forum              http://groups.google.com/group/smart-snippet

*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-textmate][import most TextMate snippets]]

YASnippet is an original creation of [[pluskid]] who also wrote its predecessor
[[smart-snippet]].

* Watch a demo [[screencast]]

* Install the most recent version with git

Clone this repository somewhere

#+BEGIN_EXAMPLE
    $ cd ~/.emacs.d/plugins
    $ git clone https://github.com/capitaomorte/yasnippet
#+END_EXAMPLE

Add the following in your =.emacs= file:

#+BEGIN_EXAMPLE
    (add-to-list 'load-path
                  "~/.emacs.d/plugins/yasnippet")
    (require 'yasnippet)
    (yas/global-mode 1)
#+END_EXAMPLE

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

* Install yasnippet with el-get

[[https://github.com/dimitri/el-get.gti][El-get]] is a nice way to get the most recent version.

* Import textmate snippets (rails example)
:PROPERTIES:
:CUSTOM_ID: import-textmate
:END:

Clone the yasnippet repository to `~/.emacs.d/plugins/yasnippet`

#+BEGIN_EXAMPLE
    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
#+END_EXAMPLE

Then, in your .emacs file

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

Open some rails file (model, app, etc) and start using the textmate snippets.

* 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.

The =extras/textmate-import.rb= tool can import many actual Textmate
snippets. See [[import-textmate]].

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

* Documentation, issues, etc

Please refer to the comprehensive [[docs][documentation]] for full customization and
support.  If you think you've found a bug, please report it on [[issues][the GitHub issue
tracker]].  (please **do not** submit new issues to the old [[googlecode-tracker][googlecode tracker]])

If you run into problems using YASnippet, or have snippets to contribute, post
to the [[forum][yasnippet forum]]. Thank you very much for using YASnippet!
