rsplug 0.2.4

A blazingly fast Neovim plugin manager written in Rust
-- Auto generated by rsplug
local loaded = {}
return {
	---@param pkgids string[]
	---@param ft string
	load = function(pkgids, ft)
		local ids = vim.tbl_filter(function(item)
			if loaded[item] then
				return false
			end
			loaded[item] = true
			return true
		end, pkgids)
		if #ids == 0 then
			return
		end

		local events = { 'Syntax', 'BufEnter', 'BufWinEnter' }
		local autocmds = vim.api.nvim_get_autocmds { event = events }
		local ftplugins = require '_rsplug'.get_ft_runtime_file(ft)

		for _, id in ipairs(ids) do
			require '_rsplug'.packadd(id)
		end

		ftplugins = vim.tbl_filter(function(f)
			return not vim.list_contains(ftplugins, f)
		end, require '_rsplug'.get_ft_runtime_file(ft))
		for _, f in ipairs(ftplugins) do
			vim.cmd.source(f)
		end

		autocmds = require '_rsplug'.get_new_autocmds(vim.api.nvim_get_autocmds { event = events }, autocmds)
		autocmds = vim.tbl_map(function(value)
			return value.event
		end, autocmds)
		events = vim.tbl_filter(function(e)
			return vim.list_contains(autocmds, e)
		end, events)
		vim.api.nvim_exec_autocmds(events, { modeline = false })
	end,
}