53 lines
1.3 KiB
Markdown
53 lines
1.3 KiB
Markdown
|
# Aliases for snippets
|
||
|
|
||
|
![gif](https://raw.githubusercontent.com/SirVer/ultisnips/master/doc/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`.
|