3.9 KiB
💤 lazy.nvim
Modern plugin manager for Neovim
✨ Features
- 📦 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 support
- 📈 Statusline component to see the number of pending updates
✅ TODO
-
fancy UI to manage all your Neovim plugins
-
auto lazy-loading of lua modules
-
lazy-loading on events, commands, filetypes and key mappings
-
Partial clones instead of shallow clones
-
waits till missing deps are installed (bootstrap Neovim and start using it right away)
-
Async
-
No need to manually compile
-
Fast. Automatically caches and compiles byte code of all lua modules needed during startup
-
Correct sequencing of dependencies (deps should always be opt. Maybe make everything opt?)
-
Config in multiple files
-
dev option and patterns for local packages
-
Profiling
-
lockfile
lazy-lock.json
-
upvalues in
config
&init
-
automatically check for updates
-
commit, branch, tag, version and full semver support
-
statusline component to see number of pending updates
-
semver https://devhints.io/semver
-
auto-loading on completion for lazy-loaded commands
-
bootstrap code
-
Background update checker
-
health checks: check merge conflicts async
- unsupported props or props from other managers
- other packages still in site?
- other package manager artifacts still present? compiled etc
-
status page showing running handlers and cache stats
-
temp colorscheme used during startup when installing missing plugins
-
automatically reloads when config changes are detected
-
handlers imply opt
-
dependencies imply opt for deps
-
show spec errors in health
-
fix plugin details
-
show disabled plugins (strikethrough?)
-
log file
-
git tests
-
Import specs from other plugin managers
-
- add support to specify
engines
,os
andcpu
like inpackage.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?
- package meta index (package.lua cache for all packages)
- add support to specify
Profiler
📦 Differences with Packer
-
Plugin Spec:
setup
=>init
requires
=>dependencies
as
=>name
opt
=>lazy
run
=>build
lock
=>pin
module
is auto-loaded. No need to specify