64 KiB
Yet another snippet extension
#
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 snippets
YASnippet is an original creation of /ld/yasnippet/src/commit/bdcecc0fe5af910f7e775e68e59e647ea4aaf72e/doc/pluskid who also wrote its predecessor /ld/yasnippet/src/commit/bdcecc0fe5af910f7e775e68e59e647ea4aaf72e/doc/smart-snippet.
Quick start
Watch a demo /ld/yasnippet/src/commit/bdcecc0fe5af910f7e775e68e59e647ea4aaf72e/doc/screencast
YASnippet is a template system for Emacs. It allows you to type an
Install the most recent version with git
Clone this repository somewhere
$ cd ~/.emacs.d/plugins $ git clone https://github.com/capitaomorte/yasnippet
Add the following in your .emacs
file:
example (add-to-list 'load-path "~/.emacs.d/plugins/yasnippet") (require 'yasnippet) (yas/global-mode 1)
Add your own snippets to `~/.emacs.d/snippets` by placing files there or invoking `yas/new-snippet`.
## Install yasnippet with el-get
El-get is a nice way to get the most recent version, too
Import textmate snippets (rails example)
Clone the yasnippet 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 "~/.emacs.d/plugins/yasnippet") (require 'yasnippet) (setq yas/snippet-dirs '("~/.emacs.d/snippets" "~/.emacs.d/extras/imported")) (yas/global-mode 1)
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 /ld/yasnippet/src/commit/bdcecc0fe5af910f7e775e68e59e647ea4aaf72e/doc/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 documentation for full customization and support. If you think you've found 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 forum. Thank you very much for using YASnippet!
Organizing snippets
Setting up yas/snippet-dirs
before calling yas/global-mode
Snippet collections are stored in specially organized file hierarchies. These are loaded by YASnippet into snippet tables which the triggering mechanism (see Expanding snippets) looks up and (hopefully) cause the right snippet to be expanded for you.
An emacs variable yas/snippet-dirs
tells YASnippet which collections to
consider.
If you don't tweak it the default value of yas/snippet-dirs
considers:
- a personal collection that YASnippet decides lives in
~/.emacs.d/snippets
- the bundled collection, taken as a relative path to
yasnippet.el
localtion
You might and probably want to try out more snippet collections though:
;; Develop in ~/emacs.d/mysnippets, but also
;; try out snippets in ~/Downloads/interesting-snippets
(setq yas/snippet-dirs '("~/emacs.d/mysnippets"
"~/Downloads/interesting-snippets"))
;; OR, keeping yasnippet's defaults try out ~/Downloads/interesting-snippets
(setq yas/snippet-dirs (append yas/snippet-dirs
'("~/Downloads/interesting-snippets")))
Collections appearing earlier in the list shadow any conflicting snippets from
collections later in the list. yas/new-snippet
always stores snippets in the
first collection.