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