+
+
**lazy.nvim** is a modern plugin manager for Neovim.
-
+
## ✨ Features
-- 📦 Manage all your Neovim plugins with a sleek and intuitive UI
-- 🚀 Fast startup times thanks to automatic caching and bytecode compilation of lua modules.
+- 📦 Manage all your Neovim plugins with a powerful UI
+- 🚀 Fast startup times thanks to automatic caching and bytecode compilation of Lua modules
- 💾 Partial clones instead of shallow clones
-- 🔌 Automatic lazy-loading of lua modules and lazy-loading on events, commands, filetypes, and key mappings.
-- ⏳ Automatically install missing plugins before starting up Neovim, allowing you to start using it right away.
+- 🔌 Automatic lazy-loading of Lua modules and lazy-loading on events, commands, filetypes, and key mappings
+- ⏳ Automatically install missing plugins before starting up Neovim, allowing you to start using it right away
- 💪 Async execution for improved performance
- 🛠️ No need to manually compile plugins
- 🧪 Correct sequencing of dependencies
@@ -22,315 +54,16 @@
- 🔎 Automatically check for updates
- 📋 Commit, branch, tag, version, and full [Semver](https://devhints.io/semver) support
- 📈 Statusline component to see the number of pending updates
-
-## 📄 Table of Contents
-
-
-
-- [⚡️ Requirements](#-requirements)
- - [📦 Installation](#-installation)
- - [🔌 Plugin Spec](#-plugin-spec)
- - [⚙️ Configuration](#-configuration)
- - [🚀 Usage](#-usage)
- - [📊 Profiler](#-profiler)
- - [🪲 Debug](#-debug)
- - [▶️ Startup Sequence](#-startup-sequence)
- - [📦 Differences with Packer](#-differences-with-packer)
- - [📦 Other Neovim Plugin Managers in Lua](#-other-neovim-plugin-managers-in-lua)
-
-
+- 🎨 Automatically lazy-loads colorschemes
## ⚡️ Requirements
-- Neovim >= **0.8.0**
+- Neovim >= **0.8.0** (needs to be built with **LuaJIT**)
+- Git >= **2.19.0** (for partial clones support)
+- a [Nerd Font](https://www.nerdfonts.com/) **_(optional)_**
+- [luarocks](https://luarocks.org/) to install rockspecs.
+ You can remove `rockspec` from `opts.pkg.sources` to disable this feature.
-## 📦 Installation
+## 🚀 Getting Started
-You can use the following Lua code to bootstrap **lazy.nvim**
-
-
-
-```lua
-local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
- if not vim.loop.fs_stat(lazypath) then
- vim.fn.system({
- "git",
- "clone",
- "--filter=blob:none",
- "--single-branch",
- "git@github.com:folke/lazy.nvim.git",
- lazypath,
- })
- end
- vim.opt.runtimepath:prepend(lazypath)
-```
-
-
-
-Next step is to add **lazy.nvim** to the top of your `init.lua`
-
-```lua
--- You can use a lua module that contains your plugins.
--- All sub modules of the lua module will also be automatically loaded
--- This is the preferred setup so your plugin specs can be properly cached.
-require("lazy").setup("config.plugins", {
- -- add any optional configuration here
-})
-
--- Alternatively you can specify a plugin list
-require("lazy").setup({
- "folke/neodev.nvim",
- "folke/which-key.nvim",
- { "folke/neoconf.nvim", cmd = "Neoconf" },
- }, {
- -- add any optional configuration here
-})
-```
-
-## 🔌 Plugin Spec
-
-| Property | Type | Description |
-| ---------------- | ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `[1]` | `string?` | Short plugin url. Will be expanded using `config.git.url_format` |
-| **dir** | `string?` | A directory pointing to a local plugin |
-| **url** | `string?` | A custom git url where the plugin is hosted |
-| **name** | `string?` | A custom name for the plugin used for the local plugin directory and as the dispay name |
-| **dev** | `boolean?` | When `true`, a local plugin directory will be used instead. See `config.dev` |
-| **lazy** | `boolean?` | When `true`, the plugin will only be loaded when needed. Lazy-loaded plugins are automatically loaded when their lua modules are `required`, or when one of the laz-loading handlers triggers |
-| **enabled** | `boolean?` or `fun():boolean` | When `false`, or if the `function` returns false, then this plugin will not be used |
-| **dependencies** | `LazySpec[]` | A list of plugin specs that should be loaded when the plugin loads. Dependencies are always lazy-loaded unless specified otherwise |
-| **init** | `fun(LazyPlugin)` | `init` functions are always executed during startup |
-| **config** | `fun(LazyPlugin)` | `config` is executed when the plugin loads |
-| **build** | `fun(LazyPlugin)` | `build` is executed when a plugin is installed or updated |
-| **branch** | `string?` | Branch of the repository |
-| **tag** | `string?` | Tag of the repository |
-| **commit** | `string?` | Commit of the repository |
-| **version** | `string?` | Version to use from the repository. Full [Semver](https://devhints.io/semver) ranges are supported |
-| **pin** | `boolean?` | When `true`, this plugin will not be included in updates |
-| **event** | `string?` or `string[]` | Lazy-load on event |
-| **cmd** | `string?` or `string[]` | Lazy-load on command |
-| **ft** | `string?` or `string[]` | Lazy-load on filetype |
-| **keys** | `string?` or `string[]` | Lazy-load on key mapping |
-
-
-
-```lua
-return {
- -- the colorscheme should be available when starting Neovim
- "folke/tokyonight.nvim",
-
- -- I have a separate config.mappings file where I require which-key.
- -- With lazy the plugin will be automatically loaded when it is required somewhere
- { "folke/which-key.nvim", lazy = true },
-
- {
- "nvim-neorg/neorg",
- -- lazy-load on filetype
- ft = "norg",
- -- custom config that will be executed when loading the plugin
- config = function()
- require("neorg").setup()
- end,
- },
-
- {
- "dstein64/vim-startuptime",
- -- lazy-load on a command
- cmd = "StartupTime",
- },
-
- {
- "hrsh7th/nvim-cmp",
- -- load cmp on InsertEnter
- event = "InsertEnter",
- -- these dependencies will only be loaded when cmp loads
- -- dependencies are always lazy-loaded unless specified otherwise
- dependencies = {
- "hrsh7th/cmp-nvim-lsp",
- "hrsh7th/cmp-buffer",
- },
- config = function()
- -- ...
- end,
- },
-
- -- you can use the VeryLazy event for things that can
- -- load later and are not important for the initial UI
- { "stevearc/dressing.nvim", event = "VeryLazy" },
-
- {
- "cshuaimin/ssr.nvim",
- -- init is always executed during startup, but doesn't load the plugin yet.
- -- init implies lazy loading
- init = function()
- vim.keymap.set({ "n", "x" }, "