70 lines
1.7 KiB
Lua
70 lines
1.7 KiB
Lua
local map, auto = core.misc.map, core.misc.auto
|
|
|
|
return { "L3MON4D3/LuaSnip",
|
|
branch = "v2.4.0",
|
|
disable = not vim.fn.has("nvim-0.7.0"),
|
|
config = function()
|
|
vim.cmd("make install_jsregexp")
|
|
end,
|
|
function()
|
|
local luasnip = require("luasnip")
|
|
local types = require("luasnip.util.types")
|
|
|
|
luasnip.config.set_config {
|
|
history = true, -- return back into snippet
|
|
enable_autosnippets = true,
|
|
|
|
-- update on text insert and cursor hold
|
|
updateevents = { "TextChanged", "TextChangedI", "CursorHold" },
|
|
ext_opts = {
|
|
[types.choiceNode] = {
|
|
active = {
|
|
virt_text = {{ "?", "@boolean" }}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
map({"i", "s"}, "<c-a>", function()
|
|
if luasnip.choice_active() then
|
|
luasnip.change_choice(1)
|
|
end
|
|
end)
|
|
|
|
map({"i", "s"}, "<c-e>", function()
|
|
if luasnip.expandable() then
|
|
luasnip.expand()
|
|
end
|
|
end)
|
|
|
|
map({"i", "s"}, "<C-j>", function()
|
|
if luasnip.jumpable(1) then
|
|
luasnip.jump(1)
|
|
end
|
|
end)
|
|
|
|
map({"i", "s"}, "<C-k>", function()
|
|
if luasnip.jumpable(-1) then
|
|
luasnip.jump(-1)
|
|
end
|
|
end)
|
|
|
|
-- collect all snippets and add them when in the correct file type
|
|
for _, file in ipairs(vim.api.nvim_get_runtime_file("lua/snippets/*.lua",
|
|
true)) do
|
|
local fn = file:gsub("^.*/", ""):gsub("%.lua$", "")
|
|
|
|
auto("FileType", {
|
|
pattern = fn,
|
|
once = true,
|
|
callback = function()
|
|
local ret = require("snippets."..fn)
|
|
if type(ret) ~= "boolean" then
|
|
luasnip.add_snippets(fn, ret, { key = fn })
|
|
end
|
|
end
|
|
})
|
|
end
|
|
end
|
|
}
|