more snips, e.g. uuid, random words/strings etc

pull/180/head
ray-x 2 years ago
parent deccb2c6c3
commit f0732425f9

@ -113,6 +113,7 @@ function go.setup(cfg)
local ls = require("go.utils").load_plugin("LuaSnip", "luasnip")
if ls then
require("snips.go")
require("snips.all")
end
end
go.doc_complete = require("go.godoc").doc_complete

@ -687,8 +687,9 @@ function util.uuid()
end)
end
local lorem = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum"
function util.lorem()
return "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum"
return lorem
end
function util.random_words(len)
@ -701,6 +702,11 @@ function util.random_words(len)
return str
end
function util.random_line()
local lines = vim.split(lorem, ", ")
return lines[math.random(#lines)] .. ","
end
function util.run_command(cmd, ...)
local result = fn.systemlist(cmd, ...)
return result

@ -0,0 +1,96 @@
local ls = require("luasnip")
local utils = require("go.utils")
local partial = require("luasnip.extras").partial
local l = require("luasnip.extras").lambda
local dl = require("luasnip.extras").dynamic_lambda
local aws = vim.split(
"ap-south-1,ap-northeast-2,ap-southeast-1,ap-southeast-2,ap-northeast-1,ca-central-1,eu-central-1,eu-west-1,eu-west-2,sa-east-1,us-east-1,us-east-2,us-west-1,us-west-2",
","
)
local function filter(prefix)
result = { ls.t("") }
print("filter", prefix)
if #prefix == 1 then
for _, v in pairs(aws) do
if v:sub(1, 1) == prefix then
print("found", v)
table.insert(result, ls.t(v))
end
end
if #result > 0 then
return ls.sn(nil, ls.c(1, result))
end
end
if #prefix >= 2 then
for _, v in pairs(aws) do
if v:sub(1, 1) == prefix:sub(1, 1) then
if v:sub(2, 2) == prefix:sub(2, 2) then
print("found", v)
table.insert(result, ls.t(v))
else
if v:find(prefix:sub(2, 2)) then
print(v)
table.insert(result, ls.t(v))
end
end
end
end
if #result > 0 then
print("prepare c node items ", #result)
return ls.sn(nil, ls.c(1, result))
end
end
return ls.sn(nil, ls.t("us-east-1"))
end
ls.add_snippets("all", {
ls.s("dl1", {
ls.i(1, "sample_text"),
ls.t({ ":", "" }),
dl(2, l._1, 1),
}),
ls.s("time", partial(vim.fn.strftime, "%H:%M:%S")),
ls.s("date", partial(vim.fn.strftime, "%Y-%m-%d")),
ls.s("pwd", { partial(utils.run_command, "pwd") }),
-- ls.s({ trig = "aws(%d)", regTrig = true, name = "aws region", dscr = "input 2 char matching a region name" }, {
-- ls.d(1, function(args)
-- print(vim.inspect(args))
-- -- return ls.sn(nil, {
-- -- -- jump-indices are local to each snippetNode, so restart at 1.
-- -- ls.i(1, args[1]),
-- -- })
-- return filter(args[1][1])
-- end, { 1 }),
-- }),
ls.s("hlc", ls.t("http://localhost")),
ls.s("hl1", ls.t("http://127.0.0.1")),
ls.s("lh", ls.t("localhost")),
ls.s("lh1", ls.t("127.0.0.1")),
ls.s({ trig = "uid", wordTrig = true }, { ls.f(utils.uuid), ls.i(0) }),
ls.s({ trig = "rstr(%d+)", regTrig = true }, {
ls.f(function(_, snip)
return utils.random_string(snip.captures[1])
end),
ls.i(0),
}),
ls.s(
{ trig = "lor", name = "Lorem Ipsum (Choice)", dscr = "Choose next for more lines" },
ls.c(1, { ls.t(utils.random_line()), ls.t(utils.random_line()) })
),
ls.s(
{
trig = "(%d+)lor",
name = "Lorem Ipsum",
regTrig = true,
dscr = "Start with a count for lines",
},
ls.f(function(_, snip)
local lines = snip.captures[1]
if not tonumber(lines) then
lines = 1
end
local l = vim.split(utils.lorem(), ", ")
return vim.list_slice(l, lines)
end)
),
})
Loading…
Cancel
Save