mirror of
https://github.com/joaotavora/yasnippet.git
synced 2025-10-13 13:13:03 +00:00
128 lines
4.7 KiB
Markdown
128 lines
4.7 KiB
Markdown
# Intro
|
|
|
|
**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][textmate-snippets] syntax, you can even
|
|
[import][import-docs] most TextMate templates to yasnippet. Watch
|
|
[a demo on YouTube][youtube-demo] or download a
|
|
[higher resolution version][high-res-demo]
|
|
|
|
[textmate-snippets]: http://manual.macromates.com/en/snippets
|
|
[import-docs]: http://yasnippet.googlecode.com/svn/trunk/doc/snippet-development.html#importing-textmate-snippets
|
|
[youtube-demo]: http://www.youtube.com/watch?v=ZCGmZK4V7Sg
|
|
[high-res-demo]: http://yasnippet.googlecode.com/files/yas_demo.avi
|
|
|
|
# Installation
|
|
|
|
## Install the most recent version
|
|
|
|
Clone this repository somewhere
|
|
|
|
$ cd ~/.emacs.d/plugins
|
|
$ git clone https://github.com/capitaomorte/yasnippet
|
|
|
|
Add the following in your `.emacs` file:
|
|
|
|
(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 with `package-install`
|
|
|
|
In a recent emacs `M-x list-packages` is the recommended way to list and install packages.
|
|
[MELPA][melpa] keeps a very recent snapshot of yasnippet, see http://melpa.milkbox.net/#installing.
|
|
|
|
## Install with el-get
|
|
|
|
El-get is a nice way to get the most recent version, too. See
|
|
https://github.com/dimitri/el-get 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 "https://github.com/capitaomorte/yasnippet.git"
|
|
:description "YASnippet is a template system for Emacs."
|
|
:type github
|
|
:pkgname "capitaomorte/yasnippet"
|
|
:features "yasnippet"
|
|
:compile "yasnippet.el")
|
|
el-get-sources)
|
|
|
|
## 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 ()
|
|
(yas/minor-mode)))
|
|
|
|
# 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
|
|
"~/.emacs.d/plugins/yasnippet")
|
|
(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][docs] for full customization
|
|
and support. If you find a bug, please report it on
|
|
[the GitHub issue tracker][issues]. (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 [yasnippet google group][forum]. Thank you very much for using yasnippet!
|
|
|
|
[docs]: http://capitaomorte.github.com/yasnippet/
|
|
[issues]: https://github.com/capitaomorte/yasnippet/issues
|
|
[googlecode tracker]: http://code.google.com/p/yasnippet/issues/list
|
|
[forum]: http://groups.google.com/group/smart-snippet
|
|
[melpa]: http://melpa.milkbox.net/
|