• Stars
    star
    2,770
  • Rank 16,441 (Top 0.4 %)
  • Language
    Emacs Lisp
  • Created about 13 years ago
  • Updated 8 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A template system for Emacs

Build Status

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 include: 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.

Installation

Install the most recent version

Clone this repository somewhere

$ cd ~/.emacs.d/plugins
$ git clone --recursive https://github.com/joaotavora/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 keeps a very recent snapshot of YASnippet, see http://melpa.org/#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.

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

To use YASnippet as a non-global minor mode, don't call yas-global-mode; instead call yas-reload-all to load the snippet tables and then call yas-minor-mode from the hooks of major-modes where you want YASnippet enabled.

(yas-reload-all)
(add-hook 'prog-mode-hook #'yas-minor-mode)

Where are the snippets?

YASnippet no longer bundles snippets directly, but it's very easy to get some!

  1. yasnippet-snippets - a snippet collection package maintained by AndreaCrotti.

    It can be installed with M-x package-install RET yasnippet-snippets if you have added MELPA to your package sources.

  2. yasmate a tool which is dedicated to converting textmate bundles into yasnippet snippets.

    To use these snippets you have to run the tool first, so see its doc), and then point the yas-snippet-dirs variable to the .../yasmate/snippets subdir.

    If you have a working ruby environment, you can probably get lucky directly with rake convert-bundles.

  3. textmate-to-yas.el

    This is another textmate bundle converting tool using Elisp instead of Ruby.

Naturally, you can point yas-snippet-dirs to good snippet collections out there. If you have created snippets for a mode, or multiple modes, consider creating a repository to host them, then tell users that it should be added like this to yas-snippet-dirs:

(setq yas-snippet-dirs
      '("~/.emacs.d/snippets"                 ;; personal snippets
        "/path/to/some/collection/"           ;; foo-mode and bar-mode snippet collection
        "/path/to/yasnippet/yasmate/snippets" ;; the yasmate collection
        ))

(yas-global-mode 1) ;; or M-x yas-reload-all if you've started YASnippet already.

Manual, issues etc

There's comprehensive documentation on using and customising YASnippet.

There's a list of support issues, with solutions to common problems and practical snippet examples.

The Github issue tracker is where most YASnippet-related discussion happens. Nevertheless, since YASnippet is a part of Emacs, you may alternatively report bugs to the main Emacs bug list, [email protected], putting "yasnippet" somewhere in the subject.

Important note regarding bug reporting

Your bug reports are very valuable.

The most important thing when reporting bugs is making sure that we have a way to reproduce the problem exactly like it happened to you.

To do this, we need to rule out interference from external factors like other Emacs extensions or your own customisations.

Here's an example report that "sandboxes" an Emacs session just for reproducing a bug.

$ emacs --version
Emacs 24.3
$ cd /tmp/
$ git clone https://github.com/joaotavora/yasnippet.git yasnippet-bug
$ cd yasnippet-bug
$ git log -1 --oneline
6053db0 Closes #527: Unbreak case where yas-fallback-behaviour is a list
$ HOME=$PWD emacs -L . # This "sandboxes" your emacs, melpa configuration, etc

(require 'yasnippet)
(yas-global-mode 1)

When I open a foo-mode file I don't see foo-mode under the "YASnippet" menu!
OR
When loading yasnippet I see "Error: failed to frobnicate"!

Using emacs -Q or temporarily moving your .emacs init file to the side is another way to achieve good reproducibility.

Here's a another example of a bug report. It has everything needed for a successful analysis and speedy resolution.

Also, don't forget to state the Emacs version (use M-x emacs-version) and the yasnippet version you are using (if using the latest from github, do git log -1 in the dir).

Any more info is welcome, but don't just paste a backtrace or an error message string you got, unless we ask for it.

Finally, thank you very much for using YASnippet!

More Repositories

1

eglot

A client for Language Server Protocol servers
Emacs Lisp
2,256
star
2

sly

Sylvester the Cat's Common Lisp IDE
Common Lisp
1,256
star
3

autopair

Automagically pair braces and quotes in emacs like TextMate
Emacs Lisp
208
star
4

snooze

Common Lisp RESTful web development
Common Lisp
206
star
5

breadcrumb

Emacs headerline indication of where you are in a large project
Emacs Lisp
189
star
6

darkroom

Simple distraction-free editing
Emacs Lisp
147
star
7

hunchensocket

RFC6455 compliant WebSockets for Common Lisp
Common Lisp
109
star
8

beardbolt

Compiler Explorer clone
Emacs Lisp
86
star
9

fiasco

A test framework for Common Lisp
Common Lisp
55
star
10

snippet

A rewrite of Yasnippet's engine (incomplete, but many parts done)
Emacs Lisp
30
star
11

sly-quicklisp

Quicklisp support for SLY
Emacs Lisp
29
star
12

sly-macrostep

Expand CL macros inside source files
Emacs Lisp
28
star
13

sly-stepper

sly-slepper
TeX
27
star
14

yasmate

Convert textmate bundles to yasnippet format
Emacs Lisp
24
star
15

eslack

Slack client for Emacs
Emacs Lisp
12
star
16

sly-hello-world

A dummy template for writing SLY contribs
Emacs Lisp
9
star
17

sly-named-readtables

NAMED-READTABLES support for SLY
Emacs Lisp
9
star
18

zapp

Zebugger Adapter Protocol Plugin
Emacs Lisp
8
star
19

emacs-livereload

A livereload server running on Emacs
JavaScript
7
star
20

mac-key-mode

Provide mac-style key bindings on Carbon Emacs
Emacs Lisp
6
star
21

sinatra-thumbnails

Dynamic generation, serving and caching of thumbnail images for simple file-based CMS's written in Sinatra.
Ruby
6
star
22

efire

A campfire client for emacs
Emacs Lisp
5
star
23

nestor

A common-lisp clone of the nesta ruby cms
Common Lisp
5
star
24

cl-guard

A uniform interface to your file and event watching needs in common lisp.
Common Lisp
4
star
25

eel

Emacs interface to voidtools Everything file search
Emacs Lisp
4
star
26

ecco

ecco is a port of docco for emacs
Emacs Lisp
4
star
27

elisp-shorthand

Pretty dumb namespacing system
Emacs Lisp
3
star
28

hello-world-2000

Simplest possible C++ Hello World with CMake+Conan
CMake
3
star
29

tcpppl4

Exercise solutions for The C++ Programming Language 4th edition
C++
2
star
30

st

My fork of simple terminal
C
2
star
31

treeconf

C++ command-line parser for tree-like options
C++
2
star
32

blip

Automatically find and run tests in emacs
Emacs Lisp
2
star
33

lsplex

Experimental Language Server proxy/multiplexer
C++
2
star
34

whopper

A bare bones fork of http://common-lisp.net/project/bese/yaclml.html
Common Lisp
2
star
35

edice

Why would you want to roll dice in Emacs?
Emacs Lisp
2
star
36

vulkan-man-pages

Archlinux package for vulkan man pages
Shell
1
star
37

minns

a minimal name server, written as an exercise in C++
C++
1
star
38

revbufs

Reverts all out-of-date buffers safely
Emacs Lisp
1
star
39

raytracing-one-weekend

working through https://raytracing.github.io/books/RayTracingInOneWeekend.html
C++
1
star
40

nih

A shrubbery!!!
Emacs Lisp
1
star
41

blinky-template

A bare-bones Makefile-based template for ESP32 projects
C
1
star