-
-
-
-**lazy.nvim** is a modern plugin manager for Neovim.
-
-
+# lazy.nvim
## ✨ Features
-- 📦 Manage all your Neovim plugins with a powerful UI
-- 🚀 Fast startup times thanks to automatic caching and bytecode compilation of Lua modules
-- 💾 Partial clones instead of shallow clones
-- 🔌 Automatic lazy-loading of Lua modules and lazy-loading on events, commands, filetypes, and key mappings
-- ⏳ Automatically install missing plugins before starting up Neovim, allowing you to start using it right away
-- 💪 Async execution for improved performance
-- 🛠️ No need to manually compile plugins
-- 🧪 Correct sequencing of dependencies
-- 📁 Configurable in multiple files
-- 📚 Generates helptags of the headings in `README.md` files for plugins that don't have vimdocs
-- 💻 Dev options and patterns for using local plugins
-- 📊 Profiling tools to optimize performance
-- 🔒 Lockfile `lazy-lock.json` to keep track of installed plugins
-- 🔎 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
-- 🎨 Automatically lazy-loads colorschemes
+- [x] Partial clones instead of shallow clones
+- [x] waits till missing deps are installed (bootstrap Neovim and start using it right away)
+- [x] Async
+- [x] No need for compile
+- [x] Fast
+- [x] Correct sequencing of dependencies (deps should always be opt. Maybe make everything opt?)
+- [ ] Import specs from Packer
+- [x] Config in multiple files
+- [x] Patterns for local packages
+- [x] Profiling
+- [x] lockfile
+- [x] upvalues in `config` & `init`
+- [x] check for updates
+- [ ] package.lua
+- [ ] package-lock.lua
+- [x] tag/version support `git tag --sort version:refname`
+- [x] auto-loading on completion for lazy-loaded commands
+- [x] bootstrap code
+- [x] semver https://devhints.io/semver
+ https://semver.npmjs.com/
-## ⚡️ Requirements
+## ✅ TODO
-- Neovim >= **0.8.0** (needs to be built with **LuaJIT**)
-- Git >= **2.19.0** (for partial clones support)
-- a [Nerd Font](https://www.nerdfonts.com/) **_(optional)_**
-- [luarocks](https://luarocks.org/) to install rockspecs.
- You can remove `rockspec` from `opts.pkg.sources` to disable this feature.
+- [x] support for Plugin.lock
+- [ ] health checks: check merge conflicts async
+- [x] defaults for git log
+- [x] view keybindings for update/clean/...
+- [x] add profiler to view
+- [x] add buttons for actions
+- [x] show time taken for op in view
+- [ ] package meta index (package.lua cache for all packages)
+- [ ] migrate from Packer
+- [ ] auto lazy-loading of lua modules
+- [ ] use uv file watcher to check for config changes
+- [x] clear errors
+- [x] add support for versions `git tag --sort v:refname`
+- [x] rename requires to dependencies
+- [x] move tasks etc to Plugin.state
+- [ ] allow setting up plugins through config
+- [ ] handlers imply opt
+- [ ] dependencies imply opt for deps
+- [x] fix local plugin spec
-## 🚀 Getting Started
+## 📦 Differences with Packer
-Check the [documentation website](https://lazy.folke.io/) for more information.
\ No newline at end of file
+- **Plugin Spec**:
+
+ - `setup` => `init`
+ - `requires` => `dependencies`
+ - `as` => `name`
diff --git a/TODO.md b/TODO.md
deleted file mode 100644
index 3d4da4e..0000000
--- a/TODO.md
+++ /dev/null
@@ -1,79 +0,0 @@
-# ✅ TODO
-
-- [x] progress bar?
-- [x] options when opening file
-- [x] lazy notify? not ideal when installing missing stuff
-- [x] topmods?
-
-- [ ] better merging options?
-- [ ] especially what to do with merging of handlers?
-- [ ] overwriting keymaps probably doesn't work
-- [ ] disabled deps?
-
-- [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
-- [x] Partial clones instead of shallow clones
-- [x] waits till missing deps are installed (bootstrap Neovim and start using it right away)
-- [x] Async
-- [x] No need to manually compile
-- [x] Fast. Automatically caches and compiles byte code of all lua modules needed during startup
-- [x] Correct sequencing of dependencies (deps should always be opt. Maybe make everything opt?)
-- [x] Config in multiple files
-- [x] dev option and patterns for local packages
-- [x] Profiling
-- [x] lockfile `lazy-lock.json`
-- [x] upvalues in `config` & `init`
-- [x] automatically check for updates
-- [x] commit, branch, tag, version and full semver support
-- [x] statusline component to see number of pending updates
-
-- [x] semver https://devhints.io/semver
-- [x] auto-loading on completion for lazy-loaded commands
-- [x] bootstrap code
-- [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
-- [x] show spec errors in health
-- [x] fix plugin details
-- [ ] show disabled plugins (strikethrough?)
-- [ ] log file
-- [x] git tests
-- [x] Import specs from other plugin managers
-- [ ] [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 the highest version?
- - [ ] package meta index (package.lua cache for all packages)
-
-- [x] document highlight groups
-- [x] document user events
-- [x] document API, like lazy.plugins()
-- [x] icons
-
-- [x] check in cache if rtp files match
-- [x] I think the installation section, specifically the loading part, could use an
- extra sentence or two. I was confused on what `config.plugins` was initially.
- Maybe a quick, "for example, if you have a lua file
- `~/.config/nvim/lua/config/plugins.lua` that returns a table" or something it'd
- remove most question marks I think.
-- [x] When auto-installing the plugins the cursor isn't focused on the floating
- window, but on the non-floating window in the background.
-- [x] Doing `:Lazy clean` doesn't show which plugins were removed.
-- [x] Shouldn't the "Versioning" section be in the "Lockfile" chapter?
-- [x] Why are personal dotfiles used as examples? Dotfiles change all the time,
- there's no guarantee this will be relevant or even exist in two years.
-- [x] What's the difference between lazy-loading and verylazy-loading?
-- [x] Most emojis in "Configuration" aren't shown for me.
-- [x] add section on how to uninstall
-- [x] add `:Packadd` command or something similar
-- [x] headless install
-- [x] better keys handling
diff --git a/bootstrap.lua b/bootstrap.lua
deleted file mode 100644
index c934c48..0000000
--- a/bootstrap.lua
+++ /dev/null
@@ -1,51 +0,0 @@
--- Lazy Bootstrapper
--- Usage:
--- ```lua
--- load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))()
--- ```
-local M = {}
-
-function M.setup()
- local uv = vim.uv or vim.loop
- if vim.env.LAZY_STDPATH then
- local root = vim.fn.fnamemodify(vim.env.LAZY_STDPATH, ":p"):gsub("[\\/]$", "")
- for _, name in ipairs({ "config", "data", "state", "cache" }) do
- vim.env[("XDG_%s_HOME"):format(name:upper())] = root .. "/" .. name
- end
- end
-
- if vim.env.LAZY_PATH and not uv.fs_stat(vim.env.LAZY_PATH) then
- vim.env.LAZY_PATH = nil
- end
-
- local lazypath = vim.env.LAZY_PATH or vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
- if not vim.env.LAZY_PATH and not uv.fs_stat(lazypath) then
- vim.api.nvim_echo({
- {
- "Cloning lazy.nvim\n\n",
- "DiagnosticInfo",
- },
- }, true, {})
- local lazyrepo = "https://github.com/folke/lazy.nvim.git"
- local ok, out = pcall(vim.fn.system, {
- "git",
- "clone",
- "--filter=blob:none",
- lazyrepo,
- lazypath,
- })
- if not ok or vim.v.shell_error ~= 0 then
- vim.api.nvim_echo({
- { "Failed to clone lazy.nvim\n", "ErrorMsg" },
- { vim.trim(out or ""), "WarningMsg" },
- { "\nPress any key to exit...", "MoreMsg" },
- }, true, {})
- vim.fn.getchar()
- os.exit(1)
- end
- end
- vim.opt.rtp:prepend(lazypath)
-end
-M.setup()
-
-return M
diff --git a/doc/.keep b/doc/.keep
deleted file mode 100644
index e69de29..0000000
diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt
index 2ae3b36..52fb180 100644
--- a/doc/lazy.nvim.txt
+++ b/doc/lazy.nvim.txt
@@ -1,1430 +1,74 @@
-*lazy.nvim.txt* A modern plugin manager for Neovim
+*lazy.nvim.txt* For NVIM v0.5.0 Last change: 2022 November 29
==============================================================================
Table of Contents *lazy.nvim-table-of-contents*
-1. 📰 What’s new? |lazy.nvim-📰-what’s-new?|
- - 11.x |lazy.nvim-📰-what’s-new?-11.x|
-2. 🚀 Getting Started |lazy.nvim-🚀-getting-started|
- - ✨ Features |lazy.nvim-🚀-getting-started-✨-features|
- - ⚡️ Requirements |lazy.nvim-🚀-getting-started-⚡️-requirements|
-3. 🛠️ Installation |lazy.nvim-🛠️-installation|
- - Structured Setup |lazy.nvim-🛠️-installation-structured-setup|
- - Single File Setup |lazy.nvim-🛠️-installation-single-file-setup|
-4. 🔌 Plugin Spec |lazy.nvim-🔌-plugin-spec|
- - Spec Source |lazy.nvim-🔌-plugin-spec-spec-source|
- - Spec Loading |lazy.nvim-🔌-plugin-spec-spec-loading|
- - Spec Setup |lazy.nvim-🔌-plugin-spec-spec-setup|
- - Spec Lazy Loading |lazy.nvim-🔌-plugin-spec-spec-lazy-loading|
- - Spec Versioning |lazy.nvim-🔌-plugin-spec-spec-versioning|
- - Spec Advanced |lazy.nvim-🔌-plugin-spec-spec-advanced|
- - Examples |lazy.nvim-🔌-plugin-spec-examples|
- - Lazy Loading |lazy.nvim-🔌-plugin-spec-lazy-loading|
- - Versioning |lazy.nvim-🔌-plugin-spec-versioning|
-5. 📦 Packages |lazy.nvim-📦-packages|
- - Lazy |lazy.nvim-📦-packages-lazy|
- - Rockspec |lazy.nvim-📦-packages-rockspec|
- - Packspec |lazy.nvim-📦-packages-packspec|
-6. ⚙️ Configuration |lazy.nvim-⚙️-configuration|
- - 🌈 Highlight Groups|lazy.nvim-⚙️-configuration-🌈-highlight-groups|
-7. 🚀 Usage |lazy.nvim-🚀-usage|
- - ▶️ Startup Sequence |lazy.nvim-🚀-usage-▶️-startup-sequence|
- - 🚀 Commands |lazy.nvim-🚀-usage-🚀-commands|
- - 📆 User Events |lazy.nvim-🚀-usage-📆-user-events|
- - ❌ Uninstalling |lazy.nvim-🚀-usage-❌-uninstalling|
- - 🔒 Lockfile |lazy.nvim-🚀-usage-🔒-lockfile|
- - 📦 Migration Guide |lazy.nvim-🚀-usage-📦-migration-guide|
- - ⚡ Profiling & Debug |lazy.nvim-🚀-usage-⚡-profiling-&-debug|
- - 📂 Structuring Your Plugins|lazy.nvim-🚀-usage-📂-structuring-your-plugins|
-8. 🔥 Developers |lazy.nvim-🔥-developers|
- - Best Practices |lazy.nvim-🔥-developers-best-practices|
- - Building |lazy.nvim-🔥-developers-building|
- - Minit (Minimal Init) |lazy.nvim-🔥-developers-minit-(minimal-init)|
-9. Links |lazy.nvim-links|
+1. lazy.nvim |lazy.nvim-lazy.nvim|
+ - Features |lazy.nvim-features|
+ - TODO |lazy.nvim-todo|
+ - Differences with Packer |lazy.nvim-differences-with-packer|
==============================================================================
-1. 📰 What’s new? *lazy.nvim-📰-what’s-new?*
+1. lazy.nvim *lazy.nvim-lazy.nvim*
+
+FEATURES *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?)
+- Import specs from Packer
+- Config in multiple files
+- Patterns for local packages
+- Profiling
+- lockfile
+- upvalues in `config` & `init`
+- check for updates
+- package.lua
+- package-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 *lazy.nvim-todo*
+
+
+- support for Plugin.lock
+- health checks: check merge conflicts async
+- 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)
+- migrate from Packer
+- auto lazy-loading of lua modules
+- use uv file watcher to check for config changes
+- clear errors
+- add support for versions `git tag --sort v:refname`
+- rename requires to dependencies
+- move tasks etc to Plugin.state
+- allow setting up plugins through config
+- handlers imply opt
+- dependencies imply opt for deps
+- fix local plugin spec
+
+
+DIFFERENCES WITH PACKER *lazy.nvim-differences-with-packer*
+
+
+- **Plugin Spec**:
+ - `setup` => `init`
+ - `requires` => `dependencies`
+ - `as` => `name`
-11.X *lazy.nvim-📰-what’s-new?-11.x*
-
-- **New Website**: There’s a whole new website with a fresh look and improved
- documentation. Check it out at