---@alias OnAttachCallback fun(client: vim.lsp.Client, buffer: integer) local M = {} function M.init() local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" if not vim.uv.fs_stat(lazypath) then vim.fn.system({ "git", "clone", "--filter=blob:none", "--single-branch", "https://github.com/folke/lazy.nvim.git", lazypath, }) end vim.opt.runtimepath:prepend(lazypath) end ---@param on_attach OnAttachCallback function M.on_attach(on_attach) vim.api.nvim_create_autocmd("LspAttach", { callback = function(args) local buffer = args.buf local client = assert(vim.lsp.get_client_by_id(args.data.client_id)) on_attach(client, buffer) end, }) end ---@param name string ---@param fn fun(name:string) function M.on_load(name, fn) local Config = require("lazy.core.config") if Config.plugins[name] and Config.plugins[name]._.loaded then vim.schedule(function() fn(name) end) else vim.api.nvim_create_autocmd("User", { pattern = "LazyLoad", callback = function(event) if event.data == name then fn(name) return true end end, }) end end ---@param plugin string function M.has(plugin) return require("lazy.core.config").spec.plugins[plugin] ~= nil end return M