Skip to content

Commit

Permalink
README.md: start examples section
Browse files Browse the repository at this point in the history
  • Loading branch information
seletskiy committed Apr 28, 2016
1 parent aaa89bf commit 9306fdc
Show file tree
Hide file tree
Showing 3 changed files with 59 additions and 0 deletions.
7 changes: 7 additions & 0 deletions README.md
Expand Up @@ -29,6 +29,13 @@ Please add pull requests and issues there.
UltiSnips was started in Jun 2009 by @SirVer. In Dec 2015, maintenance was
handed over to @seletskiy.

What can you do with UltiSnips?
-------------------------------

1. Advanced snippets:

* [Snippets Aliases](doc/examples/snippets-aliasing/README.md)

Quick Start
-----------

Expand Down
52 changes: 52 additions & 0 deletions doc/examples/snippets-aliasing/README.md
@@ -0,0 +1,52 @@
# Aliases for snippets

![gif](https://github.com/seletskiy/repo/blob/branch/master/docs/examples/snippets-aliasing/demo.gif)

Let's imagine we're editing shell file and we need to debug some vars.

Essentially, we will end up with snippet like that, that will automatically
insert location of the debug statement and variable name.

Example of that snippet is shown below:

```
snippet pr "print debug" bw
`!p
prefix = t[1] + ": %q\\n' "
prefix = "{}:{}: {}".format(
os.path.basename(px.buffer.get().name),
str(px.cursor.get()[0]),
prefix
)
`printf 'XXXXXX `!p snip.rv=prefix`$1 >&2
endsnippet
```

Now, we want to use same debug snippet, but dump variable to the file.
How can we do it?

Simple, declare new snippet in that way:

```
post_jump "px.snippets.expand(snip)"
snippet pd "Description" b
pr$1 >${2:/tmp/debug}
endsnippet
```

This snippet will expand `pr` snippet automatically (note `pr$1` part) after
jumping to the first placeholder (jump will be done automatically by UltiSnips
engine).

`px.snippets.expand(snip)` is declared in that way:

```python
def expand(snip, jump_pos=1):
if snip.tabstop != jump_pos:
return

vim.eval('feedkeys("\<C-R>=UltiSnips#ExpandSnippet()\<CR>")')
```

`px.buffer.get()` and `px.cursor.get()` are simple helpers for the
`vim.current.window.buffer` and `vim.current.window.cursor`.
Binary file added doc/examples/snippets-aliasing/demo.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 9306fdc

Please sign in to comment.