💤 A modern plugin manager for Neovim
Go to file
Folke Lemaitre 714bc0a136
feat(ui): improvements to profiling and rendering of loaded reasons
2022-12-02 09:25:30 +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-01 12:34:59 +00:00
lua/lazy feat(ui): improvements to profiling and rendering of loaded reasons 2022-12-02 09:25:30 +01:00
tests feat!: all plugins are now opt. Plugin.opt => Plugin.lazy 2022-12-01 11:23:39 +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 1.2.0 2022-11-30 23:45:53 +01:00
README.md feat: lazy setup with either a plugins module, or a plugins spec 2022-12-01 13:34:01 +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

Features

  • Partial clones instead of shallow clones
  • waits till missing deps are installed (bootstrap Neovim and start using it right away)
  • Async
  • No need for compile
  • Fast
  • Correct sequencing of dependencies (deps should always be opt. Maybe make everything opt?)
  • Config in multiple files
  • Patterns for local packages
  • Profiling
  • lockfile
  • upvalues in config & init
  • check for updates
  • lazy-lock.lua
  • tag/version support git tag --sort version:refname
  • auto-loading on completion for lazy-loaded commands
  • bootstrap code
  • semver https://devhints.io/semver https://semver.npmjs.com/

TODO

  • health checks: check merge conflicts async
    • unsupported props or props from other managers
  • rename run to build
  • delete lazy keymaps when a plugin loads
  • allow setting up plugins through config
  • task timeout
  • log file
  • deal with re-sourcing init.lua. Check a global?
  • incorrect when switching TN from opt to start
  • git tests
  • max concurrency
  • ui border
  • make sure we can reload specs while keeping state
  • show disabled plugins (strikethrough?)
  • Import specs from Packer
  • use uv file watcher (or stat) to check for config changes
  • 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?
  • support for Plugin.lock
  • defaults for git log
  • view keybindings for update/clean/...
  • add profiler to view
  • add buttons for actions
  • show time taken for op in view
  • package meta index (package.lua cache for all packages)
  • auto lazy-loading of lua modules
  • clear errors
  • add support for versions git tag --sort v:refname
  • rename requires to dependencies
  • move tasks etc to Plugin.state
  • handlers imply opt
  • dependencies imply opt for deps
  • fix local plugin spec
  • investigate all opt=true. Simplifies logic (easily switch between opt/start afterwards)

📦 Differences with Packer

  • Plugin Spec:

    • setup => init
    • requires => dependencies
    • as => name
    • opt => lazy
    • run => build

📦 Other Neovim Plugin Managers in Lua