---@mod lz.n.types lz.n type definitions ---@class lz.n.PluginBase --- --- Whether to enable this plugin. Useful to disable plugins under certain conditions. ---@field enabled? boolean|(fun():boolean) --- --- Only useful for lazy=false plugins to force loading certain plugins first. --- Default priority is 50 ---@field priority? number --- --- Set this to override the `load` function for an individual plugin. --- Defaults to `vim.g.lz_n.load()`, see |lz.n.Config|. ---@field load? fun(name: string) ---@alias lz.n.Event {id:string, event:string[]|string, pattern?:string[]|string} ---@alias lz.n.EventSpec string|{event?:string|string[], pattern?:string|string[]}|string[] ---@class lz.n.PluginHooks ---@field beforeAll? fun(self:lz.n.Plugin) Will be run before loading any plugins ---@field before? fun(self:lz.n.Plugin) Will be run before loading this plugin ---@field after? fun(self:lz.n.Plugin) Will be executed after loading this plugin ---@class lz.n.PluginHandlers ---@field event? lz.n.Event[] ---@field keys? lz.n.Keys[] ---@field cmd? string[] ---@field colorscheme? string[] ---@field lazy? boolean ---@class lz.n.PluginSpecHandlers --- --- Load a plugin on one or more |autocmd-events|. ---@field event? string|lz.n.EventSpec[] --- --- Load a plugin on one or more |user-commands|. ---@field cmd? string[]|string --- --- Load a plugin on one or more |FileType| events. ---@field ft? string[]|string --- --- Load a plugin on one or more |key-mapping|s. ---@field keys? string|string[]|lz.n.KeysSpec[] --- --- Load a plugin on one or more |colorscheme| events. ---@field colorscheme? string[]|string ---@class lz.n.KeysBase: vim.keymap.set.Opts ---@field desc? string ---@field noremap? boolean ---@field remap? boolean ---@field expr? boolean ---@field nowait? boolean ---@field ft? string|string[] ---@class lz.n.KeysSpec: lz.n.KeysBase ---@field [1] string lhs ---@field [2]? string|fun()|false rhs ---@field mode? string|string[] ---@class lz.n.Keys: lz.n.KeysBase ---@field lhs string lhs ---@field rhs? string|fun() rhs ---@field mode? string ---@field id string ---@field name string ---@class lz.n.Plugin: lz.n.PluginBase,lz.n.PluginHandlers,lz.n.PluginHooks --- --- The plugin name (not its main module), e.g. "sweetie.nvim" ---@field name string --- --- Whether to lazy-load this plugin. Defaults to `false`. ---@field lazy? boolean ---@class lz.n.PluginSpec: lz.n.PluginBase,lz.n.PluginSpecHandlers,lz.n.PluginHooks --- --- The plugin name (not its main module), e.g. "sweetie.nvim" ---@field [1] string ---@class lz.n.SpecImport ---@field import string spec module to import ---@field enabled? boolean|(fun():boolean) ---@alias lz.n.Spec lz.n.PluginSpec | lz.n.SpecImport | lz.n.Spec[] ---@class lz.n.Config --- --- Callback to load a plugin. --- Takes the plugin name (not the module name). Defaults to |packadd| if not set. ---@field load? fun(name: string) ---@class lz.n.Handler --- --- The |lz.n.PluginSpec| field used to configure this handler. ---@field spec_field string --- --- Add a plugin to this handler. ---@field add fun(plugin: lz.n.Plugin) --- --- Remove a plugin from this handler by name. ---@field del fun(name: string) --- --- Lookup a plugin by name. ---@field lookup fun(name: string): lz.n.Plugin? --- --- For setting up handler specific triggers such as --- the `DeferredUIEnter` event created by the builtin --- event handler. Called once after each call to require("lz.n").load ---@field post_load? fun() --- --- If a handler needs to transform the spec passed in by users --- and add it to the plugin spec, this can be done here. --- If unset, lz.n will add the `handler_spec` to the `lz.n.Plugin` as is. ---@field parse? fun(plugin: lz.n.Plugin, spec: unknown) ---@type lz.n.Config vim.g.lz_n = vim.g.lz_n error("Cannot import a meta module") local M = {} return M