47 lines
1.6 KiB
Lua
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
|