2022-12-15 04:04:04 +08:00
|
|
|
# 💤 lazy.nvim
|
|
|
|
|
|
|
|
Modern plugin manager for Neovim
|
2022-11-26 21:31:29 +08:00
|
|
|
|
2022-12-15 04:05:25 +08:00
|
|
|
![image](https://user-images.githubusercontent.com/292349/207702945-6f1e7c89-9076-430b-b9e1-0bae8864a772.png)
|
|
|
|
|
2022-11-28 14:36:46 +08:00
|
|
|
## ✨ Features
|
|
|
|
|
2022-12-15 04:04:04 +08:00
|
|
|
- 📦 Manage all your Neovim plugins with a fancy UI
|
|
|
|
- 🚀 Fast startup: Automatically caches and compiles byte code of all lua modules needed during startup
|
|
|
|
- 💾 Partial clones instead of shallow clones
|
|
|
|
- 🔌 Auto lazy-loading of lua modules
|
|
|
|
- 📆 Lazy-loading on events, commands, filetypes and key mappings
|
|
|
|
- ⏳ Automatically installs missing plugins before starting up so you can start using Neovim right away
|
|
|
|
- 💪 Async execution for improved performance
|
|
|
|
- 🛠️ No need to manually compile plugins
|
|
|
|
- 🧪 Correct sequencing of dependencies
|
|
|
|
- 📁 Configurable in multiple files
|
|
|
|
- 💻 Dev option and patterns for using local plugin
|
|
|
|
- 📊 Profiling tools to optimize performance
|
|
|
|
- 🔒 Lockfile `lazy-lock.json` to keep track of installed plugin versions
|
|
|
|
- 🔎 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
|
|
|
|
|
2022-12-13 17:10:11 +08:00
|
|
|
## ✅ TODO
|
|
|
|
|
|
|
|
- [x] fancy UI to manage all your Neovim plugins
|
|
|
|
- [x] auto lazy-loading of lua modules
|
|
|
|
- [x] lazy-loading on events, commands, filetypes and key mappings
|
2022-11-29 07:15:13 +08:00
|
|
|
- [x] Partial clones instead of shallow clones
|
|
|
|
- [x] waits till missing deps are installed (bootstrap Neovim and start using it right away)
|
|
|
|
- [x] Async
|
2022-12-13 17:10:11 +08:00
|
|
|
- [x] No need to manually compile
|
|
|
|
- [x] Fast. Automatically caches and compiles byte code of all lua modules needed during startup
|
2022-11-29 07:15:13 +08:00
|
|
|
- [x] Correct sequencing of dependencies (deps should always be opt. Maybe make everything opt?)
|
|
|
|
- [x] Config in multiple files
|
2022-12-13 17:10:11 +08:00
|
|
|
- [x] dev option and patterns for local packages
|
2022-11-29 07:15:13 +08:00
|
|
|
- [x] Profiling
|
2022-12-13 17:10:11 +08:00
|
|
|
- [x] lockfile `lazy-lock.json`
|
2022-11-29 19:16:09 +08:00
|
|
|
- [x] upvalues in `config` & `init`
|
2022-12-15 04:04:04 +08:00
|
|
|
- [x] automatically check for updates
|
|
|
|
- [x] commit, branch, tag, version and full semver support
|
|
|
|
- [x] statusline component to see number of pending updates
|
|
|
|
|
2022-12-13 17:10:11 +08:00
|
|
|
- [x] semver https://devhints.io/semver
|
2022-11-29 07:15:13 +08:00
|
|
|
- [x] auto-loading on completion for lazy-loaded commands
|
2022-11-29 19:49:15 +08:00
|
|
|
- [x] bootstrap code
|
2022-12-13 17:10:11 +08:00
|
|
|
- [x] Background update checker
|
|
|
|
- [x] health checks: check merge conflicts async
|
|
|
|
- [x] unsupported props or props from other managers
|
|
|
|
- [x] other packages still in site?
|
|
|
|
- [x] other package manager artifacts still present? compiled etc
|
|
|
|
- [x] status page showing running handlers and cache stats
|
|
|
|
- [x] temp colorscheme used during startup when installing missing plugins
|
|
|
|
- [x] automatically reloads when config changes are detected
|
|
|
|
- [x] handlers imply opt
|
|
|
|
- [x] dependencies imply opt for deps
|
|
|
|
- [ ] show spec errors in health
|
2022-12-04 06:15:50 +08:00
|
|
|
- [ ] fix plugin details
|
|
|
|
- [ ] show disabled plugins (strikethrough?)
|
2022-12-01 06:15:14 +08:00
|
|
|
- [ ] log file
|
|
|
|
- [ ] git tests
|
2022-12-02 16:25:25 +08:00
|
|
|
- [ ] Import specs from other plugin managers
|
2022-12-01 06:15:14 +08:00
|
|
|
- [ ] [packspec](https://github.com/nvim-lua/nvim-package-specification)
|
|
|
|
- [ ] add support to specify `engines`, `os` and `cpu` like in `package.json`
|
|
|
|
- [ ] semver merging. Should check if two or more semver ranges are compatible and calculate the union range
|
|
|
|
- default semver merging strategy: if no version matches all, then use highest version?
|
2022-12-02 16:25:25 +08:00
|
|
|
- [ ] package meta index (package.lua cache for all packages)
|
2022-12-15 04:07:06 +08:00
|
|
|
|
|
|
|
## Profiler
|
|
|
|
|
|
|
|
![image](https://user-images.githubusercontent.com/292349/207703263-3b38ca45-9779-482b-b684-4f8c3b3e76d0.png)
|
|
|
|
|
2022-12-15 04:08:28 +08:00
|
|
|
![image](https://user-images.githubusercontent.com/292349/207703522-8bb20678-bb4c-4424-80e4-add3219711c3.png)
|
|
|
|
|
|
|
|
|
2022-11-29 22:25:09 +08:00
|
|
|
|
|
|
|
## 📦 Differences with Packer
|
|
|
|
|
|
|
|
- **Plugin Spec**:
|
|
|
|
|
|
|
|
- `setup` => `init`
|
|
|
|
- `requires` => `dependencies`
|
|
|
|
- `as` => `name`
|
2022-12-01 18:32:52 +08:00
|
|
|
- `opt` => `lazy`
|
2022-12-01 20:33:55 +08:00
|
|
|
- `run` => `build`
|
2022-12-02 16:25:25 +08:00
|
|
|
- `lock` => `pin`
|
|
|
|
- `module` is auto-loaded. No need to specify
|
2022-12-01 06:15:14 +08:00
|
|
|
|
|
|
|
## 📦 Other Neovim Plugin Managers in Lua
|
|
|
|
|
|
|
|
- [packer.nvim](https://github.com/wbthomason/packer.nvim)
|
|
|
|
- [paq-nvim](https://github.com/savq/paq-nvim)
|
|
|
|
- [neopm](https://github.com/ii14/neopm)
|
|
|
|
- [dep](https://github.com/chiyadev/dep)
|
|
|
|
- [optpack.nvim](https://github.com/notomo/optpack.nvim)
|
2022-12-04 00:46:10 +08:00
|
|
|
- [pact.nvim](https://github.com/rktjmp/pact.nvim)
|