60 lines
1.3 KiB
Lua
60 lines
1.3 KiB
Lua
# Go LuaSnip Snippets
|
|
|
|
local luasnip = require('luasnip')
|
|
local snip = luasnip.snippet
|
|
local text = luasnip.text_node
|
|
local ins = luasnip.insert_node
|
|
local func = luasnip.function_node
|
|
local node = luasnip.snippet_node
|
|
local key = require("luasnip.nodes.key_indexer").new_key
|
|
|
|
local function short_name(name)
|
|
local short = string.lower(string.sub(name, 1, 1))
|
|
for i = 2, #name do
|
|
local char = string.sub(name, i, i)
|
|
if char == string.upper(char) then
|
|
short = short .. char
|
|
end
|
|
end
|
|
return string.lower(short)
|
|
end
|
|
|
|
local snippets = {
|
|
|
|
snip('func', {
|
|
text('func '),
|
|
node(1, {
|
|
func(function(args)
|
|
if string.len(args[1][1]) > 0 then
|
|
return '(' .. short_name(args[1][1]) .. ' *'
|
|
end
|
|
return ''
|
|
end, key('type')),
|
|
ins(1, '', { key = 'type' }),
|
|
func(function(args)
|
|
if string.len(args[1][1]) > 0 then
|
|
return ') '
|
|
end
|
|
return ''
|
|
end, key('type')),
|
|
}),
|
|
ins(2, 'name'),
|
|
text('('),
|
|
ins(3, ''),
|
|
text(') '),
|
|
ins(4, '', { key = 'return' }),
|
|
func(function(args)
|
|
if string.len(args[1][1]) > 0 then
|
|
return ' '
|
|
end
|
|
return ''
|
|
end, key('return')),
|
|
text({ '{', '\t' }),
|
|
ins(0, ''),
|
|
text({ '', '}' }),
|
|
}),
|
|
|
|
}
|
|
|
|
return snippets
|