article about tabstop generation
This commit is contained in:
parent
3c420ed63f
commit
ae01893c85
50
doc/examples/tabstop-generation/README.md
Normal file
50
doc/examples/tabstop-generation/README.md
Normal file
@ -0,0 +1,50 @@
|
||||
# Dynamic tabstop generation
|
||||
|
||||
![gif](https://raw.githubusercontent.com/SirVer/ultisnips/master/doc/examples/tabstop-generation/demo.gif)
|
||||
|
||||
UltiSnips at the present day is more than snippet engine. It's more like
|
||||
constructor, where you can implement some complex features without prior
|
||||
feature implementation in the snippet byy itself.
|
||||
|
||||
One of that features is dynamic tabstop generation.
|
||||
|
||||
Consider case, where you want set of snippets for inserting latex rows of
|
||||
various lengths. No-brainer solution is just implement snippet for every
|
||||
row length you're possible will want, like this:
|
||||
|
||||
```
|
||||
snippet tr9 "LaTeX table row of length nine"
|
||||
$1 & $2 & $3 & $4 & $5 & $6 & $7 & $8 & $9
|
||||
endsnippet
|
||||
```
|
||||
|
||||
But soon it becomes a burden to maintain that kind of snippets.
|
||||
|
||||
Gladly, tabstops can be generated by using anonymous snippet expansion:
|
||||
|
||||
```
|
||||
global !p
|
||||
def create_row_placeholders(snip):
|
||||
# retrieving singlee line from current string and treat it like tabstops
|
||||
# count
|
||||
placeholders_amount = int(snip.buffer[snip.line].strip())
|
||||
|
||||
# erase current line
|
||||
snip.buffer[snip.line] = ''
|
||||
|
||||
# create anonymous snippet with expected content and number of tabstops
|
||||
anon_snippet_body = ' & '.join(['$' + str(i+1)
|
||||
for i in range(placeholders_amount)])
|
||||
|
||||
# expand anonymous snippet
|
||||
snip.expand_anon(anon_snippet_body)
|
||||
endglobal
|
||||
|
||||
post_jump "create_row_placeholders(snip)"
|
||||
snippet "tr(\d+)" "latex table row variable" br
|
||||
`!p snip.rv = match.group(1)`
|
||||
endsnippet
|
||||
```
|
||||
|
||||
Snippet is declared via regular expression and will expand to any required
|
||||
number of fields in row.
|
BIN
doc/examples/tabstop-generation/demo.gif
Normal file
BIN
doc/examples/tabstop-generation/demo.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.2 MiB |
Loading…
Reference in New Issue
Block a user