💤 A modern plugin manager for Neovim
Go to file
Folke Lemaitre e651e0110d
docs: screenshots
2022-12-14 21:08:28 +01:00
.github ci: changed name of release-please package 2022-11-29 15:55:46 +01:00
doc chore(build): auto-generate vimdoc 2022-12-14 20:07:51 +00:00
lua/lazy feat!: lazy now handles the full startup sequence (`vim.go.loadplugins=false`) 2022-12-14 21:03:53 +01:00
tests test: fixed tests 2022-12-13 10:29:48 +01:00
.gitignore build: added plenary test runner 2022-11-28 07:31:13 +01:00
.neoconf.json feat: added full semver and range parsing 2022-11-28 07:31:43 +01:00
CHANGELOG.md chore(main): release 3.0.0 (#8) 2022-12-13 10:36:11 +01:00
README.md docs: screenshots 2022-12-14 21:08:28 +01:00
selene.toml build: added selene 2022-12-01 11:23:39 +01:00
stylua.toml style: formatting 2022-11-20 22:34:59 +01:00
vim.toml build: added selene 2022-12-01 11:23:39 +01:00

README.md

💤 lazy.nvim

Modern plugin manager for Neovim

image

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

  • packspec

    • 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?
    • package meta index (package.lua cache for all packages)

Profiler

image

image

📦 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

📦 Other Neovim Plugin Managers in Lua