Question

Particularly, what is the best snippets package out there?

Features:

  • easy to define new snippets (plain text, custom input with defaults)
  • simple navigation between predefined positions in the snippet
  • multiple insertion of the same custom input
  • accepts currently selected text as a custom input
  • cross-platform (Windows, Linux)
  • dynamically evaluated expressions (embedded code) written in a concise programming language (Perl, Python, Ruby are preferred)
  • nicely coexists with others packages in Emacs

Example of code template, a simple for loop in C:

for (int i = 0; i < %N%; ++i) {
  _
}

It is a lot of typing for such common code. I want to invoke a code template or snippet which inserts that boilerplate code for me. Additionally it stops (on TAB or other keystroke) at %N% (my input replaces it) and final position of the cursor is _.

Was it helpful?

Solution

TextMate's snippets are the most closest match but it is not a cross-platform solution and not for Emacs.

The second closest thing is yasnippet (screencast shows main capabilities). But it interferes with hippie-expand package in my setup and the embedded language is EmacsLisp which I'm not comfortable with outside .emacs.

EDIT: Posted my answer here to allow voting on yasnippet.

OTHER TIPS

Personally, I've been using Dmacro for years (ftp://ftp.sgi.com/other/dmacro/dmacro.tar.gz).

Here's a review of it that also mentions some alternatives: http://linuxgazette.net/issue39/marsden.html

The EmacsWiki has a page of template engines.

Of these, I've used tempo in the (distant) past to add table support to html-helper-mode, but don't know how it has progressed in the last 15 years.

I'd add my vote for tempo snippets ... easy to setup, powerful (you can run arbitrary elisp in your template - so that you can downcase things, lookup filenames & classes, count things, etc), set the indentation, integrate with abbrevs ... I use it a lot ;)

I vote for http://cedet.sourceforge.net/srecode.shtml

It have very clean syntax and has access to code environment through Semantic.

Also it is a part of large well supported CEDET distribution (which was built into Emacs for 24.x version series).

UPDATE https://github.com/capitaomorte/yasnippet is also powerful template engine. But it uses ugly file naming schema (your file name === template name) for you can't put several templates into single file and have issues with national character sets...

You can try a lightweight solution muban.el

It is written completely in Elisp and has a very simple syntax.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top