70 lines
1.2 KiB
Lua
70 lines
1.2 KiB
Lua
local ls = require "luasnip"
|
|
|
|
-- local snippet = ls.s
|
|
local snippet_from_nodes = ls.sn
|
|
local c = ls.choice_node
|
|
local d = ls.dynamic_node
|
|
local i = ls.insert_node
|
|
local f = ls.function_node
|
|
local t = ls.text_node
|
|
|
|
local fmt = require("luasnip.extras.fmt").fmt
|
|
|
|
local require_var = function(args, _)
|
|
local text = args[1][1] or ""
|
|
local split = vim.split(text, ".", { plain = true })
|
|
|
|
local options = {}
|
|
for len = 0, #split - 1 do
|
|
table.insert(options, t(table.concat(vim.list_slice(split, #split - len, #split), "_")))
|
|
end
|
|
|
|
return snippet_from_nodes(nil, {
|
|
c(1, options),
|
|
})
|
|
end
|
|
|
|
local newline = function(text)
|
|
return t { "", text }
|
|
end
|
|
|
|
return {
|
|
req = fmt([[local {} = require("{}")]], {
|
|
d(2, require_var, { 1 }),
|
|
i(1),
|
|
}),
|
|
lf = {
|
|
desc = "table function",
|
|
"local ",
|
|
i(1),
|
|
" = function(",
|
|
i(2),
|
|
")",
|
|
newline " ",
|
|
i(0),
|
|
newline "end",
|
|
},
|
|
|
|
preq = fmt(
|
|
[[local ok, {} = pcall(require, "{}")
|
|
if not ok then
|
|
return
|
|
end]],
|
|
{
|
|
f(function(args)
|
|
return args[1][1]
|
|
end, { 1 }),
|
|
i(1),
|
|
}
|
|
),
|
|
|
|
plugin = fmt(
|
|
[[return {{
|
|
"{}"
|
|
}}]],
|
|
{
|
|
i(1, "plugin"),
|
|
}
|
|
),
|
|
}
|