lazy.nvim/README.md

3.6 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

  • 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)

📦 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