1
0
Fork 0
dotfiles/.config/nvim/lua/plugins/cmp/luasnip.lua
2023-11-23 21:27:43 +01:00

47 lines
1.6 KiB
Lua

local M = { "L3MON4D3/LuaSnip" }
M.build = "make install_jsregexp"
local opts = function()
local luasnip = require('luasnip')
local f = luasnip.function_node
return {
history = true,
enable_autosnippets = true,
update_events = { "TextChanged", "TextChangedI" },
snip_env = {
s = function(...)
local snip = luasnip.s(...)
table.insert(getfenv(2).ls_file_snippets, snip)
end,
parse = function(...)
local snip = luasnip.parser.parse_snippet(...)
table.insert(getfenv(2).ls_file_snippets, snip)
end,
reference = function(node)
return f(function(args, _) return args[1][1] end, node)
end,
capture = function(index)
return f(function(_, snip, user_arg1) return snip.captures[user_arg1] end, nil, { user_args = { index } })
end
},
}
end
M.config = function()
require('luasnip').setup(opts())
require('luasnip.loaders.from_lua').load({ paths = os.getenv("XDG_CONFIG_HOME") .. "/nvim/lua/snippets" })
--require('luasnip.loaders.from_vscode').load({ paths = os.getenv("XDG_CONFIG_HOME") .. "/nvim/lua/snippets" })
vim.api.nvim_create_autocmd("InsertLeave", {
callback = function()
local luasnip = require('luasnip')
if luasnip.session.current_nodes[vim.api.nvim_get_current_buf()]
and not luasnip.session.jump_active
then
luasnip.unlink_current()
end
end,
})
end
return M