nixos-configuration/users/jrpotter/neovim/config/cxx/snippets.lua

58 lines
1.2 KiB
Lua

local fmt = require('luasnip.extras.fmt').fmt
local ls = require('luasnip')
local ki = require('luasnip.nodes.key_indexer')
local ul = require('utils.luasnip')
local c = ls.choice_node
local d = ls.dynamic_node
local i = ls.insert_node
local k = ki.new_key
local r = ls.restore_node
local s = ls.snippet
local sn = ls.snippet_node
local t = ls.text_node
return {
s(
{ name = 'for', trig = 'for' },
fmt([[
for (<>; <>) {
<>
}]],
{
c(1, {
sn(nil, {
i(1, 'int'),
t(' '),
i(2, 'i'),
}),
sn(nil, {
i(1, 'char *'),
i(2, 'c'),
}),
}),
d(2, function(_, parent)
local index = ul.choice_index(parent.nodes[2])
return sn(
nil,
r(1, string.format('for-%d', index), ({
sn(nil, {
i(1, 'i < N'),
t('; '),
i(2, '++i'),
}),
sn(nil, {
i(1, 'c'),
t('; '),
i(2, '++c'),
}),
})[index])
)
end, { 1 }),
ul.visual_isn(3),
},
{ delimiters = '<>' }
)
),
}