From 6a141a6dbb6f6b5495ef6716c0dce898546d7b2c Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 1 Jun 2024 18:20:39 +0200 Subject: [PATCH 001/342] feat: set `vim.env.LAZY` to lazy root --- lua/lazy/core/config.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 50ca7e4..0bd7a5e 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -221,6 +221,7 @@ function M.setup(opts) table.insert(M.options.install.colorscheme, "habamax") M.options.root = Util.norm(M.options.root) + vim.env.LAZY = M.options.root if type(M.options.dev.path) == "string" then M.options.dev.path = Util.norm(M.options.dev.path) end From a3edeae34a5dd2c129388c6cbb8f1d156e6f7724 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 1 Jun 2024 16:21:15 +0000 Subject: [PATCH 002/342] chore(build): auto-generate vimdoc --- doc/lazy.nvim.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index 19a09cd..ff28c50 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -1,4 +1,4 @@ -*lazy.nvim.txt* For Neovim >= 0.8.0 Last change: 2024 May 31 +*lazy.nvim.txt* For Neovim >= 0.8.0 Last change: 2024 June 01 ============================================================================== Table of Contents *lazy.nvim-table-of-contents* From ad30030b6abca7dac5a493c58b4d183b3fe93202 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 1 Jun 2024 18:57:42 +0200 Subject: [PATCH 003/342] chore(main): release 10.22.0 (#1493) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- CHANGELOG.md | 7 +++++++ lua/lazy/core/config.lua | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c67f57a..f0c0a5e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [10.22.0](https://github.com/folke/lazy.nvim/compare/v10.21.2...v10.22.0) (2024-06-01) + + +### Features + +* set `vim.env.LAZY` to lazy root ([6a141a6](https://github.com/folke/lazy.nvim/commit/6a141a6dbb6f6b5495ef6716c0dce898546d7b2c)) + ## [10.21.2](https://github.com/folke/lazy.nvim/compare/v10.21.1...v10.21.2) (2024-05-31) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 0bd7a5e..b4f7c2e 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -182,7 +182,7 @@ M.defaults = { debug = false, } -M.version = "10.21.2" -- x-release-please-version +M.version = "10.22.0" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 58536d4c8134613791504e655743243a8df554fd Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sun, 2 Jun 2024 14:48:42 +0200 Subject: [PATCH 004/342] Revert "feat: set `vim.env.LAZY` to lazy root" This reverts commit 6a141a6dbb6f6b5495ef6716c0dce898546d7b2c. --- lua/lazy/core/config.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index b4f7c2e..9c0a849 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -221,7 +221,6 @@ function M.setup(opts) table.insert(M.options.install.colorscheme, "habamax") M.options.root = Util.norm(M.options.root) - vim.env.LAZY = M.options.root if type(M.options.dev.path) == "string" then M.options.dev.path = Util.norm(M.options.dev.path) end From 1418f30806ac0e6882c8284e0e67ad1c2bfdfb66 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 2 Jun 2024 12:49:18 +0000 Subject: [PATCH 005/342] chore(build): auto-generate vimdoc --- doc/lazy.nvim.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index ff28c50..d03a1c9 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -1,4 +1,4 @@ -*lazy.nvim.txt* For Neovim >= 0.8.0 Last change: 2024 June 01 +*lazy.nvim.txt* For Neovim >= 0.8.0 Last change: 2024 June 02 ============================================================================== Table of Contents *lazy.nvim-table-of-contents* From 9242edb73939e7508dbd827e9c013579391f0668 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sun, 2 Jun 2024 14:51:44 +0200 Subject: [PATCH 006/342] fix: force new release --- lua/lazy/core/config.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 9c0a849..5fbf762 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -220,6 +220,7 @@ function M.setup(opts) end table.insert(M.options.install.colorscheme, "habamax") + -- root M.options.root = Util.norm(M.options.root) if type(M.options.dev.path) == "string" then M.options.dev.path = Util.norm(M.options.dev.path) From b0ba3f9399bf48c86abaa4db1a40bd0b681d5018 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 2 Jun 2024 14:53:20 +0200 Subject: [PATCH 007/342] chore(main): release 10.22.1 (#1495) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- CHANGELOG.md | 7 +++++++ lua/lazy/core/config.lua | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f0c0a5e..78cfcad 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [10.22.1](https://github.com/folke/lazy.nvim/compare/v10.22.0...v10.22.1) (2024-06-02) + + +### Bug Fixes + +* force new release ([9242edb](https://github.com/folke/lazy.nvim/commit/9242edb73939e7508dbd827e9c013579391f0668)) + ## [10.22.0](https://github.com/folke/lazy.nvim/compare/v10.21.2...v10.22.0) (2024-06-01) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 5fbf762..9c7bed3 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -182,7 +182,7 @@ M.defaults = { debug = false, } -M.version = "10.22.0" -- x-release-please-version +M.version = "10.22.1" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From f39c79fcb17ec01c24c82e139499582ee376a94b Mon Sep 17 00:00:00 2001 From: Zhizhen He Date: Mon, 3 Jun 2024 15:18:43 +0800 Subject: [PATCH 008/342] style: fix some typo (#1496) --- README.md | 10 +++++----- TODO.md | 4 ++-- lua/lazy/core/cache.lua | 4 ++-- lua/lazy/core/plugin.lua | 2 +- lua/lazy/example.lua | 4 ++-- lua/lazy/stats.lua | 2 +- 6 files changed, 13 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index d3c1461..9bde4f9 100644 --- a/README.md +++ b/README.md @@ -81,7 +81,7 @@ require("lazy").setup({ ## 🔌 Plugin Spec | Property | Type | Description | -| ---------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| ---------------- | ----------------------------------------------------------------------------------------------------------------------------------- |------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | **[1]** | `string?` | Short plugin url. Will be expanded using `config.git.url_format` | | **dir** | `string?` | A directory pointing to a local plugin | | **url** | `string?` | A custom git url where the plugin is hosted | @@ -95,7 +95,7 @@ require("lazy").setup({ | **opts** | `table` or `fun(LazyPlugin, opts:table)` | `opts` should be a table (will be merged with parent specs), return a table (replaces parent specs) or should change a table. The table will be passed to the `Plugin.config()` function. Setting this value will imply `Plugin.config()` | | **config** | `fun(LazyPlugin, opts:table)` or `true` | `config` is executed when the plugin loads. The default implementation will automatically run `require(MAIN).setup(opts)` if `opts` or `config = true` is set. Lazy uses several heuristics to determine the plugin's `MAIN` module automatically based on the plugin's **name**. See also `opts`. To use the default implementation without `opts` set `config` to `true`. | | **main** | `string?` | You can specify the `main` module to use for `config()` and `opts()`, in case it can not be determined automatically. See `config()` | -| **build** | `fun(LazyPlugin)` or `string` or a list of build commands | `build` is executed when a plugin is installed or updated. Before running `build`, a plugin is first loaded. If it's a string it will be ran as a shell command. When prefixed with `:` it is a Neovim command. You can also specify a list to executed multiple build commands. Some plugins provide their own `build.lua` which is automatically used by lazy. So no need to specify a build step for those plugins. | +| **build** | `fun(LazyPlugin)` or `string` or a list of build commands | `build` is executed when a plugin is installed or updated. Before running `build`, a plugin is first loaded. If it's a string it will be run as a shell command. When prefixed with `:` it is a Neovim command. You can also specify a list to executed multiple build commands. Some plugins provide their own `build.lua` which is automatically used by lazy. So no need to specify a build step for those plugins. | | **branch** | `string?` | Branch of the repository | | **tag** | `string?` | Tag of the repository | | **commit** | `string?` | Commit of the repository | @@ -279,8 +279,8 @@ return { -- you can use a custom url to fetch a plugin { url = "git@github.com:folke/noice.nvim.git" }, - -- local plugins can also be configure with the dev option. - -- This will use {config.dev.path}/noice.nvim/ instead of fetching it from Github + -- local plugins can also be configured with the dev option. + -- This will use {config.dev.path}/noice.nvim/ instead of fetching it from GitHub -- With the dev option, you can easily switch between the local and installed version of a plugin { "folke/noice.nvim", dev = true }, } @@ -560,7 +560,7 @@ Stats API (`require("lazy").stats()`): { -- startuptime in milliseconds till UIEnter startuptime = 0, - -- when true, startuptime is the accurate cputime for the Neovim process. (Linux & Macos) + -- when true, startuptime is the accurate cputime for the Neovim process. (Linux & macOS) -- this is more accurate than `nvim --startuptime`, and as such will be slightly higher -- when false, startuptime is calculated based on a delta with a timestamp when lazy started. real_cputime = false, diff --git a/TODO.md b/TODO.md index d3d2f09..3d4da4e 100644 --- a/TODO.md +++ b/TODO.md @@ -51,7 +51,7 @@ - [ ] 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? + - 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 @@ -65,7 +65,7 @@ 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 autoinstalling the plugins the cursor isn't focused on the floating +- [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? diff --git a/lua/lazy/core/cache.lua b/lua/lazy/core/cache.lua index 07cb677..fc52542 100644 --- a/lua/lazy/core/cache.lua +++ b/lua/lazy/core/cache.lua @@ -8,7 +8,7 @@ local M = {} ---@class ModuleFindOpts ---@field all? boolean Search for all matches (defaults to `false`) ---@field rtp? boolean Search for modname in the runtime path (defaults to `true`) ----@field patterns? string[] Paterns to use (defaults to `{"/init.lua", ".lua"}`) +---@field patterns? string[] Patterns to use (defaults to `{"/init.lua", ".lua"}`) ---@field paths? string[] Extra paths to search for modname ---@class ModuleInfo @@ -474,7 +474,7 @@ function Loader.lsmod(path) return Loader._indexed[path] end ---- Debug function that wrapps all loaders and tracks stats +--- Debug function that wraps all loaders and tracks stats ---@private function M._profile_loaders() for l, loader in pairs(package.loaders) do diff --git a/lua/lazy/core/plugin.lua b/lua/lazy/core/plugin.lua index 7bae395..905c078 100644 --- a/lua/lazy/core/plugin.lua +++ b/lua/lazy/core/plugin.lua @@ -117,7 +117,7 @@ function Spec:add(plugin, results) dir = dir_dev end elseif plugin.dev == false then - -- explicitely select the default path + -- explicitly select the default path dir = Config.options.root .. "/" .. plugin.name end diff --git a/lua/lazy/example.lua b/lua/lazy/example.lua index df52faf..5b7790a 100644 --- a/lua/lazy/example.lua +++ b/lua/lazy/example.lua @@ -80,8 +80,8 @@ return { -- you can use a custom url to fetch a plugin { url = "git@github.com:folke/noice.nvim.git" }, - -- local plugins can also be configure with the dev option. - -- This will use {config.dev.path}/noice.nvim/ instead of fetching it from Github + -- local plugins can also be configured with the dev option. + -- This will use {config.dev.path}/noice.nvim/ instead of fetching it from GitHub -- With the dev option, you can easily switch between the local and installed version of a plugin { "folke/noice.nvim", dev = true }, } diff --git a/lua/lazy/stats.lua b/lua/lazy/stats.lua index c4f1ec2..36865db 100644 --- a/lua/lazy/stats.lua +++ b/lua/lazy/stats.lua @@ -6,7 +6,7 @@ local M = {} M._stats = { -- startuptime in milliseconds till UIEnter startuptime = 0, - -- when true, startuptime is the accurate cputime for the Neovim process. (Linux & Macos) + -- when true, startuptime is the accurate cputime for the Neovim process. (Linux & macOS) -- this is more accurate than `nvim --startuptime`, and as such will be slightly higher -- when false, startuptime is calculated based on a delta with a timestamp when lazy started. real_cputime = false, From ebbf84eb23d796ffd92ad88b980d3cf89921add4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 3 Jun 2024 07:19:16 +0000 Subject: [PATCH 009/342] chore(build): auto-generate vimdoc --- doc/lazy.nvim.txt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index d03a1c9..16bfe6e 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -1,4 +1,4 @@ -*lazy.nvim.txt* For Neovim >= 0.8.0 Last change: 2024 June 02 +*lazy.nvim.txt* For Neovim >= 0.8.0 Last change: 2024 June 03 ============================================================================== Table of Contents *lazy.nvim-table-of-contents* @@ -161,7 +161,7 @@ PLUGIN SPEC *lazy.nvim-lazy.nvim-plugin-spec* build fun(LazyPlugin) or string or a list of build commands build is executed when a plugin is installed or updated. Before running build, a plugin is first - loaded. If it’s a string it will be ran as a shell + loaded. If it’s a string it will be run as a shell command. When prefixed with : it is a Neovim command. You can also specify a list to executed multiple build commands. Some plugins provide their @@ -386,8 +386,8 @@ EXAMPLES ~ -- you can use a custom url to fetch a plugin { url = "git@github.com:folke/noice.nvim.git" }, - -- local plugins can also be configure with the dev option. - -- This will use {config.dev.path}/noice.nvim/ instead of fetching it from Github + -- local plugins can also be configured with the dev option. + -- This will use {config.dev.path}/noice.nvim/ instead of fetching it from GitHub -- With the dev option, you can easily switch between the local and installed version of a plugin { "folke/noice.nvim", dev = true }, } @@ -675,7 +675,7 @@ Stats API (`require("lazy").stats()`): { -- startuptime in milliseconds till UIEnter startuptime = 0, - -- when true, startuptime is the accurate cputime for the Neovim process. (Linux & Macos) + -- when true, startuptime is the accurate cputime for the Neovim process. (Linux & macOS) -- this is more accurate than `nvim --startuptime`, and as such will be slightly higher -- when false, startuptime is calculated based on a delta with a timestamp when lazy started. real_cputime = false, From 784a726f2e10ccbc11451a50033cb43426dfaab8 Mon Sep 17 00:00:00 2001 From: Vlad <52591095+MeanderingProgrammer@users.noreply.github.com> Date: Mon, 3 Jun 2024 21:58:19 -0700 Subject: [PATCH 010/342] style: Set vim.opt.rtp type to vim.Option (#1498) ## Details There is an issue in the `neodev` repo that mentions this: [#193](https://github.com/folke/neodev.nvim/issues/193) I think the problem comes from a combination of 2 things: 1. As mentioned in the [Reddit post](https://www.reddit.com/r/neovim/comments/1cvrilk/diagnosticwarning_after_upgrade_to_neovim_010/): `Nvim never had Lua type annotations for vim.opt`. 2. Setting `vim.opt.rtp` anywhere in the config will cause Lua-LS to infer the type for `vim.opt.rtp`. While users are unlikely to do this it does happen in `lazy.nvim`, in places shown in this PR. --- lua/lazy/core/config.lua | 1 + lua/lazy/core/loader.lua | 1 + tests/core/util_spec.lua | 1 + 3 files changed, 3 insertions(+) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 9c7bed3..17ce2bd 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -237,6 +237,7 @@ function M.setup(opts) M.me = debug.getinfo(1, "S").source:sub(2) M.me = Util.norm(vim.fn.fnamemodify(M.me, ":p:h:h:h:h")) if M.options.performance.rtp.reset then + ---@type vim.Option vim.opt.rtp = { vim.fn.stdpath("config"), vim.fn.stdpath("data") .. "/site", diff --git a/lua/lazy/core/loader.lua b/lua/lazy/core/loader.lua index 9cd5018..e07328c 100644 --- a/lua/lazy/core/loader.lua +++ b/lua/lazy/core/loader.lua @@ -476,6 +476,7 @@ function M.add_to_rtp(plugin) table.insert(rtp, idx_after or (#rtp + 1), after) end + ---@type vim.Option vim.opt.rtp = rtp end diff --git a/tests/core/util_spec.lua b/tests/core/util_spec.lua index a497881..643304d 100644 --- a/tests/core/util_spec.lua +++ b/tests/core/util_spec.lua @@ -5,6 +5,7 @@ local Util = require("lazy.util") describe("util", function() local rtp = vim.opt.rtp:get() before_each(function() + ---@type vim.Option vim.opt.rtp = rtp for k, v in pairs(package.loaded) do if k:find("^foobar") then From 0fc34a0cf5f5f6f998a0897119a7d846b47eaa9d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 4 Jun 2024 04:58:50 +0000 Subject: [PATCH 011/342] chore(build): auto-generate vimdoc --- doc/lazy.nvim.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index 16bfe6e..f07b209 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -1,4 +1,4 @@ -*lazy.nvim.txt* For Neovim >= 0.8.0 Last change: 2024 June 03 +*lazy.nvim.txt* For Neovim >= 0.8.0 Last change: 2024 June 04 ============================================================================== Table of Contents *lazy.nvim-table-of-contents* From 3e4c795cec32481bc6d0b30c05125fdf7ef2d412 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Thu, 6 Jun 2024 09:28:35 +0200 Subject: [PATCH 012/342] fix(keys): never lazy-load `` or empty rhs keymaps --- lua/lazy/core/handler/keys.lua | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lua/lazy/core/handler/keys.lua b/lua/lazy/core/handler/keys.lua index bafc205..a6e9475 100644 --- a/lua/lazy/core/handler/keys.lua +++ b/lua/lazy/core/handler/keys.lua @@ -109,6 +109,10 @@ function M:_add(keys) ---@param buf? number local function add(buf) + if type(keys.rhs) == "string" and (keys.rhs == "" or keys.rhs:lower() == "") then + return self:_set(keys, buf) + end + vim.keymap.set(keys.mode, lhs, function() local plugins = self.active[keys.id] From 0c1ec520af617da89c9f0b2b8527be8894c60503 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 6 Jun 2024 07:29:39 +0000 Subject: [PATCH 013/342] chore(build): auto-generate vimdoc --- doc/lazy.nvim.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index f07b209..b07aad4 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -1,4 +1,4 @@ -*lazy.nvim.txt* For Neovim >= 0.8.0 Last change: 2024 June 04 +*lazy.nvim.txt* For Neovim >= 0.8.0 Last change: 2024 June 06 ============================================================================== Table of Contents *lazy.nvim-table-of-contents* From ff904178089582f90fdc625493f3d3bddbefd6ea Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Thu, 6 Jun 2024 10:15:33 +0200 Subject: [PATCH 014/342] fix(keys): buffer-local nop mappings --- lua/lazy/core/handler/keys.lua | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lua/lazy/core/handler/keys.lua b/lua/lazy/core/handler/keys.lua index a6e9475..57fbc18 100644 --- a/lua/lazy/core/handler/keys.lua +++ b/lua/lazy/core/handler/keys.lua @@ -102,6 +102,11 @@ function M.opts(keys) return opts end +---@param keys LazyKeys +function M.is_nop(keys) + return type(keys.rhs) == "string" and (keys.rhs == "" or keys.rhs:lower() == "") +end + ---@param keys LazyKeys function M:_add(keys) local lhs = keys.lhs @@ -109,7 +114,7 @@ function M:_add(keys) ---@param buf? number local function add(buf) - if type(keys.rhs) == "string" and (keys.rhs == "" or keys.rhs:lower() == "") then + if M.is_nop(keys) then return self:_set(keys, buf) end @@ -147,7 +152,7 @@ function M:_add(keys) vim.api.nvim_create_autocmd("FileType", { pattern = keys.ft, callback = function(event) - if self.active[keys.id] then + if self.active[keys.id] and not M.is_nop(keys) then add(event.buf) else -- Only create the mapping if its managed by lazy From 70f2c090d3ffb14f8702d468e05beb240b768881 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 6 Jun 2024 12:47:53 +0200 Subject: [PATCH 015/342] chore(main): release 10.22.2 (#1500) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- CHANGELOG.md | 8 ++++++++ lua/lazy/core/config.lua | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 78cfcad..6d21386 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## [10.22.2](https://github.com/folke/lazy.nvim/compare/v10.22.1...v10.22.2) (2024-06-06) + + +### Bug Fixes + +* **keys:** buffer-local nop mappings ([ff90417](https://github.com/folke/lazy.nvim/commit/ff904178089582f90fdc625493f3d3bddbefd6ea)) +* **keys:** never lazy-load `<nop>` or empty rhs keymaps ([3e4c795](https://github.com/folke/lazy.nvim/commit/3e4c795cec32481bc6d0b30c05125fdf7ef2d412)) + ## [10.22.1](https://github.com/folke/lazy.nvim/compare/v10.22.0...v10.22.1) (2024-06-02) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 17ce2bd..f01e6a9 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -182,7 +182,7 @@ M.defaults = { debug = false, } -M.version = "10.22.1" -- x-release-please-version +M.version = "10.22.2" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 74fd3611f291a2506c5534109689bb7b028f0566 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Thu, 6 Jun 2024 23:23:49 +0200 Subject: [PATCH 016/342] feat(util): opts merging now supports lists extending by tagging a table with __extend = true. Use with care --- lua/lazy/core/util.lua | 14 +++++++++++++- tests/core/util_spec.lua | 12 ++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/lua/lazy/core/util.lua b/lua/lazy/core/util.lua index e51e670..e76f0c4 100644 --- a/lua/lazy/core/util.lua +++ b/lua/lazy/core/util.lua @@ -387,6 +387,10 @@ local function can_merge(v) return type(v) == "table" and (vim.tbl_isempty(v) or not M.is_list(v)) end +local function can_extend(v) + return type(v) == "table" and v.__extend +end + --- Merges the values similar to vim.tbl_deep_extend with the **force** behavior, --- but the values can be any type, in which case they override the values on the left. --- Values will me merged in-place in the first left-most table. If you want the result to be in @@ -402,7 +406,15 @@ function M.merge(...) end for i = 2, select("#", ...) do local value = select(i, ...) - if can_merge(ret) and can_merge(value) then + local are_t = type(ret) == "table" and type(value) == "table" + if are_t and (can_extend(ret) or can_extend(value)) then + for k, v in pairs(value) do + if k ~= "__extend" then + table.insert(ret, v) + end + end + ret.__extend = true + elseif are_t and can_merge(ret) and can_merge(value) then for k, v in pairs(value) do ret[k] = M.merge(ret[k], v) end diff --git a/tests/core/util_spec.lua b/tests/core/util_spec.lua index 643304d..f76f185 100644 --- a/tests/core/util_spec.lua +++ b/tests/core/util_spec.lua @@ -134,6 +134,18 @@ describe("util", function() input = { { a = 1 }, { b = 2, a = vim.NIL } }, output = { b = 2 }, }, + { + input = { { 1, 2, __extend = true }, { 3, 4 } }, + output = { 1, 2, 3, 4, __extend = true }, + }, + { + input = { { 1, 2, __extend = true }, { __extend = true, 3, 4 } }, + output = { 1, 2, 3, 4, __extend = true }, + }, + { + input = { { 1, 2 }, { 3, 4, __extend = true } }, + output = { 1, 2, 3, 4, __extend = true }, + }, } for _, test in ipairs(tests) do From 89ddc59d19513c5c19c8f8d2ad8573890bd00eef Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Thu, 6 Jun 2024 23:27:29 +0200 Subject: [PATCH 017/342] Revert "feat(util): opts merging now supports lists extending by tagging a table with __extend = true. Use with care" This reverts commit 74fd3611f291a2506c5534109689bb7b028f0566. --- lua/lazy/core/util.lua | 14 +------------- tests/core/util_spec.lua | 12 ------------ 2 files changed, 1 insertion(+), 25 deletions(-) diff --git a/lua/lazy/core/util.lua b/lua/lazy/core/util.lua index e76f0c4..e51e670 100644 --- a/lua/lazy/core/util.lua +++ b/lua/lazy/core/util.lua @@ -387,10 +387,6 @@ local function can_merge(v) return type(v) == "table" and (vim.tbl_isempty(v) or not M.is_list(v)) end -local function can_extend(v) - return type(v) == "table" and v.__extend -end - --- Merges the values similar to vim.tbl_deep_extend with the **force** behavior, --- but the values can be any type, in which case they override the values on the left. --- Values will me merged in-place in the first left-most table. If you want the result to be in @@ -406,15 +402,7 @@ function M.merge(...) end for i = 2, select("#", ...) do local value = select(i, ...) - local are_t = type(ret) == "table" and type(value) == "table" - if are_t and (can_extend(ret) or can_extend(value)) then - for k, v in pairs(value) do - if k ~= "__extend" then - table.insert(ret, v) - end - end - ret.__extend = true - elseif are_t and can_merge(ret) and can_merge(value) then + if can_merge(ret) and can_merge(value) then for k, v in pairs(value) do ret[k] = M.merge(ret[k], v) end diff --git a/tests/core/util_spec.lua b/tests/core/util_spec.lua index f76f185..643304d 100644 --- a/tests/core/util_spec.lua +++ b/tests/core/util_spec.lua @@ -134,18 +134,6 @@ describe("util", function() input = { { a = 1 }, { b = 2, a = vim.NIL } }, output = { b = 2 }, }, - { - input = { { 1, 2, __extend = true }, { 3, 4 } }, - output = { 1, 2, 3, 4, __extend = true }, - }, - { - input = { { 1, 2, __extend = true }, { __extend = true, 3, 4 } }, - output = { 1, 2, 3, 4, __extend = true }, - }, - { - input = { { 1, 2 }, { 3, 4, __extend = true } }, - output = { 1, 2, 3, 4, __extend = true }, - }, } for _, test in ipairs(tests) do From 1f7b720cffa6d8f00ebb040bc60e8e056e0a6002 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Fri, 7 Jun 2024 09:02:52 +0200 Subject: [PATCH 018/342] feat(plugin): `opts_extend` can be a list of dotted keys that will be extended instead of merged --- lua/lazy/core/plugin.lua | 22 +++++++++++++++++++++- lua/lazy/core/util.lua | 31 +++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+), 1 deletion(-) diff --git a/lua/lazy/core/plugin.lua b/lua/lazy/core/plugin.lua index 905c078..91b36d3 100644 --- a/lua/lazy/core/plugin.lua +++ b/lua/lazy/core/plugin.lua @@ -667,7 +667,27 @@ function M._values(root, plugin, prop, is_list) end values = type(values) == "table" and values or { values } - return is_list and Util.extend(ret, values) or Util.merge(ret, values) + if is_list then + return Util.extend(ret, values) + else + ---@type {path:string[], list:any[]}[] + local lists = {} + for _, key in ipairs(plugin[prop .. "_extend"] or {}) do + local path = vim.split(key, ".", { plain = true }) + local r = Util.key_get(ret, path) + local v = Util.key_get(values, path) + if type(r) == "table" and type(v) == "table" then + lists[key] = { path = path, list = {} } + vim.list_extend(lists[key].list, r) + vim.list_extend(lists[key].list, v) + end + end + local t = Util.merge(ret, values) + for _, list in pairs(lists) do + Util.key_set(t, list.path, list.list) + end + return t + end end return M diff --git a/lua/lazy/core/util.lua b/lua/lazy/core/util.lua index e51e670..fe22abe 100644 --- a/lua/lazy/core/util.lua +++ b/lua/lazy/core/util.lua @@ -428,4 +428,35 @@ function M.lazy_require(module) }) end +---@param t table +---@param key string|string[] +---@return any +function M.key_get(t, key) + local path = type(key) == "table" and key or vim.split(key, ".", true) + local value = t + for _, k in ipairs(path) do + if type(value) ~= "table" then + return value + end + value = value[k] + end + return value +end + +---@param t table +---@param key string|string[] +---@param value any +function M.key_set(t, key, value) + local path = type(key) == "table" and key or vim.split(key, ".", true) + local last = t + for i = 1, #path - 1 do + local k = path[i] + if type(last[k]) ~= "table" then + last[k] = {} + end + last = last[k] + end + last[path[#path]] = value +end + return M From e0bc9a07e463bf849ac549b93f46363de58ffa29 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 7 Jun 2024 07:03:28 +0000 Subject: [PATCH 019/342] chore(build): auto-generate vimdoc --- doc/lazy.nvim.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index b07aad4..fdd1cc1 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -1,4 +1,4 @@ -*lazy.nvim.txt* For Neovim >= 0.8.0 Last change: 2024 June 06 +*lazy.nvim.txt* For Neovim >= 0.8.0 Last change: 2024 June 07 ============================================================================== Table of Contents *lazy.nvim-table-of-contents* From fafe1f7c640aed75e70a10e6649612cd96f39149 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 7 Jun 2024 10:54:20 +0200 Subject: [PATCH 020/342] chore(main): release 10.23.0 (#1502) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- CHANGELOG.md | 8 ++++++++ lua/lazy/core/config.lua | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6d21386..6bebedc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## [10.23.0](https://github.com/folke/lazy.nvim/compare/v10.22.2...v10.23.0) (2024-06-07) + + +### Features + +* **plugin:** `opts_extend` can be a list of dotted keys that will be extended instead of merged ([1f7b720](https://github.com/folke/lazy.nvim/commit/1f7b720cffa6d8f00ebb040bc60e8e056e0a6002)) +* **util:** opts merging now supports lists extending by tagging a table with __extend = true. Use with care ([74fd361](https://github.com/folke/lazy.nvim/commit/74fd3611f291a2506c5534109689bb7b028f0566)) + ## [10.22.2](https://github.com/folke/lazy.nvim/compare/v10.22.1...v10.22.2) (2024-06-06) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index f01e6a9..8b42617 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -182,7 +182,7 @@ M.defaults = { debug = false, } -M.version = "10.22.2" -- x-release-please-version +M.version = "10.23.0" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 034b03c80390ad67929f236871cff3ee4c6b3ba4 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Fri, 7 Jun 2024 16:23:47 +0200 Subject: [PATCH 021/342] ci: Create dependabot.yml --- .github/dependabot.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..2a76c71 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,11 @@ +# To get started with Dependabot version updates, you'll need to specify which +# package ecosystems to update and where the package manifests are located. +# Please see the documentation for all configuration options: +# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file + +version: 2 +updates: + - package-ecosystem: "Github Actions" # See documentation for possible values + directory: "/" # Location of package manifests + schedule: + interval: "weekly" From 938e1951085b5a141184fa00543ddf6f138e0963 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Fri, 7 Jun 2024 16:26:38 +0200 Subject: [PATCH 022/342] ci: Update dependabot.yml --- .github/dependabot.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 2a76c71..0d08e26 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -5,7 +5,7 @@ version: 2 updates: - - package-ecosystem: "Github Actions" # See documentation for possible values + - package-ecosystem: "github-actions" # See documentation for possible values directory: "/" # Location of package manifests schedule: interval: "weekly" From 0aac19ccc7a09b397808e25a74034a95d38be71b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 7 Jun 2024 16:28:42 +0200 Subject: [PATCH 023/342] build(deps): bump stefanzweifel/git-auto-commit-action from 4 to 5 (#1506) Bumps [stefanzweifel/git-auto-commit-action](https://github.com/stefanzweifel/git-auto-commit-action) from 4 to 5. - [Release notes](https://github.com/stefanzweifel/git-auto-commit-action/releases) - [Changelog](https://github.com/stefanzweifel/git-auto-commit-action/blob/master/CHANGELOG.md) - [Commits](https://github.com/stefanzweifel/git-auto-commit-action/compare/v4...v5) --- updated-dependencies: - dependency-name: stefanzweifel/git-auto-commit-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1e290ce..3cf4007 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -40,7 +40,7 @@ jobs: demojify: true treesitter: true - name: Push changes - uses: stefanzweifel/git-auto-commit-action@v4 + uses: stefanzweifel/git-auto-commit-action@v5 with: commit_message: "chore(build): auto-generate vimdoc" commit_user_name: "github-actions[bot]" From db5c465509a96267476e6fce7a2a2739d35f968d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 7 Jun 2024 16:28:52 +0200 Subject: [PATCH 024/342] build(deps): bump actions/checkout from 3 to 4 (#1508) Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3cf4007..378c2b3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -11,7 +11,7 @@ jobs: os: [ubuntu-latest] runs-on: ${{ matrix.os }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Install Neovim shell: bash run: | @@ -31,7 +31,7 @@ jobs: needs: tests if: ${{ github.ref == 'refs/heads/main' }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: panvimdoc uses: kdheepak/panvimdoc@main with: @@ -61,7 +61,7 @@ jobs: package-name: lazy.nvim extra-files: | lua/lazy/core/config.lua - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: tag stable versions if: ${{ steps.release.outputs.release_created }} run: | From eb4957442e3182f051b0ae11da32e06d22c190e3 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Fri, 7 Jun 2024 16:31:18 +0200 Subject: [PATCH 025/342] ci: update release please. Fixes #1504 --- .github/workflows/ci.yml | 4 +--- release-please-config.json | 7 +++++++ 2 files changed, 8 insertions(+), 3 deletions(-) create mode 100644 release-please-config.json diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 378c2b3..ee6e838 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -54,13 +54,11 @@ jobs: - tests runs-on: ubuntu-latest steps: - - uses: google-github-actions/release-please-action@v3 + - uses: googleapis/release-please-action@v4 id: release with: release-type: simple package-name: lazy.nvim - extra-files: | - lua/lazy/core/config.lua - uses: actions/checkout@v4 - name: tag stable versions if: ${{ steps.release.outputs.release_created }} diff --git a/release-please-config.json b/release-please-config.json new file mode 100644 index 0000000..c8e5a10 --- /dev/null +++ b/release-please-config.json @@ -0,0 +1,7 @@ +{ + "$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json", + "release-type": "simple", + "extra-files": [ + "lua/lazy/core/config.lua" + ] +} From 067fd41933c9f59eb3445eb942052c651a4c9a62 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 15 Jun 2024 09:11:36 +0200 Subject: [PATCH 026/342] fix(plugin): check optional plugins again after resolving enabled. Fixes #1402 --- lua/lazy/core/plugin.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lua/lazy/core/plugin.lua b/lua/lazy/core/plugin.lua index 91b36d3..8039b87 100644 --- a/lua/lazy/core/plugin.lua +++ b/lua/lazy/core/plugin.lua @@ -319,6 +319,9 @@ function Spec:fix_disabled() end end + -- check optional plugins again + self:fix_optional() + -- rebuild any plugin specs that were modified self:rebuild() end From 6944b105cbf263ae1817267254b329bdcb37c979 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 15 Jun 2024 07:12:11 +0000 Subject: [PATCH 027/342] chore(build): auto-generate vimdoc --- doc/lazy.nvim.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index fdd1cc1..f9d810a 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -1,4 +1,4 @@ -*lazy.nvim.txt* For Neovim >= 0.8.0 Last change: 2024 June 07 +*lazy.nvim.txt* For Neovim >= 0.8.0 Last change: 2024 June 15 ============================================================================== Table of Contents *lazy.nvim-table-of-contents* From e2e10d9cbe133265ccdcc44cafa7c10773d96837 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 15 Jun 2024 09:28:56 +0200 Subject: [PATCH 028/342] feat: find local_spec in parent directories as well. Closes #1519 --- lua/lazy/core/plugin.lua | 44 ++++++++++++++++++++++++++++++++-------- 1 file changed, 35 insertions(+), 9 deletions(-) diff --git a/lua/lazy/core/plugin.lua b/lua/lazy/core/plugin.lua index 8039b87..3f4acc7 100644 --- a/lua/lazy/core/plugin.lua +++ b/lua/lazy/core/plugin.lua @@ -403,7 +403,7 @@ function Spec:import(spec) ---@type string[] local modnames = {} - if spec.import == M.LOCAL_SPEC then + if spec.import:find(M.LOCAL_SPEC, 1, true) then modnames = { spec.import } else Util.lsmod(spec.import, function(modname) @@ -414,15 +414,19 @@ function Spec:import(spec) for _, modname in ipairs(modnames) do imported = imported + 1 - Util.track({ import = modname }) + local name = modname + if modname:find(M.LOCAL_SPEC, 1, true) then + name = vim.fn.fnamemodify(modname, ":~:.") + end + Util.track({ import = name }) self.importing = modname -- unload the module so we get a clean slate ---@diagnostic disable-next-line: no-unknown package.loaded[modname] = nil Util.try(function() local mod = nil - if modname == M.LOCAL_SPEC then - mod = M.local_spec() + if modname:find(M.LOCAL_SPEC, 1, true) then + mod = M.local_spec(modname) else mod = require(modname) end @@ -546,26 +550,48 @@ function M.update_state() end end -function M.local_spec() - local filepath = vim.fn.fnamemodify(".lazy.lua", ":p") - local file = vim.secure.read(filepath) +---@param path string +function M.local_spec(path) + local file = vim.secure.read(path) if file then return loadstring(file)() end return {} end +---@return string? +function M.find_local_spec() + if not Config.options.local_spec then + return + end + local path = vim.uv.cwd() + while path ~= "" do + local file = path .. "/" .. M.LOCAL_SPEC + if vim.fn.filereadable(file) == 1 then + return file + end + local p = vim.fn.fnamemodify(path, ":h") + if p == path then + break + end + path = p + end +end + function M.load() M.loading = true -- load specs Util.track("spec") Config.spec = Spec.new() + + local local_spec = M.find_local_spec() + Config.spec:parse({ vim.deepcopy(Config.options.spec), { - import = ".lazy.lua", + import = local_spec or M.LOCAL_SPEC, cond = function() - return Config.options.local_spec and vim.fn.filereadable(M.LOCAL_SPEC) == 1 + return local_spec ~= nil end, }, { "folke/lazy.nvim" }, From 4c6479e98ad643cd584e9e7c4095c463e0d810eb Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 15 Jun 2024 09:54:45 +0200 Subject: [PATCH 029/342] chore(main): release 10.24.0 (#1522) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6bebedc..c8a18b2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,17 @@ # Changelog +## [10.24.0](https://github.com/folke/lazy.nvim/compare/v10.23.0...v10.24.0) (2024-06-15) + + +### Features + +* find local_spec in parent directories as well. Closes [#1519](https://github.com/folke/lazy.nvim/issues/1519) ([e2e10d9](https://github.com/folke/lazy.nvim/commit/e2e10d9cbe133265ccdcc44cafa7c10773d96837)) + + +### Bug Fixes + +* **plugin:** check optional plugins again after resolving enabled. Fixes [#1402](https://github.com/folke/lazy.nvim/issues/1402) ([067fd41](https://github.com/folke/lazy.nvim/commit/067fd41933c9f59eb3445eb942052c651a4c9a62)) + ## [10.23.0](https://github.com/folke/lazy.nvim/compare/v10.22.2...v10.23.0) (2024-06-07) From be5dfba54216ccb80959df24d48540f07ee127a3 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sun, 16 Jun 2024 07:09:33 +0200 Subject: [PATCH 030/342] fix(plugin): better way of dealing with local specs. Fixes #1524 --- lua/lazy/core/plugin.lua | 78 +++++++++++++++++++++------------------- lua/lazy/types.lua | 3 +- 2 files changed, 44 insertions(+), 37 deletions(-) diff --git a/lua/lazy/core/plugin.lua b/lua/lazy/core/plugin.lua index 3f4acc7..c7716b6 100644 --- a/lua/lazy/core/plugin.lua +++ b/lua/lazy/core/plugin.lua @@ -383,10 +383,18 @@ function Spec:import(spec) if spec.import == "lazy" then return self:error("You can't name your plugins module `lazy`.") end - if type(spec.import) ~= "string" then + if type(spec.import) == "function" then + if not spec.name then + return self:error("Invalid import spec. Missing name: " .. vim.inspect(spec)) + end + elseif type(spec.import) ~= "string" then return self:error("Invalid import spec. `import` should be a string: " .. vim.inspect(spec)) end - if vim.tbl_contains(self.modules, spec.import) then + + local import_name = spec.name or spec.import + ---@cast import_name string + + if vim.tbl_contains(self.modules, import_name) then return end if spec.cond == false or (type(spec.cond) == "function" and not spec.cond()) then @@ -396,40 +404,34 @@ function Spec:import(spec) return end - self.modules[#self.modules + 1] = spec.import + self.modules[#self.modules + 1] = import_name + + local import = spec.import local imported = 0 - ---@type string[] - local modnames = {} + ---@type (string|(fun():LazyPluginSpec))[] + local modspecs = {} - if spec.import:find(M.LOCAL_SPEC, 1, true) then - modnames = { spec.import } - else - Util.lsmod(spec.import, function(modname) - modnames[#modnames + 1] = modname + if type(import) == "string" then + Util.lsmod(import, function(modname) + modspecs[#modspecs + 1] = modname end) - table.sort(modnames) + table.sort(modspecs) + else + modspecs = { spec.import } end - for _, modname in ipairs(modnames) do + for _, modspec in ipairs(modspecs) do imported = imported + 1 - local name = modname - if modname:find(M.LOCAL_SPEC, 1, true) then - name = vim.fn.fnamemodify(modname, ":~:.") - end - Util.track({ import = name }) + local modname = type(modspec) == "string" and modspec or import_name + Util.track({ import = modname }) self.importing = modname -- unload the module so we get a clean slate ---@diagnostic disable-next-line: no-unknown package.loaded[modname] = nil Util.try(function() - local mod = nil - if modname:find(M.LOCAL_SPEC, 1, true) then - mod = M.local_spec(modname) - else - mod = require(modname) - end + local mod = type(modspec) == "function" and modspec() or require(modspec) if type(mod) ~= "table" then self.importing = nil return self:error( @@ -559,7 +561,7 @@ function M.local_spec(path) return {} end ----@return string? +---@return LazySpecImport? function M.find_local_spec() if not Config.options.local_spec then return @@ -568,7 +570,16 @@ function M.find_local_spec() while path ~= "" do local file = path .. "/" .. M.LOCAL_SPEC if vim.fn.filereadable(file) == 1 then - return file + return { + name = vim.fn.fnamemodify(file, ":~:."), + import = function() + local data = vim.secure.read(file) + if data then + return loadstring(data)() + end + return {} + end, + } end local p = vim.fn.fnamemodify(path, ":h") if p == path then @@ -584,18 +595,13 @@ function M.load() Util.track("spec") Config.spec = Spec.new() - local local_spec = M.find_local_spec() - - Config.spec:parse({ + local specs = { vim.deepcopy(Config.options.spec), - { - import = local_spec or M.LOCAL_SPEC, - cond = function() - return local_spec ~= nil - end, - }, - { "folke/lazy.nvim" }, - }) + } + specs[#specs + 1] = M.find_local_spec() + specs[#specs + 1] = { "folke/lazy.nvim" } + + Config.spec:parse(specs) -- override some lazy props local lazy = Config.spec.plugins["lazy.nvim"] diff --git a/lua/lazy/types.lua b/lua/lazy/types.lua index 9926aee..30bf9e5 100644 --- a/lua/lazy/types.lua +++ b/lua/lazy/types.lua @@ -78,6 +78,7 @@ ---@alias LazySpec string|LazyPluginSpec|LazySpecImport|LazySpec[] ---@class LazySpecImport ----@field import string spec module to import +---@field import string|(fun():LazyPluginSpec) spec module to import +---@field name? string ---@field enabled? boolean|(fun():boolean) ---@field cond? boolean|(fun():boolean) From 5da0245f0530f004283a66c0594efded7244c0f1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 16 Jun 2024 05:10:11 +0000 Subject: [PATCH 031/342] chore(build): auto-generate vimdoc --- doc/lazy.nvim.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index f9d810a..b0c4003 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -1,4 +1,4 @@ -*lazy.nvim.txt* For Neovim >= 0.8.0 Last change: 2024 June 15 +*lazy.nvim.txt* For Neovim >= 0.8.0 Last change: 2024 June 16 ============================================================================== Table of Contents *lazy.nvim-table-of-contents* From 38d6b74b63dc410ac5d7f4bb4c62dfeec74e366a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 16 Jun 2024 07:15:01 +0200 Subject: [PATCH 032/342] chore(main): release 10.24.1 (#1525) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c8a18b2..1edb3e3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [10.24.1](https://github.com/folke/lazy.nvim/compare/v10.24.0...v10.24.1) (2024-06-16) + + +### Bug Fixes + +* **plugin:** better way of dealing with local specs. Fixes [#1524](https://github.com/folke/lazy.nvim/issues/1524) ([be5dfba](https://github.com/folke/lazy.nvim/commit/be5dfba54216ccb80959df24d48540f07ee127a3)) + ## [10.24.0](https://github.com/folke/lazy.nvim/compare/v10.23.0...v10.24.0) (2024-06-15) From b4316da7310682144c279c5f0451e59ee5f6c9d1 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sun, 16 Jun 2024 15:52:21 +0200 Subject: [PATCH 033/342] fix(plugin): rebuild optional when needed and remove frags from parent deps. Fixes #1402 --- lua/lazy/core/plugin.lua | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/lua/lazy/core/plugin.lua b/lua/lazy/core/plugin.lua index c7716b6..8d18e33 100644 --- a/lua/lazy/core/plugin.lua +++ b/lua/lazy/core/plugin.lua @@ -232,6 +232,15 @@ function Spec:remove_fragments(id, opts) else local plugin = self.plugins[id] repeat + if plugin._.fpid then + local parent = self.fragments[plugin._.fpid] + if parent then + parent._.fdeps = vim.tbl_filter(function(fid) + return fid ~= plugin._.fid + end, parent._.fdeps) + self.dirty[parent.name] = true + end + end fids[#fids + 1] = plugin._.fid plugin = plugin._.super until not plugin @@ -318,11 +327,10 @@ function Spec:fix_disabled() self.disabled[plugin.name] = plugin end end + self:rebuild() -- check optional plugins again self:fix_optional() - - -- rebuild any plugin specs that were modified self:rebuild() end From c501b429cf995c645454539b924aaefae45bb9eb Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 16 Jun 2024 16:25:23 +0200 Subject: [PATCH 034/342] chore(main): release 10.24.2 (#1526) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1edb3e3..bf69e91 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [10.24.2](https://github.com/folke/lazy.nvim/compare/v10.24.1...v10.24.2) (2024-06-16) + + +### Bug Fixes + +* **plugin:** rebuild optional when needed and remove frags from parent deps. Fixes [#1402](https://github.com/folke/lazy.nvim/issues/1402) ([b4316da](https://github.com/folke/lazy.nvim/commit/b4316da7310682144c279c5f0451e59ee5f6c9d1)) + ## [10.24.1](https://github.com/folke/lazy.nvim/compare/v10.24.0...v10.24.1) (2024-06-16) From 025520d083c61baa7cd1f45807f5fe1ac9fbb50d Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Tue, 18 Jun 2024 00:35:56 +0200 Subject: [PATCH 035/342] fix(util): dump --- lua/lazy/util.lua | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lua/lazy/util.lua b/lua/lazy/util.lua index 705ca39..970b066 100644 --- a/lua/lazy/util.lua +++ b/lua/lazy/util.lua @@ -237,6 +237,8 @@ function M._dump(value, result) table.insert(result, tostring(value)) elseif t == "string" then table.insert(result, ("%q"):format(value)) + elseif t == "table" and value._raw then + table.insert(result, value._raw) elseif t == "table" then table.insert(result, "{") local i = 1 @@ -244,7 +246,11 @@ function M._dump(value, result) for k, v in pairs(value) do if k == i then elseif type(k) == "string" then - table.insert(result, ("[%q]="):format(k)) + if k:match("^[a-zA-Z]+$") then + table.insert(result, ("%s="):format(k)) + else + table.insert(result, ("[%q]="):format(k)) + end else table.insert(result, k .. "=") end From f4d57485b051e90fecf93ce16059b8dcdb9ceb12 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Tue, 18 Jun 2024 00:36:11 +0200 Subject: [PATCH 036/342] refactor: reloader --- lua/lazy/core/util.lua | 3 +++ lua/lazy/manage/reloader.lua | 29 +++++++++++++++++------------ 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/lua/lazy/core/util.lua b/lua/lazy/core/util.lua index fe22abe..f72ab21 100644 --- a/lua/lazy/core/util.lua +++ b/lua/lazy/core/util.lua @@ -92,7 +92,10 @@ function M.pretty_trace(opts) return #trace > 0 and ("\n\n# stacktrace:\n" .. table.concat(trace, "\n")) or "" end +---@generic R +---@param fn fun():R ---@param opts? string|{msg:string, on_error:fun(msg)} +---@return R function M.try(fn, opts) opts = type(opts) == "string" and { msg = opts } or opts or {} local msg = opts.msg diff --git a/lua/lazy/manage/reloader.lua b/lua/lazy/manage/reloader.lua index ef9305c..1a2b042 100644 --- a/lua/lazy/manage/reloader.lua +++ b/lua/lazy/manage/reloader.lua @@ -84,19 +84,24 @@ function M.check(start) end if not (start or #changes == 0) then - vim.schedule(function() - if Config.options.change_detection.notify and not Config.headless() then - local lines = { "# Config Change Detected. Reloading...", "" } - for _, change in ipairs(changes) do - table.insert(lines, "- **" .. change.what .. "**: `" .. vim.fn.fnamemodify(change.file, ":p:~:.") .. "`") - end - Util.warn(lines) - end - Plugin.load() - vim.api.nvim_exec_autocmds("User", { pattern = "LazyRender", modeline = false }) - vim.api.nvim_exec_autocmds("User", { pattern = "LazyReload", modeline = false }) - end) + M.reload(changes) end end +---@param {file:string, what:string}[] +function M.reload(changes) + vim.schedule(function() + if Config.options.change_detection.notify and not Config.headless() then + local lines = { "# Config Change Detected. Reloading...", "" } + for _, change in ipairs(changes) do + table.insert(lines, "- **" .. change.what .. "**: `" .. vim.fn.fnamemodify(change.file, ":p:~:.") .. "`") + end + Util.warn(lines) + end + Plugin.load() + vim.api.nvim_exec_autocmds("User", { pattern = "LazyRender", modeline = false }) + vim.api.nvim_exec_autocmds("User", { pattern = "LazyReload", modeline = false }) + end) +end + return M From cd6a8293430a7fadf6a093dfdfbdb1ddbaf8ae7d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 17 Jun 2024 22:36:50 +0000 Subject: [PATCH 037/342] chore(build): auto-generate vimdoc --- doc/lazy.nvim.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index b0c4003..b3517d7 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -1,4 +1,4 @@ -*lazy.nvim.txt* For Neovim >= 0.8.0 Last change: 2024 June 16 +*lazy.nvim.txt* For Neovim >= 0.8.0 Last change: 2024 June 17 ============================================================================== Table of Contents *lazy.nvim-table-of-contents* From 1325119e85d361db17644989fd2f2a9321ae0628 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Tue, 18 Jun 2024 23:21:42 +0200 Subject: [PATCH 038/342] ci: docs --- .github/workflows/docs.yaml | 51 +++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 .github/workflows/docs.yaml diff --git a/.github/workflows/docs.yaml b/.github/workflows/docs.yaml new file mode 100644 index 0000000..baa6ad4 --- /dev/null +++ b/.github/workflows/docs.yaml @@ -0,0 +1,51 @@ +name: Deploy to GitHub Pages + +on: + push: + branches: + - docs + # Review gh actions docs if you want to further define triggers, paths, etc + # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#on + +jobs: + build: + name: Build Docusaurus + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + - uses: actions/setup-node@v4 + with: + node-version: 18 + cache: pnpm + + - name: Install dependencies + run: pnpm install --frozen-lockfile + - name: Build website + run: pnpm build + + - name: Upload Build Artifact + uses: actions/upload-pages-artifact@v3 + with: + path: build + + deploy: + name: Deploy to GitHub Pages + needs: build + + # Grant GITHUB_TOKEN the permissions required to make a Pages deployment + permissions: + pages: write # to deploy to Pages + id-token: write # to verify the deployment originates from an appropriate source + + # Deploy to the github-pages environment + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + + runs-on: ubuntu-latest + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 From 07269d494e50ec96a7bbde4ad51087e5ec8d7970 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 18 Jun 2024 21:22:17 +0000 Subject: [PATCH 039/342] chore(build): auto-generate vimdoc --- doc/lazy.nvim.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index b3517d7..10657ea 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -1,4 +1,4 @@ -*lazy.nvim.txt* For Neovim >= 0.8.0 Last change: 2024 June 17 +*lazy.nvim.txt* For Neovim >= 0.8.0 Last change: 2024 June 18 ============================================================================== Table of Contents *lazy.nvim-table-of-contents* From acc0449d833a1a7410b10cd771455777b82ef971 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Tue, 18 Jun 2024 23:36:59 +0200 Subject: [PATCH 040/342] ci: docs deploy --- .github/workflows/{docs.yaml => deploy.yaml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .github/workflows/{docs.yaml => deploy.yaml} (100%) diff --git a/.github/workflows/docs.yaml b/.github/workflows/deploy.yaml similarity index 100% rename from .github/workflows/docs.yaml rename to .github/workflows/deploy.yaml From bc620783663ab09d16bff9fdecc07da65b2a1528 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Tue, 18 Jun 2024 23:48:55 +0200 Subject: [PATCH 041/342] ci: remove deploy --- .github/workflows/deploy.yaml | 51 ----------------------------------- 1 file changed, 51 deletions(-) delete mode 100644 .github/workflows/deploy.yaml diff --git a/.github/workflows/deploy.yaml b/.github/workflows/deploy.yaml deleted file mode 100644 index baa6ad4..0000000 --- a/.github/workflows/deploy.yaml +++ /dev/null @@ -1,51 +0,0 @@ -name: Deploy to GitHub Pages - -on: - push: - branches: - - docs - # Review gh actions docs if you want to further define triggers, paths, etc - # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#on - -jobs: - build: - name: Build Docusaurus - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - uses: actions/setup-node@v4 - with: - node-version: 18 - cache: pnpm - - - name: Install dependencies - run: pnpm install --frozen-lockfile - - name: Build website - run: pnpm build - - - name: Upload Build Artifact - uses: actions/upload-pages-artifact@v3 - with: - path: build - - deploy: - name: Deploy to GitHub Pages - needs: build - - # Grant GITHUB_TOKEN the permissions required to make a Pages deployment - permissions: - pages: write # to deploy to Pages - id-token: write # to verify the deployment originates from an appropriate source - - # Deploy to the github-pages environment - environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} - - runs-on: ubuntu-latest - steps: - - name: Deploy to GitHub Pages - id: deployment - uses: actions/deploy-pages@v4 From 6994ee3751778bbd84ffa62c03b280cd8bbd5e11 Mon Sep 17 00:00:00 2001 From: Ben Elan Date: Sat, 22 Jun 2024 21:59:54 -0700 Subject: [PATCH 042/342] ci(release): fix version bumping in extra-file (#1534) * ci(release): fix version bumping in extra-file Release Please's doc is either incorrect or they have a bug, but this resolves the issue. * ci(release): use manifest file --- .github/.release-please-manifest.json | 3 +++ .github/release-please-config.json | 9 +++++++++ .github/workflows/ci.yml | 4 ++-- release-please-config.json | 7 ------- 4 files changed, 14 insertions(+), 9 deletions(-) create mode 100644 .github/.release-please-manifest.json create mode 100644 .github/release-please-config.json delete mode 100644 release-please-config.json diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json new file mode 100644 index 0000000..47a48fe --- /dev/null +++ b/.github/.release-please-manifest.json @@ -0,0 +1,3 @@ +{ + ".": "10.24.2" +} diff --git a/.github/release-please-config.json b/.github/release-please-config.json new file mode 100644 index 0000000..18c3d65 --- /dev/null +++ b/.github/release-please-config.json @@ -0,0 +1,9 @@ +{ + "$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json", + "packages": { + ".": { + "release-type": "simple", + "extra-files": ["lua/lazy/core/config.lua"] + } + } +} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ee6e838..c7d3156 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -57,8 +57,8 @@ jobs: - uses: googleapis/release-please-action@v4 id: release with: - release-type: simple - package-name: lazy.nvim + config-file: .github/release-please-config.json + manifest-file: .github/.release-please-manifest.json - uses: actions/checkout@v4 - name: tag stable versions if: ${{ steps.release.outputs.release_created }} diff --git a/release-please-config.json b/release-please-config.json deleted file mode 100644 index c8e5a10..0000000 --- a/release-please-config.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json", - "release-type": "simple", - "extra-files": [ - "lua/lazy/core/config.lua" - ] -} From 849890c2c4fcd89133b6f4c43eeae13e18c8c550 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 23 Jun 2024 05:00:24 +0000 Subject: [PATCH 043/342] chore(build): auto-generate vimdoc --- doc/lazy.nvim.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index 10657ea..876ea0a 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -1,4 +1,4 @@ -*lazy.nvim.txt* For Neovim >= 0.8.0 Last change: 2024 June 18 +*lazy.nvim.txt* For Neovim >= 0.8.0 Last change: 2024 June 23 ============================================================================== Table of Contents *lazy.nvim-table-of-contents* From 4ea9fe060042f345960ad0c01aa7bca91405e10a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 23 Jun 2024 07:38:56 +0200 Subject: [PATCH 044/342] chore(main): release 10.24.3 (#1529) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 7 +++++++ lua/lazy/core/config.lua | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index 47a48fe..5596560 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "10.24.2" + ".": "10.24.3" } diff --git a/CHANGELOG.md b/CHANGELOG.md index bf69e91..1ad4080 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [10.24.3](https://github.com/folke/lazy.nvim/compare/v10.24.2...v10.24.3) (2024-06-23) + + +### Bug Fixes + +* **util:** dump ([025520d](https://github.com/folke/lazy.nvim/commit/025520d083c61baa7cd1f45807f5fe1ac9fbb50d)) + ## [10.24.2](https://github.com/folke/lazy.nvim/compare/v10.24.1...v10.24.2) (2024-06-16) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 8b42617..943505b 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -182,7 +182,7 @@ M.defaults = { debug = false, } -M.version = "10.23.0" -- x-release-please-version +M.version = "10.24.3" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 8eba74c3fc41e1a364225f744022f8b3ff11d796 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Tue, 18 Jun 2024 19:40:58 +0200 Subject: [PATCH 045/342] feat: packspec --- lua/lazy/core/config.lua | 13 ++++ lua/lazy/core/packspec.lua | 125 +++++++++++++++++++++++++++++++++++++ lua/lazy/core/plugin.lua | 27 +++++++- lua/lazy/manage/init.lua | 2 + lua/lazy/view/commands.lua | 16 ++++- tests/core/plugin_spec.lua | 9 +++ 6 files changed, 190 insertions(+), 2 deletions(-) create mode 100644 lua/lazy/core/packspec.lua diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 943505b..d843db2 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -179,6 +179,11 @@ M.defaults = { -- Track each new require in the Lazy profiling tab require = false, }, + packspec = { + enabled = true, + versions = true, -- Honor dependency versions in packspecs + path = vim.fn.stdpath("state") .. "/lazy/packspec.lua", + }, debug = false, } @@ -281,6 +286,14 @@ function M.setup(opts) require("lazy.manage.checker").start() end, 10) end + + -- useful for plugin developers when making changes to a packspec file + vim.api.nvim_create_autocmd("BufWritePost", { + pattern = "package.lua", + callback = function() + require("lazy.view.commands").cmd("packspec") + end, + }) end, }) diff --git a/lua/lazy/core/packspec.lua b/lua/lazy/core/packspec.lua new file mode 100644 index 0000000..75217d1 --- /dev/null +++ b/lua/lazy/core/packspec.lua @@ -0,0 +1,125 @@ +local Config = require("lazy.core.config") +local Util = require("lazy.util") + +---@class PackSpec +---@field dependencies? table +---@field lazy? LazyPluginSpec +local M = {} + +M.lazy_file = "lazy.lua" +M.pkg_file = "pkg.json" +M.enable_lazy_file = false + +---@alias LazyPkg {lazy?:(fun():LazySpec), pkg?:PackSpec} + +---@type table +M.packspecs = nil +---@type table +M.specs = {} + +---@param spec LazyPkg +---@param plugin LazyPlugin +---@return LazySpec? +local function convert(plugin, spec) + ---@type LazySpec + local ret = {} + + local pkg = spec.pkg + if pkg then + if pkg.dependencies then + for url, version in pairs(pkg.dependencies) do + if (not Config.options.packspec.versions) or version == "*" or version == "" then + version = nil + end + -- HACK: Add `.git` to github urls + if url:find("github") and not url:match("%.git$") then + url = url .. ".git" + end + ret[#ret + 1] = { url = url, version = version } + end + end + local p = pkg.lazy + if p then + p.url = p.url or plugin.url + p.dir = p.dir or plugin.dir + ret[#ret + 1] = p + end + end + + if spec.lazy then + ret[#ret + 1] = spec.lazy() + end + + return ret +end + +local function load() + Util.track("packspec") + M.packspecs = {} + if vim.loop.fs_stat(Config.options.packspec.path) then + Util.try(function() + M.packspecs = loadfile(Config.options.packspec.path)() + end, "Error loading packspecs:") + end + Util.track() +end + +---@param plugin LazyPlugin +---@return LazySpec? +function M.get(plugin) + if not M.packspecs then + load() + end + + if not M.packspecs[plugin.dir] then + return + end + M.specs[plugin.dir] = M.specs[plugin.dir] or convert(plugin, M.packspecs[plugin.dir]) + return vim.deepcopy(M.specs[plugin.dir]) +end + +function M.update() + local ret = {} + for _, plugin in pairs(Config.plugins) do + local spec = { + pkg = M.pkg(plugin), + lazy = M.enable_lazy_file and M.lazy_pkg(plugin) or nil, + } + if not vim.tbl_isempty(spec) then + ret[plugin.dir] = spec + end + end + local code = "return " .. Util.dump(ret) + Util.write_file(Config.options.packspec.path, code) + M.packspecs = nil + M.specs = {} +end + +---@param plugin LazyPlugin +function M.lazy_pkg(plugin) + local file = Util.norm(plugin.dir .. "/" .. M.lazy_file) + if Util.file_exists(file) then + ---@type LazySpec + local chunk = Util.try(function() + return loadfile(file) + end, "`" .. M.lazy_file .. "` for **" .. plugin.name .. "** has errors:") + if chunk then + return { _raw = ([[function() %s end]]):format(Util.read_file(file)) } + else + Util.error("Invalid `package.lua` for **" .. plugin.name .. "**") + end + end +end + +---@param plugin LazyPlugin +function M.pkg(plugin) + local file = Util.norm(plugin.dir .. "/" .. M.pkg_file) + if Util.file_exists(file) then + ---@type PackSpec + return Util.try(function() + return vim.json.decode(Util.read_file(file)) + end, "`" .. M.pkg_file .. "` for **" .. plugin.name .. "** has errors:") + end +end + +return M diff --git a/lua/lazy/core/plugin.lua b/lua/lazy/core/plugin.lua index 8d18e33..3de712f 100644 --- a/lua/lazy/core/plugin.lua +++ b/lua/lazy/core/plugin.lua @@ -1,4 +1,5 @@ local Config = require("lazy.core.config") +local Packspec = require("lazy.core.packspec") local Util = require("lazy.core.util") ---@class LazyCorePlugin @@ -15,6 +16,8 @@ M.loading = false ---@field notifs {msg:string, level:number, file?:string}[] ---@field importing? string ---@field optional? boolean +---@field packspecs table +---@field names table local Spec = {} M.Spec = Spec M.last_fid = 0 @@ -32,7 +35,9 @@ function Spec.new(spec, opts) self.dirty = {} self.notifs = {} self.ignore_installed = {} + self.packspecs = {} self.optional = opts and opts.optional + self.names = {} if spec then self:parse(spec) end @@ -45,6 +50,7 @@ function Spec:parse(spec) end -- PERF: optimized code to get package name without using lua patterns +---@return string function Spec.get_name(pkg) local name = pkg:sub(-4) == ".git" and pkg:sub(1, -5) or pkg name = name:sub(-1) == "/" and name:sub(1, -2) or name @@ -83,7 +89,17 @@ function Spec:add(plugin, results) -- local plugin plugin.name = plugin.name or Spec.get_name(plugin.dir) elseif plugin.url then - plugin.name = plugin.name or Spec.get_name(plugin.url) + if plugin.name then + self.names[plugin.url] = plugin.name + local name = Spec.get_name(plugin.url) + if name and self.plugins[name] then + self.plugins[name].name = plugin.name + self.plugins[plugin.name] = self.plugins[name] + self.plugins[name] = nil + end + else + plugin.name = self.names[plugin.url] or Spec.get_name(plugin.url) + end -- check for dev plugins if plugin.dev == nil then for _, pattern in ipairs(Config.options.dev.patterns) do @@ -156,6 +172,15 @@ function Spec:add(plugin, results) table.remove(M.fid_stack) end + -- import the plugin's spec + if Config.options.packspec.enabled and plugin.dir and not self.packspecs[plugin.dir] then + self.packspecs[plugin.dir] = true + local packspec = Packspec.get(plugin) + if packspec then + self:normalize(packspec, nil, true) + end + end + if self.plugins[plugin.name] then plugin = self:merge(self.plugins[plugin.name], plugin) end diff --git a/lua/lazy/manage/init.lua b/lua/lazy/manage/init.lua index 897bdbf..f5a96a9 100644 --- a/lua/lazy/manage/init.lua +++ b/lua/lazy/manage/init.lua @@ -92,6 +92,7 @@ function M.install(opts) }, opts):wait(function() require("lazy.manage.lock").update() require("lazy.help").update() + require("lazy.core.packspec").update() end) end @@ -116,6 +117,7 @@ function M.update(opts) }, opts):wait(function() require("lazy.manage.lock").update() require("lazy.help").update() + require("lazy.core.packspec").update() end) end -- diff --git a/lua/lazy/view/commands.lua b/lua/lazy/view/commands.lua index 1210917..13c5070 100644 --- a/lua/lazy/view/commands.lua +++ b/lua/lazy/view/commands.lua @@ -34,6 +34,20 @@ M.commands = { health = function() vim.cmd.checkhealth("lazy") end, + pkg = function(opts) + local Pkg = require("lazy.core.packspec") + Pkg.update() + require("lazy.manage.reloader").reload({ + { + file = "packspec", --Config.options.packspec.path, + what = "changed", + }, + }) + for _, plugin in pairs(opts and opts.plugins or {}) do + local spec = Pkg.get(plugin) + Util.info(vim.inspect(spec), { lang = "lua", title = plugin.name }) + end + end, home = function() View.show("home") end, @@ -74,7 +88,7 @@ M.commands = { } function M.complete(cmd, prefix) - if not (ViewConfig.commands[cmd] or {}).plugins then + if not (ViewConfig.commands[cmd] or {}).plugins and cmd ~= "pkg" then return end ---@type string[] diff --git a/tests/core/plugin_spec.lua b/tests/core/plugin_spec.lua index 51f6e03..c15505f 100644 --- a/tests/core/plugin_spec.lua +++ b/tests/core/plugin_spec.lua @@ -30,6 +30,14 @@ describe("plugin spec url/name", function() { { "foo/bar", name = "foobar" }, { [1] = "foo/bar", name = "foobar", url = "https://github.com/foo/bar.git" } }, { { "foo/bar", url = "123" }, { [1] = "foo/bar", name = "123", url = "123" } }, { { url = "https://foobar" }, { name = "foobar", url = "https://foobar" } }, + { + { { url = "https://foo", name = "foobar" }, { url = "https://foo" } }, + { name = "foobar", url = "https://foo" }, + }, + { + { { url = "https://foo" }, { url = "https://foo", name = "foobar" } }, + { name = "foobar", url = "https://foo" }, + }, { { url = "ssh://foobar" }, { name = "foobar", url = "ssh://foobar" } }, { "foo/bar", { [1] = "foo/bar", name = "bar", url = "https://github.com/foo/bar.git" } }, { { { { "foo/bar" } } }, { [1] = "foo/bar", name = "bar", url = "https://github.com/foo/bar.git" } }, @@ -46,6 +54,7 @@ describe("plugin spec url/name", function() plugins[1]._ = {} assert(#spec.notifs == 0) assert.equal(1, #plugins) + plugins[1]._.super = nil assert.same(test[2], plugins[1]) end) end From f1ba2e3d057ae5c03d04134a9d538d0b2251f13b Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Tue, 18 Jun 2024 19:39:47 +0200 Subject: [PATCH 046/342] feat: luarocks support --- lua/lazy/core/config.lua | 17 +++++++ lua/lazy/core/loader.lua | 7 ++- lua/lazy/core/plugin.lua | 2 + lua/lazy/manage/init.lua | 4 +- lua/lazy/manage/rocks.lua | 89 ++++++++++++++++++++++++++++++++++ lua/lazy/manage/task/rocks.lua | 57 ++++++++++++++++++++++ lua/lazy/types.lua | 3 ++ 7 files changed, 177 insertions(+), 2 deletions(-) create mode 100644 lua/lazy/manage/rocks.lua create mode 100644 lua/lazy/manage/task/rocks.lua diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index d843db2..58f9e10 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -31,6 +31,9 @@ M.defaults = { -- increase downloads a lot. filter = true, }, + rocks = { + root = vim.fn.stdpath("data") .. "/lazy-rocks", + }, dev = { ---@type string | fun(plugin: LazyPlugin): string directory where you store your local plugin projects path = "~/projects", @@ -212,6 +215,9 @@ M.mapleader = nil ---@type string M.maplocalleader = nil +---@type {specs:string, tree:string, path:string, cpath:string} +M.rocks = {} + function M.headless() return #vim.api.nvim_list_uis() == 0 end @@ -262,6 +268,17 @@ function M.setup(opts) M.mapleader = vim.g.mapleader M.maplocalleader = vim.g.maplocalleader + M.rocks = { + specs = M.options.rocks.root .. "/specs", + tree = M.options.rocks.root .. "/tree", + path = M.options.rocks.root .. "/tree/share/lua/5.1", + cpath = M.options.rocks.root .. "/tree/lib/lua/5.1", + } + vim.fn.mkdir(M.rocks.specs, "p") + vim.fn.mkdir(M.rocks.tree, "p") + package.path = package.path .. ";" .. M.rocks.path .. "/?.lua;" .. M.rocks.path .. "/?/init.lua;" + package.cpath = package.cpath .. ";" .. M.rocks.cpath .. "/?." .. (jit.os:find("Windows") and "dll" or "so") .. ";" + if M.headless() then require("lazy.view.commands").setup() end diff --git a/lua/lazy/core/loader.lua b/lua/lazy/core/loader.lua index e07328c..ffd8753 100644 --- a/lua/lazy/core/loader.lua +++ b/lua/lazy/core/loader.lua @@ -44,6 +44,7 @@ function M.setup() while M.install_missing() do count = count + 1 if count > 5 then + Util.error("Too many rounds of missing plugins") break end end @@ -66,7 +67,11 @@ end -- multiple rounds can happen when importing a spec from a missing plugin function M.install_missing() for _, plugin in pairs(Config.plugins) do - if not (plugin._.installed or Plugin.has_errors(plugin)) then + local installed = plugin._.installed + local has_errors = Plugin.has_errors(plugin) + local rocks_installed = plugin._.rocks_installed ~= false + + if not has_errors and not (installed and rocks_installed) then for _, colorscheme in ipairs(Config.options.install.colorscheme) do if colorscheme == "default" then break diff --git a/lua/lazy/core/plugin.lua b/lua/lazy/core/plugin.lua index 3de712f..6c8d7da 100644 --- a/lua/lazy/core/plugin.lua +++ b/lua/lazy/core/plugin.lua @@ -570,6 +570,8 @@ function M.update_state() installed[name] = nil end + require("lazy.manage.rocks").update_state() + Config.to_clean = {} for pack, dir_type in pairs(installed) do table.insert(Config.to_clean, { diff --git a/lua/lazy/manage/init.lua b/lua/lazy/manage/init.lua index f5a96a9..308930e 100644 --- a/lua/lazy/manage/init.lua +++ b/lua/lazy/manage/init.lua @@ -82,12 +82,13 @@ function M.install(opts) pipeline = { "git.clone", { "git.checkout", lockfile = opts.lockfile }, + "rocks.install", "plugin.docs", "wait", "plugin.build", }, plugins = function(plugin) - return plugin.url and not plugin._.installed + return plugin.url and not (plugin._.installed and plugin._.rocks_installed ~= false) end, }, opts):wait(function() require("lazy.manage.lock").update() @@ -106,6 +107,7 @@ function M.update(opts) "git.fetch", "git.status", { "git.checkout", lockfile = opts.lockfile }, + "rocks.install", "plugin.docs", "wait", "plugin.build", diff --git a/lua/lazy/manage/rocks.lua b/lua/lazy/manage/rocks.lua new file mode 100644 index 0000000..efad65d --- /dev/null +++ b/lua/lazy/manage/rocks.lua @@ -0,0 +1,89 @@ +--# selene:allow(incorrect_standard_library_use) + +local Config = require("lazy.core.config") +local Util = require("lazy.core.util") + +---@class LazyRock +---@field plugin string +---@field name string +---@field spec string +---@field installed boolean + +local M = {} +---@type LazyRock[] +M.rocks = {} + +---@param ... string +---@return string[] +function M.args(...) + local ret = { "--tree", Config.rocks.tree, "--lua-version", "5.1" } + vim.list_extend(ret, { ... }) + return ret +end + +function M.parse(rockspec_file) + local rockspec = {} + local ret, err = loadfile(rockspec_file, "t", rockspec) + if not ret then + error(err) + end + ret() + return rockspec +end + +-- dd(M.parse("/home/folke/.local/share/nvim/lazy/neorg/neorg-scm-1.rockspec")) + +---@param plugin LazyPlugin +function M.get_rockspec(plugin) + assert(plugin.rocks and #plugin.rocks > 0, plugin.name .. " has no rocks") + local rockspec_file = Config.rocks.specs .. "/lazy-" .. plugin.name .. "-0.0-0.rockspec" + require("lazy.util").write_file( + rockspec_file, + ([[ +rockspec_format = "3.0" +package = "lazy-%s" +version = "0.0-0" +source = { url = "%s" } +dependencies = %s +build = { type = "builtin" } +]]):format(plugin.name, plugin.url, vim.inspect(plugin.rocks)) + ) + return rockspec_file +end + +function M.update_state() + local root = Config.rocks.tree .. "/lib/luarocks/rocks-5.1" + ---@type table + local installed = {} + Util.ls(root, function(_, name, type) + if type == "directory" then + installed[name] = name + end + end) + + ---@type LazyRock[] + local rocks = {} + M.rocks = rocks + + for _, plugin in pairs(Config.plugins) do + if plugin.rocks then + plugin._.rocks = {} + plugin._.rocks_installed = true + for _, spec in ipairs(plugin.rocks) do + spec = vim.trim(spec) + local name = spec:gsub("%s.*", "") + local rock = { + plugin = plugin.name, + name = name, + spec = spec, + installed = installed[name] ~= nil, + } + plugin._.rocks_installed = plugin._.rocks_installed and rock.installed + table.insert(plugin._.rocks, rock) + table.insert(rocks, rock) + end + end + end +end + +return M diff --git a/lua/lazy/manage/task/rocks.lua b/lua/lazy/manage/task/rocks.lua new file mode 100644 index 0000000..b2f61bf --- /dev/null +++ b/lua/lazy/manage/task/rocks.lua @@ -0,0 +1,57 @@ +local Rocks = require("lazy.manage.rocks") + +---@type table +local M = {} + +local running = false +local has_rocks = nil ---@type boolean? + +M.install = { + skip = function(plugin) + return plugin._.rocks_installed ~= false + end, + run = function(self) + if has_rocks == nil then + has_rocks = vim.fn.executable("luarocks") == 1 + end + if not has_rocks then + self.error = "This plugin has luarocks dependencies,\nbut the `luarocks` executable is not found.\nPlease install https://luarocks.org/ to continue.\n" + .. "luarock deps: " + .. vim.inspect(self.plugin.rocks) + return + end + + local started = false + + local function install() + started = true + self.status = "luarocks (install)" + vim.api.nvim_exec_autocmds("User", { pattern = "LazyRender", modeline = false }) + self:spawn("luarocks", { + args = Rocks.args("install", "--deps-mode", "one", "--deps-only", Rocks.get_rockspec(self.plugin)), + on_exit = function(ok) + running = false + if ok then + self.plugin._.rocks_installed = true + end + end, + }) + end + + local timer = vim.uv.new_timer() + timer:start(0, 100, function() + if not running then + running = true + timer:stop() + vim.schedule(install) + end + end) + self.status = "luarocks (pending)" + + table.insert(self._running, function() + return not started + end) + end, +} + +return M diff --git a/lua/lazy/types.lua b/lua/lazy/types.lua index 30bf9e5..831327e 100644 --- a/lua/lazy/types.lua +++ b/lua/lazy/types.lua @@ -24,6 +24,8 @@ ---@field rtp_loaded? boolean ---@field handlers? LazyPluginHandlers ---@field cache? table +---@field rocks? LazyRock[] +---@field rocks_installed? boolean ---@alias PluginOpts table|fun(self:LazyPlugin, opts:table):table? @@ -60,6 +62,7 @@ ---@field lazy? boolean ---@field priority? number Only useful for lazy=false plugins to force loading certain plugins first. Default priority is 50 ---@field dev? boolean If set, then link to the respective folder under your ~/projects +---@field rocks? string[] ---@class LazyPlugin: LazyPluginBase,LazyPluginHandlers,LazyPluginHooks,LazyPluginRef ---@field dependencies? string[] From 3be55a46158cde17e2b853e531d260f3738a5346 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Tue, 18 Jun 2024 21:54:54 +0200 Subject: [PATCH 047/342] feat: added support for plugin packages by lazy, rockspec and packspec --- lua/lazy/core/config.lua | 20 +++--- lua/lazy/core/packspec.lua | 125 ------------------------------------- lua/lazy/core/plugin.lua | 16 ++--- lua/lazy/manage/init.lua | 4 +- lua/lazy/manage/rocks.lua | 39 ++++++------ lua/lazy/pkg/init.lua | 92 +++++++++++++++++++++++++++ lua/lazy/pkg/lazy.lua | 28 +++++++++ lua/lazy/pkg/packspec.lua | 54 ++++++++++++++++ lua/lazy/pkg/rockspec.lua | 55 ++++++++++++++++ lua/lazy/util.lua | 15 +++-- lua/lazy/view/commands.lua | 4 +- 11 files changed, 281 insertions(+), 171 deletions(-) delete mode 100644 lua/lazy/core/packspec.lua create mode 100644 lua/lazy/pkg/init.lua create mode 100644 lua/lazy/pkg/lazy.lua create mode 100644 lua/lazy/pkg/packspec.lua create mode 100644 lua/lazy/pkg/rockspec.lua diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 58f9e10..db79250 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -31,8 +31,19 @@ M.defaults = { -- increase downloads a lot. filter = true, }, + pkg = { + enabled = true, + cache = vim.fn.stdpath("state") .. "/lazy/pkg-cache.lua", + versions = true, -- Honor versions in pkg sources + sources = { + "lazy", + "rockspec", + "packspec", + }, + }, rocks = { root = vim.fn.stdpath("data") .. "/lazy-rocks", + server = "https://nvim-neorocks.github.io/rocks-binaries/", }, dev = { ---@type string | fun(plugin: LazyPlugin): string directory where you store your local plugin projects @@ -182,11 +193,6 @@ M.defaults = { -- Track each new require in the Lazy profiling tab require = false, }, - packspec = { - enabled = true, - versions = true, -- Honor dependency versions in packspecs - path = vim.fn.stdpath("state") .. "/lazy/packspec.lua", - }, debug = false, } @@ -306,9 +312,9 @@ function M.setup(opts) -- useful for plugin developers when making changes to a packspec file vim.api.nvim_create_autocmd("BufWritePost", { - pattern = "package.lua", + pattern = "lazy.lua", callback = function() - require("lazy.view.commands").cmd("packspec") + require("lazy.view.commands").cmd("pkg") end, }) end, diff --git a/lua/lazy/core/packspec.lua b/lua/lazy/core/packspec.lua deleted file mode 100644 index 75217d1..0000000 --- a/lua/lazy/core/packspec.lua +++ /dev/null @@ -1,125 +0,0 @@ -local Config = require("lazy.core.config") -local Util = require("lazy.util") - ----@class PackSpec ----@field dependencies? table ----@field lazy? LazyPluginSpec -local M = {} - -M.lazy_file = "lazy.lua" -M.pkg_file = "pkg.json" -M.enable_lazy_file = false - ----@alias LazyPkg {lazy?:(fun():LazySpec), pkg?:PackSpec} - ----@type table -M.packspecs = nil ----@type table -M.specs = {} - ----@param spec LazyPkg ----@param plugin LazyPlugin ----@return LazySpec? -local function convert(plugin, spec) - ---@type LazySpec - local ret = {} - - local pkg = spec.pkg - if pkg then - if pkg.dependencies then - for url, version in pairs(pkg.dependencies) do - if (not Config.options.packspec.versions) or version == "*" or version == "" then - version = nil - end - -- HACK: Add `.git` to github urls - if url:find("github") and not url:match("%.git$") then - url = url .. ".git" - end - ret[#ret + 1] = { url = url, version = version } - end - end - local p = pkg.lazy - if p then - p.url = p.url or plugin.url - p.dir = p.dir or plugin.dir - ret[#ret + 1] = p - end - end - - if spec.lazy then - ret[#ret + 1] = spec.lazy() - end - - return ret -end - -local function load() - Util.track("packspec") - M.packspecs = {} - if vim.loop.fs_stat(Config.options.packspec.path) then - Util.try(function() - M.packspecs = loadfile(Config.options.packspec.path)() - end, "Error loading packspecs:") - end - Util.track() -end - ----@param plugin LazyPlugin ----@return LazySpec? -function M.get(plugin) - if not M.packspecs then - load() - end - - if not M.packspecs[plugin.dir] then - return - end - M.specs[plugin.dir] = M.specs[plugin.dir] or convert(plugin, M.packspecs[plugin.dir]) - return vim.deepcopy(M.specs[plugin.dir]) -end - -function M.update() - local ret = {} - for _, plugin in pairs(Config.plugins) do - local spec = { - pkg = M.pkg(plugin), - lazy = M.enable_lazy_file and M.lazy_pkg(plugin) or nil, - } - if not vim.tbl_isempty(spec) then - ret[plugin.dir] = spec - end - end - local code = "return " .. Util.dump(ret) - Util.write_file(Config.options.packspec.path, code) - M.packspecs = nil - M.specs = {} -end - ----@param plugin LazyPlugin -function M.lazy_pkg(plugin) - local file = Util.norm(plugin.dir .. "/" .. M.lazy_file) - if Util.file_exists(file) then - ---@type LazySpec - local chunk = Util.try(function() - return loadfile(file) - end, "`" .. M.lazy_file .. "` for **" .. plugin.name .. "** has errors:") - if chunk then - return { _raw = ([[function() %s end]]):format(Util.read_file(file)) } - else - Util.error("Invalid `package.lua` for **" .. plugin.name .. "**") - end - end -end - ----@param plugin LazyPlugin -function M.pkg(plugin) - local file = Util.norm(plugin.dir .. "/" .. M.pkg_file) - if Util.file_exists(file) then - ---@type PackSpec - return Util.try(function() - return vim.json.decode(Util.read_file(file)) - end, "`" .. M.pkg_file .. "` for **" .. plugin.name .. "** has errors:") - end -end - -return M diff --git a/lua/lazy/core/plugin.lua b/lua/lazy/core/plugin.lua index 6c8d7da..de6d228 100644 --- a/lua/lazy/core/plugin.lua +++ b/lua/lazy/core/plugin.lua @@ -1,5 +1,5 @@ local Config = require("lazy.core.config") -local Packspec = require("lazy.core.packspec") +local Pkg = require("lazy.pkg") local Util = require("lazy.core.util") ---@class LazyCorePlugin @@ -16,7 +16,7 @@ M.loading = false ---@field notifs {msg:string, level:number, file?:string}[] ---@field importing? string ---@field optional? boolean ----@field packspecs table +---@field pkgs table ---@field names table local Spec = {} M.Spec = Spec @@ -35,7 +35,7 @@ function Spec.new(spec, opts) self.dirty = {} self.notifs = {} self.ignore_installed = {} - self.packspecs = {} + self.pkgs = {} self.optional = opts and opts.optional self.names = {} if spec then @@ -173,11 +173,11 @@ function Spec:add(plugin, results) end -- import the plugin's spec - if Config.options.packspec.enabled and plugin.dir and not self.packspecs[plugin.dir] then - self.packspecs[plugin.dir] = true - local packspec = Packspec.get(plugin) - if packspec then - self:normalize(packspec, nil, true) + if Config.options.pkg.enabled and plugin.dir and not self.pkgs[plugin.dir] then + self.pkgs[plugin.dir] = true + local pkg = Pkg.get_spec(plugin) + if pkg then + self:normalize(pkg, nil) end end diff --git a/lua/lazy/manage/init.lua b/lua/lazy/manage/init.lua index 308930e..3e145c8 100644 --- a/lua/lazy/manage/init.lua +++ b/lua/lazy/manage/init.lua @@ -93,7 +93,7 @@ function M.install(opts) }, opts):wait(function() require("lazy.manage.lock").update() require("lazy.help").update() - require("lazy.core.packspec").update() + require("lazy.pkg").update() end) end @@ -119,7 +119,7 @@ function M.update(opts) }, opts):wait(function() require("lazy.manage.lock").update() require("lazy.help").update() - require("lazy.core.packspec").update() + require("lazy.pkg").update() end) end -- diff --git a/lua/lazy/manage/rocks.lua b/lua/lazy/manage/rocks.lua index efad65d..3e1bc6e 100644 --- a/lua/lazy/manage/rocks.lua +++ b/lua/lazy/manage/rocks.lua @@ -16,33 +16,32 @@ M.rocks = {} ---@param ... string ---@return string[] function M.args(...) - local ret = { "--tree", Config.rocks.tree, "--lua-version", "5.1" } + local ret = { + "--tree", + Config.rocks.tree, + "--server", + Config.options.rocks.server, + "--dev", + "--lua-version", + "5.1", + } vim.list_extend(ret, { ... }) return ret end -function M.parse(rockspec_file) - local rockspec = {} - local ret, err = loadfile(rockspec_file, "t", rockspec) - if not ret then - error(err) - end - ret() - return rockspec -end - --- dd(M.parse("/home/folke/.local/share/nvim/lazy/neorg/neorg-scm-1.rockspec")) - ---@param plugin LazyPlugin function M.get_rockspec(plugin) - assert(plugin.rocks and #plugin.rocks > 0, plugin.name .. " has no rocks") - local rockspec_file = Config.rocks.specs .. "/lazy-" .. plugin.name .. "-0.0-0.rockspec" + local rocks = vim.tbl_map(function(rock) + return rock.name + end, plugin._.rocks) + assert(rocks and #rocks > 0, plugin.name .. " has no rocks") + local rockspec_file = Config.rocks.specs .. "/lazy-" .. plugin.name .. "-scm-1.rockspec" require("lazy.util").write_file( rockspec_file, ([[ rockspec_format = "3.0" package = "lazy-%s" -version = "0.0-0" +version = "scm-1" source = { url = "%s" } dependencies = %s build = { type = "builtin" } @@ -78,9 +77,11 @@ function M.update_state() spec = spec, installed = installed[name] ~= nil, } - plugin._.rocks_installed = plugin._.rocks_installed and rock.installed - table.insert(plugin._.rocks, rock) - table.insert(rocks, rock) + if rock.name ~= "lua" then + plugin._.rocks_installed = plugin._.rocks_installed and rock.installed + table.insert(plugin._.rocks, rock) + table.insert(rocks, rock) + end end end end diff --git a/lua/lazy/pkg/init.lua b/lua/lazy/pkg/init.lua new file mode 100644 index 0000000..f09afbc --- /dev/null +++ b/lua/lazy/pkg/init.lua @@ -0,0 +1,92 @@ +local Config = require("lazy.core.config") +local Util = require("lazy.util") + +local M = {} + +---@alias LazyPkgSpec LazySpec | fun():LazySpec + +---@class LazyPkg +---@field source string +---@field file string +---@field spec? LazySpec +---@field chunk? string|fun():LazySpec + +---@class LazyPkgSource +---@field get fun(plugin:LazyPlugin):LazyPkg + +---@type table? +M.cache = nil + +function M.update() + ---@type LazyPkgSource[] + local sources = {} + for _, s in ipairs(Config.options.pkg.sources) do + sources[#sources + 1] = require("lazy.pkg." .. s) + end + + ---@type table + local ret = {} + for _, plugin in pairs(Config.plugins) do + for _, source in ipairs(sources) do + local spec = source.get(plugin) + if spec then + if type(spec.chunk) == "function" then + spec.chunk = string.dump(spec.chunk) + end + ret[plugin.dir] = spec + break + end + end + end + local code = "return " .. Util.dump(ret) + Util.write_file(Config.options.pkg.cache, code) + M.cache = nil +end + +local function _load() + Util.track("pkg") + M.cache = {} + if vim.uv.fs_stat(Config.options.pkg.cache) then + Util.try(function() + local chunk, err = loadfile(Config.options.pkg.cache) + if not chunk then + error(err) + end + M.cache = chunk() + end, "Error loading pkg:") + end + Util.track() +end + +---@param plugin LazyPlugin +---@return LazyPkg? +function M.get(plugin) + if not M.cache then + _load() + end + + local ret = M.cache[plugin.dir] + if not ret then + return + end + + if ret.chunk and not ret.spec then + if type(ret.chunk) == "string" then + ret.chunk = load(ret.chunk, "@" .. plugin.dir) + end + ret.spec = ret.chunk() + ret.chunk = nil + end + + return ret +end + +---@param plugin LazyPlugin +---@return LazySpec? +function M.get_spec(plugin) + local pkg = M.get(plugin) + local spec = pkg and pkg.spec + return spec and type(spec) == "table" and vim.deepcopy(spec) or spec +end + +return M diff --git a/lua/lazy/pkg/lazy.lua b/lua/lazy/pkg/lazy.lua new file mode 100644 index 0000000..07b0491 --- /dev/null +++ b/lua/lazy/pkg/lazy.lua @@ -0,0 +1,28 @@ +local Util = require("lazy.util") + +local M = {} + +M.lazy_file = "lazy.lua" + +---@param plugin LazyPlugin +---@return LazyPkg? +function M.get(plugin) + local file = Util.norm(plugin.dir .. "/" .. M.lazy_file) + if Util.file_exists(file) then + ---@type fun(): LazySpec + local chunk = Util.try(function() + local ret, err = loadfile(file) + return err and error(err) or ret + end, "`" .. M.lazy_file .. "` for **" .. plugin.name .. "** has errors:") + if not chunk then + Util.error("Invalid `" .. M.lazy_file .. "` for **" .. plugin.name .. "**") + end + return { + source = "lazy", + file = M.lazy_file, + chunk = chunk, + } + end +end + +return M diff --git a/lua/lazy/pkg/packspec.lua b/lua/lazy/pkg/packspec.lua new file mode 100644 index 0000000..c9f2042 --- /dev/null +++ b/lua/lazy/pkg/packspec.lua @@ -0,0 +1,54 @@ +local Util = require("lazy.util") + +---@class PackSpec +---@field dependencies? table +---@field lazy? LazyPluginSpec +--- +local M = {} + +M.pkg_file = "pkg.json" + +---@param plugin LazyPlugin +---@return LazyPkg? +function M.get(plugin) + local file = Util.norm(plugin.dir .. "/" .. M.pkg_file) + if not Util.file_exists(file) then + return + end + ---@type PackSpec + local pkg = Util.try(function() + return vim.json.decode(Util.read_file(file)) + end, "`" .. M.pkg_file .. "` for **" .. plugin.name .. "** has errors:") + + if not pkg then + return + end + + ---@type LazySpec + local ret = {} + if pkg.dependencies then + for url, version in pairs(pkg.dependencies) do + -- HACK: Add `.git` to github urls + if url:find("github") and not url:match("%.git$") then + url = url .. ".git" + end + ret[#ret + 1] = { url = url, version = version } + end + end + local p = pkg.lazy + if p then + p.url = p.url or plugin.url + p.dir = p.dir or plugin.dir + ret[#ret + 1] = p + end + if pkg.lazy then + ret[#ret + 1] = pkg.lazy + end + return { + source = "lazy", + file = M.pkg_file, + spec = ret, + } +end + +return M diff --git a/lua/lazy/pkg/rockspec.lua b/lua/lazy/pkg/rockspec.lua new file mode 100644 index 0000000..7a0c752 --- /dev/null +++ b/lua/lazy/pkg/rockspec.lua @@ -0,0 +1,55 @@ +--# selene:allow(incorrect_standard_library_use) + +local Util = require("lazy.core.util") + +local M = {} + +M.dev_suffix = "-scm-1.rockspec" +M.skip = { "lua" } + +---@class RockSpec +---@field rockspec_format string +---@field package string +---@field version string +---@field dependencies string[] + +---@param plugin LazyPlugin +---@return LazyPkg? +function M.get(plugin) + local rockspec_file ---@type string? + Util.ls(plugin.dir, function(path, name, t) + if t == "file" and name:sub(-#M.dev_suffix) == M.dev_suffix then + rockspec_file = path + return false + end + end) + + if not rockspec_file then + return + end + + ---@type RockSpec? + local rockspec = {} + local ret, err = loadfile(rockspec_file, "t", rockspec) + if not ret then + error(err) + end + ret() + return rockspec + and rockspec.package + and { + source = "rockspec", + file = rockspec_file, + spec = { + dir = plugin.dir, + url = plugin.url, + rocks = vim.tbl_filter(function(dep) + local name = dep:gsub("%s.*", "") + return not vim.tbl_contains(M.skip, name) + end, rockspec.dependencies), + }, + } + or nil +end + +return M diff --git a/lua/lazy/util.lua b/lua/lazy/util.lua index 970b066..755c1cd 100644 --- a/lua/lazy/util.lua +++ b/lua/lazy/util.lua @@ -241,22 +241,21 @@ function M._dump(value, result) table.insert(result, value._raw) elseif t == "table" then table.insert(result, "{") - local i = 1 + for _, v in ipairs(value) do + M._dump(v, result) + table.insert(result, ",") + end ---@diagnostic disable-next-line: no-unknown for k, v in pairs(value) do - if k == i then - elseif type(k) == "string" then + if type(k) == "string" then if k:match("^[a-zA-Z]+$") then table.insert(result, ("%s="):format(k)) else table.insert(result, ("[%q]="):format(k)) end - else - table.insert(result, k .. "=") + M._dump(v, result) + table.insert(result, ",") end - M._dump(v, result) - table.insert(result, ",") - i = i + 1 end table.insert(result, "}") else diff --git a/lua/lazy/view/commands.lua b/lua/lazy/view/commands.lua index 13c5070..6b828a5 100644 --- a/lua/lazy/view/commands.lua +++ b/lua/lazy/view/commands.lua @@ -35,11 +35,11 @@ M.commands = { vim.cmd.checkhealth("lazy") end, pkg = function(opts) - local Pkg = require("lazy.core.packspec") + local Pkg = require("lazy.pkg") Pkg.update() require("lazy.manage.reloader").reload({ { - file = "packspec", --Config.options.packspec.path, + file = "pkg", what = "changed", }, }) From 8d35e60eeb83a53ad75399c38de4b5d044e5e15a Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Tue, 18 Jun 2024 22:09:49 +0200 Subject: [PATCH 048/342] test: fix spec tests --- tests/core/plugin_spec.lua | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/core/plugin_spec.lua b/tests/core/plugin_spec.lua index c15505f..548b5f5 100644 --- a/tests/core/plugin_spec.lua +++ b/tests/core/plugin_spec.lua @@ -52,7 +52,10 @@ describe("plugin spec url/name", function() local spec = Plugin.Spec.new(test[1]) local plugins = vim.tbl_values(spec.plugins) plugins[1]._ = {} - assert(#spec.notifs == 0) + local notifs = vim.tbl_filter(function(notif) + return notif.level > 3 + end, spec.notifs) + assert(#notifs == 0, vim.inspect(spec.notifs)) assert.equal(1, #plugins) plugins[1]._.super = nil assert.same(test[2], plugins[1]) From 75ffe56f70faac43f077796b91178d2f1419f8ce Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 22 Jun 2024 22:18:26 +0200 Subject: [PATCH 049/342] feat: rewrite of spec resolving --- lua/lazy/core/fragments.lua | 159 +++++++++++++++ lua/lazy/core/loader.lua | 8 +- lua/lazy/core/meta.lua | 245 +++++++++++++++++++++++ lua/lazy/core/plugin.lua | 375 +++-------------------------------- lua/lazy/core/util.lua | 2 +- lua/lazy/health.lua | 18 -- lua/lazy/types.lua | 51 +++-- tests/core/plugin_spec.lua | 128 ++++++++---- tests/handlers/keys_spec.lua | 1 + 9 files changed, 558 insertions(+), 429 deletions(-) create mode 100644 lua/lazy/core/fragments.lua create mode 100644 lua/lazy/core/meta.lua diff --git a/lua/lazy/core/fragments.lua b/lua/lazy/core/fragments.lua new file mode 100644 index 0000000..7096f55 --- /dev/null +++ b/lua/lazy/core/fragments.lua @@ -0,0 +1,159 @@ +local Config = require("lazy.core.config") + +local M = {} + +M._fid = 0 + +local function next_id() + M._fid = M._fid + 1 + return M._fid +end + +---@class LazyFragments +---@field fragments table +---@field frag_stack number[] +---@field dep_stack number[] +---@field dirty table +---@field spec LazySpecLoader +local F = {} + +---@param spec LazySpecLoader +---@return LazyFragments +function M.new(spec) + local self = setmetatable({}, { __index = F }) + self.fragments = {} + self.frag_stack = {} + self.dep_stack = {} + self.spec = spec + self.dirty = {} + return self +end + +---@param id number +function F:get(id) + return self.fragments[id] +end + +---@param id number +function F:del(id) + -- del fragment + local fragment = self.fragments[id] + if not fragment then + return + end + + self.dirty[id] = true + + -- remove from parent + local pid = fragment.pid + if pid then + local parent = self.fragments[pid] + if parent.frags then + ---@param fid number + parent.frags = vim.tbl_filter(function(fid) + return fid ~= id + end, parent.frags) + end + if parent.deps then + ---@param fid number + parent.deps = vim.tbl_filter(function(fid) + return fid ~= id + end, parent.deps) + end + self.dirty[pid] = true + end + + -- remove children + if fragment.frags then + for _, fid in ipairs(fragment.frags) do + self:del(fid) + end + end + + self.fragments[id] = nil +end + +---@param plugin LazyPluginSpec +function F:add(plugin) + local id = next_id() + + local pid = self.frag_stack[#self.frag_stack] + + ---@type LazyFragment + local fragment = { + id = id, + pid = pid, + name = plugin.name, + url = plugin.url, + dir = plugin.dir, + spec = plugin --[[@as LazyPlugin]], + } + + -- short url / ref + if plugin[1] then + local slash = plugin[1]:find("/", 1, true) + if slash then + local prefix = plugin[1]:sub(1, 4) + if prefix == "http" or prefix == "git@" then + fragment.url = fragment.url or plugin[1] + else + fragment.name = fragment.name or plugin[1]:sub(slash + 1) + fragment.url = fragment.url or Config.options.git.url_format:format(plugin[1]) + end + else + fragment.name = fragment.name or plugin[1] + end + end + + -- name + fragment.name = fragment.name + or fragment.url and self.spec.get_name(fragment.url) + or fragment.dir and self.spec.get_name(fragment.dir) + if not fragment.name then + return self.spec:error("Invalid plugin spec " .. vim.inspect(plugin)) + end + + if type(plugin.config) == "table" then + self.spec:warn( + "{" .. fragment.name .. "}: setting a table to `Plugin.config` is deprecated. Please use `Plugin.opts` instead" + ) + ---@diagnostic disable-next-line: assign-type-mismatch + plugin.opts = plugin.config + plugin.config = nil + end + + self.fragments[id] = fragment + + -- add to parent + if pid then + local parent = self.fragments[pid] + parent.frags = parent.frags or {} + table.insert(parent.frags, id) + end + + -- add to parent's deps + local did = self.dep_stack[#self.dep_stack] + if did and did == pid then + fragment.dep = true + local parent = self.fragments[did] + parent.deps = parent.deps or {} + table.insert(parent.deps, id) + end + + table.insert(self.frag_stack, id) + -- dependencies + if plugin.dependencies then + table.insert(self.dep_stack, id) + self.spec:normalize(plugin.dependencies) + table.remove(self.dep_stack) + end + -- child specs + if plugin.specs then + self.spec:normalize(plugin.specs) + end + table.remove(self.frag_stack) + + return fragment +end + +return M diff --git a/lua/lazy/core/loader.lua b/lua/lazy/core/loader.lua index ffd8753..a0233ad 100644 --- a/lua/lazy/core/loader.lua +++ b/lua/lazy/core/loader.lua @@ -105,7 +105,7 @@ function M.startup() M.source(vim.env.VIMRUNTIME .. "/filetype.lua") -- backup original rtp - local rtp = vim.opt.rtp:get() + local rtp = vim.opt.rtp:get() --[[@as string[] ]] -- 1. run plugin init Util.track({ start = "init" }) @@ -136,7 +136,7 @@ function M.startup() if not path:find("after/?$") then -- these paths don't will already have their ftdetect ran, -- by sourcing filetype.lua above, so skip them - M.did_ftdetect[path] = true + M.did_ftdetect[path] = path M.packadd(path) end end @@ -144,7 +144,9 @@ function M.startup() -- 4. load after plugins Util.track({ start = "after" }) - for _, path in ipairs(vim.opt.rtp:get()) do + for _, path in + ipairs(vim.opt.rtp:get() --[[@as string[] ]]) + do if path:find("after/?$") then M.source_runtime(path, "plugin") end diff --git a/lua/lazy/core/meta.lua b/lua/lazy/core/meta.lua new file mode 100644 index 0000000..9c40238 --- /dev/null +++ b/lua/lazy/core/meta.lua @@ -0,0 +1,245 @@ +local Config = require("lazy.core.config") +local Util = require("lazy.core.util") + +---@class LazyMeta +---@field plugins table +---@field str_to_meta table +---@field frag_to_meta table +---@field dirty table +---@field spec LazySpecLoader +---@field fragments LazyFragments +local M = {} + +---@param spec LazySpecLoader +---@return LazyMeta +function M.new(spec) + local self = setmetatable({}, { __index = M }) + self.spec = spec + self.fragments = require("lazy.core.fragments").new(spec) + self.plugins = {} + self.frag_to_meta = {} + self.str_to_meta = {} + self.dirty = {} + return self +end + +---@param name string +function M:del(name) + local meta = self.plugins[name] + if not meta then + return + end + for _, fid in ipairs(meta._.frags or {}) do + self.fragments:del(fid) + end + self.plugins[name] = nil +end + +---@param plugin LazyPluginSpec +function M:add(plugin) + local fragment = self.fragments:add(plugin) + if not fragment then + return + end + + local meta = self.plugins[fragment.name] + or fragment.url and self.str_to_meta[fragment.url] + or fragment.dir and self.str_to_meta[fragment.dir] + + if not meta then + meta = { name = fragment.name, _ = { frags = {} } } + local url, dir = fragment.url, fragment.dir + -- add to index + if url then + self.str_to_meta[url] = meta + end + if dir then + self.str_to_meta[dir] = meta + end + end + + table.insert(meta._.frags, fragment.id) + + if plugin.name then + -- handle renames + if meta.name ~= plugin.name then + self.plugins[meta.name] = nil + meta.name = plugin.name + end + end + + self.plugins[meta.name] = meta + self.frag_to_meta[fragment.id] = meta + self.dirty[meta.name] = true +end + +function M:rebuild() + for fid in pairs(self.fragments.dirty) do + local meta = self.frag_to_meta[fid] + if meta then + if self.fragments:get(fid) then + -- fragment still exists, so mark plugin as dirty + self.dirty[meta.name] = true + else + -- fragment was deleted, so remove it from plugin + ---@param f number + meta._.frags = vim.tbl_filter(function(f) + return f ~= fid + end, meta._.frags) + -- if no fragments left, delete plugin + if #meta._.frags == 0 then + self:del(meta.name) + else + self.dirty[meta.name] = true + end + end + end + end + self.fragments.dirty = {} + for n, _ in pairs(self.dirty) do + self:_rebuild(n) + end +end + +---@param name string +function M:_rebuild(name) + local plugin = self.plugins[name] + if not plugin or #plugin._.frags == 0 then + self.plugins[name] = nil + return + end + setmetatable(plugin, nil) + plugin.dependencies = {} + + local super = nil + plugin.url = nil + plugin._.dep = true + plugin.optional = true + + assert(#plugin._.frags > 0, "no fragments found for plugin " .. name) + + for _, fid in ipairs(plugin._.frags) do + local fragment = self.fragments:get(fid) + assert(fragment, "fragment " .. fid .. " not found, for plugin " .. name) + ---@diagnostic disable-next-line: no-unknown + super = setmetatable(fragment.spec, super and { __index = super } or nil) + plugin._.dep = plugin._.dep and fragment.dep + plugin.optional = plugin.optional and (rawget(fragment.spec, "optional") == true) + plugin.url = fragment.url or plugin.url + + -- dependencies + for _, dep in ipairs(fragment.deps or {}) do + table.insert(plugin.dependencies, self.fragments:get(dep).name) + end + end + + super = super or {} + + -- dir / dev + plugin.dev = super.dev + plugin.dir = super.dir + if plugin.dir then + plugin.dir = Util.norm(plugin.dir) + else + if plugin.dev == nil and plugin.url then + for _, pattern in ipairs(Config.options.dev.patterns) do + if plugin.url:find(pattern, 1, true) then + plugin.dev = true + break + end + end + end + if plugin.dev == true then + local dev_dir = type(Config.options.dev.path) == "string" and Config.options.dev.path .. "/" .. plugin.name + or Util.norm(Config.options.dev.path(plugin)) + if not Config.options.dev.fallback or vim.fn.isdirectory(dev_dir) == 1 then + plugin.dir = dev_dir + else + plugin.dev = false + end + end + plugin.dir = plugin.dir or Config.options.root .. "/" .. plugin.name + end + + if #plugin.dependencies == 0 and not super.dependencies then + plugin.dependencies = nil + end + if not plugin.optional and not super.optional then + plugin.optional = nil + end + setmetatable(plugin, { __index = super }) + + self.dirty[plugin.name] = nil + return plugin +end + +---@param plugin LazyPlugin +function M:disable(plugin) + plugin._.kind = "disabled" + self:del(plugin.name) + self.spec.disabled[plugin.name] = plugin +end + +function M:fix_cond() + for _, plugin in pairs(self.plugins) do + local cond = plugin.cond + if cond == nil then + cond = Config.options.defaults.cond + end + if cond == false or (type(cond) == "function" and not cond(plugin)) then + plugin._.cond = false + local stack = { plugin } + while #stack > 0 do + local p = table.remove(stack) --[[@as LazyPlugin]] + if not self.spec.ignore_installed[p.name] then + for _, dep in ipairs(p.dependencies or {}) do + table.insert(stack, self.plugins[dep]) + end + self.spec.ignore_installed[p.name] = true + end + end + plugin.enabled = false + end + end +end + +function M:fix_optional() + if self.spec.optional then + return 0 + end + local changes = 0 + for _, plugin in pairs(self.plugins) do + if plugin.optional then + changes = changes + 1 + self:del(plugin.name) + end + end + self:rebuild() + return changes +end + +function M:fix_disabled() + local changes = 0 + for _, plugin in pairs(self.plugins) do + if plugin.enabled == false or (type(plugin.enabled) == "function" and not plugin.enabled()) then + changes = changes + 1 + self:disable(plugin) + end + end + self:rebuild() + return changes +end + +function M:fix() + Util.track("resolve plugins") + self:rebuild() + + self:fix_cond() + + -- selene: allow(empty_loop) + while self:fix_disabled() + self:fix_optional() > 0 do + end + Util.track() +end + +return M diff --git a/lua/lazy/core/plugin.lua b/lua/lazy/core/plugin.lua index de6d228..6aec6f1 100644 --- a/lua/lazy/core/plugin.lua +++ b/lua/lazy/core/plugin.lua @@ -1,4 +1,5 @@ local Config = require("lazy.core.config") +local Meta = require("lazy.core.meta") local Pkg = require("lazy.pkg") local Util = require("lazy.core.util") @@ -7,46 +8,49 @@ local M = {} M.loading = false ---@class LazySpecLoader +---@field meta LazyMeta ---@field plugins table ----@field fragments table ---@field disabled table ----@field dirty table ---@field ignore_installed table ---@field modules string[] ---@field notifs {msg:string, level:number, file?:string}[] ---@field importing? string ---@field optional? boolean ---@field pkgs table ----@field names table local Spec = {} M.Spec = Spec -M.last_fid = 0 -M.fid_stack = {} ---@type number[] M.LOCAL_SPEC = ".lazy.lua" ---@param spec? LazySpec ---@param opts? {optional?:boolean} function Spec.new(spec, opts) - local self = setmetatable({}, { __index = Spec }) - self.plugins = {} - self.fragments = {} + local self = setmetatable({}, Spec) + self.meta = Meta.new(self) self.disabled = {} self.modules = {} - self.dirty = {} self.notifs = {} self.ignore_installed = {} self.pkgs = {} self.optional = opts and opts.optional - self.names = {} if spec then self:parse(spec) end return self end +function Spec:__index(key) + if Spec[key] then + return Spec[key] + end + if key == "plugins" then + self.meta:rebuild() + return self.meta.plugins + end +end + function Spec:parse(spec) self:normalize(spec) - self:fix_disabled() + self.meta:fix() end -- PERF: optimized code to get package name without using lua patterns @@ -58,136 +62,22 @@ function Spec.get_name(pkg) return slash and name:sub(#name - slash + 2) or pkg:gsub("%W+", "_") end ----@param plugin LazyPlugin ----@param results? string[] -function Spec:add(plugin, results) - -- check if we already processed this spec. Can happen when a user uses the same instance of a spec in multiple specs - -- see https://github.com/folke/lazy.nvim/issues/45 - if rawget(plugin, "_") then - if results then - table.insert(results, plugin.name) - end - return plugin - end +---@param plugin LazyPluginSpec +function Spec:add(plugin) + self.meta:add(plugin) - local is_ref = plugin[1] and not plugin[1]:find("/", 1, true) - - if not plugin.url and not is_ref and plugin[1] then - local prefix = plugin[1]:sub(1, 4) - if prefix == "http" or prefix == "git@" then - plugin.url = plugin[1] - else - plugin.url = Config.options.git.url_format:format(plugin[1]) - end - end - - ---@type string? - local dir - - if plugin.dir then - dir = Util.norm(plugin.dir) - -- local plugin - plugin.name = plugin.name or Spec.get_name(plugin.dir) - elseif plugin.url then - if plugin.name then - self.names[plugin.url] = plugin.name - local name = Spec.get_name(plugin.url) - if name and self.plugins[name] then - self.plugins[name].name = plugin.name - self.plugins[plugin.name] = self.plugins[name] - self.plugins[name] = nil - end - else - plugin.name = self.names[plugin.url] or Spec.get_name(plugin.url) - end - -- check for dev plugins - if plugin.dev == nil then - for _, pattern in ipairs(Config.options.dev.patterns) do - if plugin.url:find(pattern, 1, true) then - plugin.dev = true - break - end - end - end - elseif is_ref then - plugin.name = plugin[1] - else - self:error("Invalid plugin spec " .. vim.inspect(plugin)) - return - end - - if not plugin.name or plugin.name == "" then - self:error("Plugin spec " .. vim.inspect(plugin) .. " has no name") - return - end - - -- dev plugins - if plugin.dev then - local dir_dev - if type(Config.options.dev.path) == "string" then - dir_dev = Config.options.dev.path .. "/" .. plugin.name - else - dir_dev = Util.norm(Config.options.dev.path(plugin)) - end - if not Config.options.dev.fallback or vim.fn.isdirectory(dir_dev) == 1 then - dir = dir_dev - end - elseif plugin.dev == false then - -- explicitly select the default path - dir = Config.options.root .. "/" .. plugin.name - end - - if type(plugin.config) == "table" then - self:warn( - "{" .. plugin.name .. "}: setting a table to `Plugin.config` is deprecated. Please use `Plugin.opts` instead" - ) - ---@diagnostic disable-next-line: assign-type-mismatch - plugin.opts = plugin.config - plugin.config = nil - end - - local fpid = M.fid_stack[#M.fid_stack] - - M.last_fid = M.last_fid + 1 - plugin._ = { - dir = dir, - fid = M.last_fid, - fpid = fpid, - dep = fpid ~= nil, - module = self.importing, - } - self.fragments[plugin._.fid] = plugin - -- remote plugin - plugin.dir = plugin._.dir or (plugin.name and (Config.options.root .. "/" .. plugin.name)) or nil - - if fpid then - local parent = self.fragments[fpid] - parent._.fdeps = parent._.fdeps or {} - table.insert(parent._.fdeps, plugin._.fid) - end - - if plugin.dependencies then - table.insert(M.fid_stack, plugin._.fid) - plugin.dependencies = self:normalize(plugin.dependencies, {}) - table.remove(M.fid_stack) - end + ---@diagnostic disable-next-line: cast-type-mismatch + ---@cast plugin LazyPlugin -- import the plugin's spec if Config.options.pkg.enabled and plugin.dir and not self.pkgs[plugin.dir] then self.pkgs[plugin.dir] = true local pkg = Pkg.get_spec(plugin) if pkg then - self:normalize(pkg, nil) + self:normalize(pkg) end end - if self.plugins[plugin.name] then - plugin = self:merge(self.plugins[plugin.name], plugin) - end - self.plugins[plugin.name] = plugin - if results then - table.insert(results, plugin.name) - end return plugin end @@ -199,166 +89,6 @@ function Spec:warn(msg) self:log(msg, vim.log.levels.WARN) end ---- Rebuilds a plugin spec excluding any removed fragments ----@param name? string -function Spec:rebuild(name) - if not name then - for n, _ in pairs(self.dirty) do - self:rebuild(n) - end - self.dirty = {} - end - local plugin = self.plugins[name] - if not plugin then - return - end - - local fragments = {} ---@type LazyPlugin[] - - repeat - local super = plugin._.super - if self.fragments[plugin._.fid] then - plugin._.dep = plugin._.fpid ~= nil - plugin._.super = nil - if plugin._.fdeps then - plugin.dependencies = {} - for _, cid in ipairs(plugin._.fdeps) do - if self.fragments[cid] then - table.insert(plugin.dependencies, self.fragments[cid].name) - end - end - end - setmetatable(plugin, nil) - table.insert(fragments, 1, plugin) - end - plugin = super - until not plugin - - if #fragments == 0 then - self.plugins[name] = nil - return - end - - plugin = fragments[1] - for i = 2, #fragments do - plugin = self:merge(plugin, fragments[i]) - end - self.plugins[name] = plugin -end - ---- Recursively removes all fragments from a plugin spec or a given fragment ----@param id string|number Plugin name or fragment id ----@param opts {self: boolean} -function Spec:remove_fragments(id, opts) - local fids = {} ---@type number[] - - if type(id) == "number" then - fids[1] = id - else - local plugin = self.plugins[id] - repeat - if plugin._.fpid then - local parent = self.fragments[plugin._.fpid] - if parent then - parent._.fdeps = vim.tbl_filter(function(fid) - return fid ~= plugin._.fid - end, parent._.fdeps) - self.dirty[parent.name] = true - end - end - fids[#fids + 1] = plugin._.fid - plugin = plugin._.super - until not plugin - end - - for _, fid in ipairs(fids) do - local fragment = self.fragments[fid] - if fragment then - for _, cid in ipairs(fragment._.fdeps or {}) do - self:remove_fragments(cid, { self = true }) - end - if opts.self then - self.fragments[fid] = nil - end - self.dirty[fragment.name] = true - end - end -end - -function Spec:fix_cond() - for _, plugin in pairs(self.plugins) do - local cond = plugin.cond - if cond == nil then - cond = Config.options.defaults.cond - end - if cond == false or (type(cond) == "function" and not cond(plugin)) then - plugin._.cond = false - local stack = { plugin } - while #stack > 0 do - local p = table.remove(stack) - if not self.ignore_installed[p.name] then - for _, dep in ipairs(p.dependencies or {}) do - table.insert(stack, self.plugins[dep]) - end - self.ignore_installed[p.name] = true - end - end - plugin.enabled = false - end - end -end - -function Spec:fix_optional() - if not self.optional then - ---@param plugin LazyPlugin - local function all_optional(plugin) - return (not plugin) or (rawget(plugin, "optional") and all_optional(plugin._.super)) - end - - -- handle optional plugins - for _, plugin in pairs(self.plugins) do - if plugin.optional and all_optional(plugin) then - -- remove all optional fragments - self:remove_fragments(plugin.name, { self = true }) - self.plugins[plugin.name] = nil - end - end - end -end - -function Spec:fix_disabled() - for _, plugin in pairs(self.plugins) do - if not plugin.name or not plugin.dir then - self:error("Plugin spec for **" .. plugin.name .. "** not found.\n```lua\n" .. vim.inspect(plugin) .. "\n```") - self.plugins[plugin.name] = nil - end - end - - self:fix_optional() - self:rebuild() - - self:fix_cond() - self:rebuild() - - self.dirty = {} - - for _, plugin in pairs(self.plugins) do - local disabled = plugin.enabled == false or (type(plugin.enabled) == "function" and not plugin.enabled()) - if disabled then - plugin._.kind = "disabled" - -- remove all child fragments - self:remove_fragments(plugin.name, { self = false }) - self.plugins[plugin.name] = nil - self.disabled[plugin.name] = plugin - end - end - self:rebuild() - - -- check optional plugins again - self:fix_optional() - self:rebuild() -end - ---@param msg string ---@param level number function Spec:log(msg, level) @@ -378,25 +108,17 @@ function Spec:report(level) end ---@param spec LazySpec|LazySpecImport ----@param results? string[] -function Spec:normalize(spec, results) +function Spec:normalize(spec) if type(spec) == "string" then - if not spec:find("/", 1, true) then - -- spec is a plugin name - if results then - table.insert(results, spec) - end - else - self:add({ spec }, results) - end + self:add({ spec }) elseif #spec > 1 or Util.is_list(spec) then ---@cast spec LazySpec[] for _, s in ipairs(spec) do - self:normalize(s, results) + self:normalize(s) end elseif spec[1] or spec.dir or spec.url then - ---@cast spec LazyPlugin - local plugin = self:add(spec, results) + ---@cast spec LazyPluginSpec + local plugin = self:add(spec) ---@diagnostic disable-next-line: cast-type-mismatch ---@cast plugin LazySpecImport if plugin and plugin.import then @@ -408,7 +130,6 @@ function Spec:normalize(spec, results) else self:error("Invalid plugin spec " .. vim.inspect(spec)) end - return results end ---@param spec LazySpecImport @@ -492,41 +213,6 @@ function Spec:import(spec) end end ----@param old LazyPlugin ----@param new LazyPlugin ----@return LazyPlugin -function Spec:merge(old, new) - new._.dep = old._.dep and new._.dep - - if new.url and old.url and new.url ~= old.url then - self:warn("Two plugins with the same name and different url:\n" .. vim.inspect({ old = old, new = new })) - end - - if new.dependencies and old.dependencies then - Util.extend(new.dependencies, old.dependencies) - end - - local new_dir = new._.dir or old._.dir or (new.name and (Config.options.root .. "/" .. new.name)) or nil - if new_dir ~= old.dir then - local msg = "Plugin `" .. new.name .. "` changed `dir`:\n- from: `" .. old.dir .. "`\n- to: `" .. new_dir .. "`" - if new._.rtp_loaded or old._.rtp_loaded then - msg = msg - .. "\n\nThis plugin was already partially loaded, so we did not change it's `dir`.\nPlease fix your config." - self:error(msg) - new_dir = old.dir - else - self:warn(msg) - end - end - new.dir = new_dir - new._.rtp_loaded = new._.rtp_loaded or old._.rtp_loaded - - new._.super = old - setmetatable(new, { __index = old }) - - return new -end - function M.update_state() ---@type string[] local cloning = {} @@ -631,6 +317,7 @@ function M.load() Config.spec = Spec.new() local specs = { + ---@diagnostic disable-next-line: param-type-mismatch vim.deepcopy(Config.options.spec), } specs[#specs + 1] = M.find_local_spec() @@ -655,10 +342,10 @@ function M.load() for name, plugin in pairs(existing) do if Config.plugins[name] then local dep = Config.plugins[name]._.dep - local super = Config.plugins[name]._.super + local frags = Config.plugins[name]._.frags Config.plugins[name]._ = plugin._ Config.plugins[name]._.dep = dep - Config.plugins[name]._.super = super + Config.plugins[name]._.frags = frags end end Util.track() @@ -725,8 +412,9 @@ function M._values(root, plugin, prop, is_list) if not plugin[prop] then return {} end + local super = getmetatable(plugin) ---@type table - local ret = plugin._.super and M._values(root, plugin._.super, prop, is_list) or {} + local ret = super and M._values(root, super.__index, prop, is_list) or {} local values = rawget(plugin, prop) if not values then @@ -742,6 +430,7 @@ function M._values(root, plugin, prop, is_list) else ---@type {path:string[], list:any[]}[] local lists = {} + ---@diagnostic disable-next-line: no-unknown for _, key in ipairs(plugin[prop .. "_extend"] or {}) do local path = vim.split(key, ".", { plain = true }) local r = Util.key_get(ret, path) diff --git a/lua/lazy/core/util.lua b/lua/lazy/core/util.lua index f72ab21..d4fa47c 100644 --- a/lua/lazy/core/util.lua +++ b/lua/lazy/core/util.lua @@ -93,7 +93,7 @@ function M.pretty_trace(opts) end ---@generic R ----@param fn fun():R +---@param fn fun():R? ---@param opts? string|{msg:string, on_error:fun(msg)} ---@return R function M.try(fn, opts) diff --git a/lua/lazy/health.lua b/lua/lazy/health.lua index 7b06f1d..6202de6 100644 --- a/lua/lazy/health.lua +++ b/lua/lazy/health.lua @@ -59,7 +59,6 @@ function M.check() else for _, plugin in pairs(spec.plugins) do M.check_valid(plugin) - M.check_override(plugin) end if #spec.notifs > 0 then error("Issues were reported when loading your specs:") @@ -88,23 +87,6 @@ function M.check_valid(plugin) end end ----@param plugin LazyPlugin -function M.check_override(plugin) - if not plugin._.super then - return - end - - local Handler = require("lazy.core.handler") - local skip = { "dependencies", "_", "opts", 1 } - vim.list_extend(skip, vim.tbl_values(Handler.types)) - - for key, value in pairs(plugin._.super) do - if not vim.tbl_contains(skip, key) and plugin[key] and plugin[key] ~= value then - warn("{" .. plugin.name .. "}: overriding <" .. key .. ">") - end - end -end - M.valid = { 1, "_", diff --git a/lua/lazy/types.lua b/lua/lazy/types.lua index 831327e..dabfa58 100644 --- a/lua/lazy/types.lua +++ b/lua/lazy/types.lua @@ -2,30 +2,26 @@ ---@alias LazyPluginKind "normal"|"clean"|"disabled" ---@class LazyPluginState ----@field fid number id of the plugin spec fragment ----@field fpid? number parent id of the plugin spec fragment ----@field fdeps? number[] children ids of the fragment ----@field loaded? {[string]:string}|{time:number} ----@field installed? boolean ----@field tasks? LazyTask[] ----@field working? boolean ----@field dirty? boolean ----@field updated? {from:string, to:string} ----@field is_local? boolean ----@field updates? {from:GitInfo, to:GitInfo} ----@field cloned? boolean ----@field outdated? boolean ----@field kind? LazyPluginKind ----@field dep? boolean True if this plugin is only in the spec as a dependency ----@field cond? boolean ----@field super? LazyPlugin ----@field module? string ----@field dir? string Explicit dir or dev set for this plugin ----@field rtp_loaded? boolean ----@field handlers? LazyPluginHandlers ---@field cache? table +---@field cloned? boolean +---@field cond? boolean +---@field dep? boolean True if this plugin is only in the spec as a dependency +---@field dir? string Explicit dir or dev set for this plugin +---@field dirty? boolean +---@field frags? number[] +---@field handlers? LazyPluginHandlers +---@field installed? boolean +---@field is_local? boolean +---@field kind? LazyPluginKind +---@field loaded? {[string]:string}|{time:number} +---@field outdated? boolean ---@field rocks? LazyRock[] ---@field rocks_installed? boolean +---@field rtp_loaded? boolean +---@field tasks? LazyTask[] +---@field updated? {from:string, to:string} +---@field updates? {from:GitInfo, to:GitInfo} +---@field working? boolean ---@alias PluginOpts table|fun(self:LazyPlugin, opts:table):table? @@ -66,6 +62,7 @@ ---@class LazyPlugin: LazyPluginBase,LazyPluginHandlers,LazyPluginHooks,LazyPluginRef ---@field dependencies? string[] +---@field specs? string|string[]|LazyPluginSpec[] ---@field _ LazyPluginState ---@class LazyPluginSpecHandlers @@ -77,6 +74,7 @@ ---@class LazyPluginSpec: LazyPluginBase,LazyPluginSpecHandlers,LazyPluginHooks,LazyPluginRef ---@field dependencies? string|string[]|LazyPluginSpec[] +---@field specs? string|string[]|LazyPluginSpec[] ---@alias LazySpec string|LazyPluginSpec|LazySpecImport|LazySpec[] @@ -85,3 +83,14 @@ ---@field name? string ---@field enabled? boolean|(fun():boolean) ---@field cond? boolean|(fun():boolean) + +---@class LazyFragment +---@field id number +---@field pid? number +---@field deps? number[] +---@field frags? number[] +---@field dep? boolean +---@field name string +---@field url? string +---@field dir? string +---@field spec LazyPlugin diff --git a/tests/core/plugin_spec.lua b/tests/core/plugin_spec.lua index 548b5f5..4a09bb9 100644 --- a/tests/core/plugin_spec.lua +++ b/tests/core/plugin_spec.lua @@ -6,6 +6,10 @@ local assert = require("luassert") Config.setup() +local function inspect(obj) + return vim.inspect(obj):gsub("%s+", " ") +end + ---@param plugins LazyPlugin[]|LazyPlugin local function clean(plugins) local p = plugins @@ -14,6 +18,7 @@ local function clean(plugins) plugin._.fid = nil plugin._.fpid = nil plugin._.fdeps = nil + plugin._.frags = nil if plugin._.dep == false then plugin._.dep = nil end @@ -28,7 +33,7 @@ describe("plugin spec url/name", function() { { "foo/bar" }, { [1] = "foo/bar", name = "bar", url = "https://github.com/foo/bar.git" } }, { { "https://foo.bar" }, { [1] = "https://foo.bar", name = "foo.bar", url = "https://foo.bar" } }, { { "foo/bar", name = "foobar" }, { [1] = "foo/bar", name = "foobar", url = "https://github.com/foo/bar.git" } }, - { { "foo/bar", url = "123" }, { [1] = "foo/bar", name = "123", url = "123" } }, + { { "foo/bar", url = "123" }, { [1] = "foo/bar", name = "bar", url = "123" } }, { { url = "https://foobar" }, { name = "foobar", url = "https://foobar" } }, { { { url = "https://foo", name = "foobar" }, { url = "https://foo" } }, @@ -45,18 +50,22 @@ describe("plugin spec url/name", function() for _, test in ipairs(tests) do test[2]._ = {} - it("parses " .. vim.inspect(test[1]):gsub("%s+", " "), function() + it("parses " .. inspect(test[1]), function() if not test[2].dir then test[2].dir = Config.options.root .. "/" .. test[2].name end local spec = Plugin.Spec.new(test[1]) - local plugins = vim.tbl_values(spec.plugins) - plugins[1]._ = {} + local all = vim.deepcopy(spec.plugins) + local plugins = vim.tbl_values(all) + plugins = vim.tbl_map(function(plugin) + plugin._ = {} + return plugin + end, plugins) local notifs = vim.tbl_filter(function(notif) return notif.level > 3 end, spec.notifs) assert(#notifs == 0, vim.inspect(spec.notifs)) - assert.equal(1, #plugins) + assert.equal(1, #plugins, vim.inspect(all)) plugins[1]._.super = nil assert.same(test[2], plugins[1]) end) @@ -90,7 +99,40 @@ describe("plugin spec dir", function() for _, test in ipairs(tests) do local dir = vim.fn.expand(test[1]) local input = vim.list_slice(test, 2) - it("parses dir " .. vim.inspect(input):gsub("%s+", " "), function() + it("parses dir " .. inspect(input), function() + local spec = Plugin.Spec.new(input) + local plugins = vim.tbl_values(spec.plugins) + assert(spec:report() == 0) + assert.equal(1, #plugins) + assert.same(dir, plugins[1].dir) + end) + end +end) + +describe("plugin dev", function() + local tests = { + { + { "lewis6991/gitsigns.nvim", opts = {}, dev = true }, + { "lewis6991/gitsigns.nvim" }, + }, + { + { "lewis6991/gitsigns.nvim", opts = {}, dev = true }, + { "gitsigns.nvim" }, + }, + { + { "lewis6991/gitsigns.nvim", opts = {} }, + { "lewis6991/gitsigns.nvim", dev = true }, + }, + { + { "lewis6991/gitsigns.nvim", opts = {} }, + { "gitsigns.nvim", dev = true }, + }, + } + + for _, test in ipairs(tests) do + local dir = vim.fn.expand("~/projects/gitsigns.nvim") + local input = test + it("parses dir " .. inspect(input), function() local spec = Plugin.Spec.new(input) local plugins = vim.tbl_values(spec.plugins) assert(spec:report() == 0) @@ -126,7 +168,7 @@ describe("plugin spec opt", function() for _, plugin in pairs(spec.plugins) do plugin.dir = nil end - assert.same(clean(spec.plugins), { + assert.same({ bar = { "foo/bar", _ = {}, @@ -150,7 +192,7 @@ describe("plugin spec opt", function() name = "dep2", url = "https://github.com/foo/dep2.git", }, - }) + }, clean(spec.plugins)) end end) @@ -369,45 +411,45 @@ describe("plugin spec opt", function() end) describe("plugin opts", function() - it("correctly parses opts", function() - ---@type {spec:LazySpec, opts:table}[] - local tests = { - { - spec = { { "foo/foo", opts = { a = 1, b = 1 } }, { "foo/foo", opts = { a = 2 } } }, - opts = { a = 2, b = 1 }, - }, - { - spec = { { "foo/foo", config = { a = 1, b = 1 } }, { "foo/foo", opts = { a = 2 } } }, - opts = { a = 2, b = 1 }, - }, - { - spec = { { "foo/foo", opts = { a = 1, b = 1 } }, { "foo/foo", config = { a = 2 } } }, - opts = { a = 2, b = 1 }, - }, - { - spec = { { "foo/foo", config = { a = 1, b = 1 } }, { "foo/foo", config = { a = 2 } } }, - opts = { a = 2, b = 1 }, - }, - { - spec = { { "foo/foo", config = { a = 1, b = 1 } }, { "foo/foo", config = { a = vim.NIL } } }, - opts = { b = 1 }, - }, - { - spec = { { "foo/foo", config = { a = 1, b = 1 } }, { "foo/foo" } }, - opts = { a = 1, b = 1 }, - }, - { - spec = { { "foo/foo" }, { "foo/foo" } }, - opts = {}, - }, - } + ---@type {spec:LazySpec, opts:table}[] + local tests = { + { + spec = { { "foo/foo", opts = { a = 1, b = 1 } }, { "foo/foo", opts = { a = 2 } } }, + opts = { a = 2, b = 1 }, + }, + { + spec = { { "foo/foo", config = { a = 1, b = 1 } }, { "foo/foo", opts = { a = 2 } } }, + opts = { a = 2, b = 1 }, + }, + { + spec = { { "foo/foo", opts = { a = 1, b = 1 } }, { "foo/foo", config = { a = 2 } } }, + opts = { a = 2, b = 1 }, + }, + { + spec = { { "foo/foo", config = { a = 1, b = 1 } }, { "foo/foo", config = { a = 2 } } }, + opts = { a = 2, b = 1 }, + }, + { + spec = { { "foo/foo", config = { a = 1, b = 1 } }, { "foo/foo", config = { a = vim.NIL } } }, + opts = { b = 1 }, + }, + { + spec = { { "foo/foo", config = { a = 1, b = 1 } }, { "foo/foo" } }, + opts = { a = 1, b = 1 }, + }, + { + spec = { { "foo/foo" }, { "foo/foo" } }, + opts = {}, + }, + } - for _, test in ipairs(tests) do + for _, test in ipairs(tests) do + it("correctly parses opts for " .. inspect(test.spec), function() local spec = Plugin.Spec.new(test.spec) assert(spec.plugins.foo) assert.same(test.opts, Plugin.values(spec.plugins.foo, "opts")) - end - end) + end) + end end) describe("plugin spec", function() diff --git a/tests/handlers/keys_spec.lua b/tests/handlers/keys_spec.lua index 6254db8..d6a9df4 100644 --- a/tests/handlers/keys_spec.lua +++ b/tests/handlers/keys_spec.lua @@ -1,3 +1,4 @@ +---@module 'luassert' local Keys = require("lazy.core.handler.keys") describe("keys", function() From c1912e23481ba72a8d8f7a5c736f5e2547e6853e Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 22 Jun 2024 22:18:47 +0200 Subject: [PATCH 050/342] feat(pkg): import package specs in the scope of the plugin --- lua/lazy/pkg/init.lua | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lua/lazy/pkg/init.lua b/lua/lazy/pkg/init.lua index f09afbc..9858ad7 100644 --- a/lua/lazy/pkg/init.lua +++ b/lua/lazy/pkg/init.lua @@ -86,7 +86,11 @@ end function M.get_spec(plugin) local pkg = M.get(plugin) local spec = pkg and pkg.spec - return spec and type(spec) == "table" and vim.deepcopy(spec) or spec + if not spec then + return + end + spec = type(spec) == "table" and vim.deepcopy(spec) or spec + return { plugin.name, specs = spec } end return M From d2bea9eefd1d99d3bfeebd0c848fa62488ef0461 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 22 Jun 2024 22:30:20 +0200 Subject: [PATCH 051/342] docs: added doc comments --- lua/lazy/core/fragments.lua | 7 +++++++ lua/lazy/core/meta.lua | 22 +++++++++++++++++++++- lua/lazy/core/plugin.lua | 2 +- 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/lua/lazy/core/fragments.lua b/lua/lazy/core/fragments.lua index 7096f55..1ca018c 100644 --- a/lua/lazy/core/fragments.lua +++ b/lua/lazy/core/fragments.lua @@ -9,6 +9,9 @@ local function next_id() return M._fid end +--- This class is used to manage the fragments of a plugin spec. +--- It keeps track of the fragments and their relations to other fragments. +--- A fragment can be a dependency (dependencies) or a child (specs) of another fragment. ---@class LazyFragments ---@field fragments table ---@field frag_stack number[] @@ -34,6 +37,8 @@ function F:get(id) return self.fragments[id] end +--- Remove a fragment and all its children. +--- This will also remove the fragment from its parent's children list. ---@param id number function F:del(id) -- del fragment @@ -73,6 +78,8 @@ function F:del(id) self.fragments[id] = nil end +--- Add a fragment to the fragments list. +--- This also resolves its name, url, dir, dependencies and child specs. ---@param plugin LazyPluginSpec function F:add(plugin) local id = next_id() diff --git a/lua/lazy/core/meta.lua b/lua/lazy/core/meta.lua index 9c40238..35006d7 100644 --- a/lua/lazy/core/meta.lua +++ b/lua/lazy/core/meta.lua @@ -1,6 +1,8 @@ local Config = require("lazy.core.config") local Util = require("lazy.core.util") +--- This class is used to manage the plugins. +--- A plugin is a collection of fragments that are related to each other. ---@class LazyMeta ---@field plugins table ---@field str_to_meta table @@ -23,6 +25,7 @@ function M.new(spec) return self end +--- Remove a plugin and all its fragments. ---@param name string function M:del(name) local meta = self.plugins[name] @@ -35,6 +38,9 @@ function M:del(name) self.plugins[name] = nil end +--- Add a fragment to a plugin. +--- This will create a new plugin if it does not exist. +--- It also keeps track of renames. ---@param plugin LazyPluginSpec function M:add(plugin) local fragment = self.fragments:add(plugin) @@ -73,6 +79,8 @@ function M:add(plugin) self.dirty[meta.name] = true end +--- Rebuild all plugins based on dirty fragments, +--- or dirty plugins. Will remove plugins that no longer have fragments. function M:rebuild() for fid in pairs(self.fragments.dirty) do local meta = self.frag_to_meta[fid] @@ -101,6 +109,9 @@ function M:rebuild() end end +--- Rebuild a single plugin. +--- This will resolve the plugin based on its fragments using metatables. +--- This also resolves dependencies, dep, optional, dir, dev, and url. ---@param name string function M:_rebuild(name) local plugin = self.plugins[name] @@ -161,18 +172,23 @@ function M:_rebuild(name) plugin.dir = plugin.dir or Config.options.root .. "/" .. plugin.name end + -- dependencies if #plugin.dependencies == 0 and not super.dependencies then plugin.dependencies = nil end + + -- optional if not plugin.optional and not super.optional then plugin.optional = nil end + setmetatable(plugin, { __index = super }) self.dirty[plugin.name] = nil return plugin end +--- Disable a plugin. ---@param plugin LazyPlugin function M:disable(plugin) plugin._.kind = "disabled" @@ -180,6 +196,7 @@ function M:disable(plugin) self.spec.disabled[plugin.name] = plugin end +--- Check if a plugin should be disabled, but ignore uninstalling it. function M:fix_cond() for _, plugin in pairs(self.plugins) do local cond = plugin.cond @@ -203,6 +220,7 @@ function M:fix_cond() end end +--- Removes plugins for which all its fragments are optional. function M:fix_optional() if self.spec.optional then return 0 @@ -218,6 +236,7 @@ function M:fix_optional() return changes end +--- Removes plugins that are disabled. function M:fix_disabled() local changes = 0 for _, plugin in pairs(self.plugins) do @@ -230,7 +249,8 @@ function M:fix_disabled() return changes end -function M:fix() +--- Resolve all plugins, based on cond, enabled and optional. +function M:resolve() Util.track("resolve plugins") self:rebuild() diff --git a/lua/lazy/core/plugin.lua b/lua/lazy/core/plugin.lua index 6aec6f1..355d3d5 100644 --- a/lua/lazy/core/plugin.lua +++ b/lua/lazy/core/plugin.lua @@ -50,7 +50,7 @@ end function Spec:parse(spec) self:normalize(spec) - self.meta:fix() + self.meta:resolve() end -- PERF: optimized code to get package name without using lua patterns From 05e31ad0593063823f99d4d8145bca7893b37bed Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sun, 23 Jun 2024 10:28:51 +0200 Subject: [PATCH 052/342] docs: added comment on package source order --- lua/lazy/core/config.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index db79250..46fbfd5 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -35,6 +35,7 @@ M.defaults = { enabled = true, cache = vim.fn.stdpath("state") .. "/lazy/pkg-cache.lua", versions = true, -- Honor versions in pkg sources + -- the first package source that is found for a plugin will be used. sources = { "lazy", "rockspec", From ee2ca39f672a2d6f4cbb683b525e6b3d91f3fc0c Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sun, 23 Jun 2024 17:48:10 +0200 Subject: [PATCH 053/342] feat(meta): check for dir changes for plugins already added to the rtp --- lua/lazy/core/meta.lua | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/lua/lazy/core/meta.lua b/lua/lazy/core/meta.lua index 35006d7..0deeb89 100644 --- a/lua/lazy/core/meta.lua +++ b/lua/lazy/core/meta.lua @@ -66,6 +66,17 @@ function M:add(plugin) table.insert(meta._.frags, fragment.id) + if meta._ and meta._.rtp_loaded then + local old_dir = meta.dir + self:_rebuild(meta.name) + local new_dir = meta.dir + if old_dir ~= new_dir then + local msg = "Plugin `" .. meta.name .. "` changed `dir`:\n- from: `" .. old_dir .. "`\n- to: `" .. new_dir .. "`" + msg = msg .. "\n\nThis plugin was already partially loaded, so things may break.\nPlease fix your config." + self.spec:error(msg) + end + end + if plugin.name then -- handle renames if meta.name ~= plugin.name then From 4326d4b487d4facc19b375ca30cd633cf56d88ed Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sun, 23 Jun 2024 17:49:19 +0200 Subject: [PATCH 054/342] fix(pkg): correctly pre-load package specs and remove them when needed during resolve --- lua/lazy/core/meta.lua | 42 +++++++++++++++++++++++++++++++++++++++ lua/lazy/core/plugin.lua | 33 ++++++------------------------ lua/lazy/pkg/init.lua | 21 ++++++++++++++++++++ lua/lazy/pkg/rockspec.lua | 25 +++++++++++++---------- lua/lazy/types.lua | 1 + selene.toml | 3 +++ 6 files changed, 87 insertions(+), 38 deletions(-) diff --git a/lua/lazy/core/meta.lua b/lua/lazy/core/meta.lua index 0deeb89..533ec27 100644 --- a/lua/lazy/core/meta.lua +++ b/lua/lazy/core/meta.lua @@ -1,4 +1,5 @@ local Config = require("lazy.core.config") +local Pkg = require("lazy.pkg") local Util = require("lazy.core.util") --- This class is used to manage the plugins. @@ -10,6 +11,7 @@ local Util = require("lazy.core.util") ---@field dirty table ---@field spec LazySpecLoader ---@field fragments LazyFragments +---@field pkgs table local M = {} ---@param spec LazySpecLoader @@ -22,9 +24,30 @@ function M.new(spec) self.frag_to_meta = {} self.str_to_meta = {} self.dirty = {} + self.pkgs = {} return self end +-- import package specs +function M:load_pkgs() + if not Config.options.pkg.enabled then + return + end + local specs = Pkg.spec() + for dir, spec in pairs(specs) do + local meta, fragment = self:add(spec) + if meta and fragment then + -- tag all package fragments as optional + for _, fid in ipairs(meta._.frags) do + local frag = self.fragments:get(fid) + frag.spec.optional = true + end + -- keep track of the top-level package fragment + self.pkgs[dir] = fragment.id + end + end +end + --- Remove a plugin and all its fragments. ---@param name string function M:del(name) @@ -88,6 +111,7 @@ function M:add(plugin) self.plugins[meta.name] = meta self.frag_to_meta[fragment.id] = meta self.dirty[meta.name] = true + return meta, fragment end --- Rebuild all plugins based on dirty fragments, @@ -101,6 +125,7 @@ function M:rebuild() self.dirty[meta.name] = true else -- fragment was deleted, so remove it from plugin + self.frag_to_meta[fid] = nil ---@param f number meta._.frags = vim.tbl_filter(function(f) return f ~= fid @@ -260,11 +285,28 @@ function M:fix_disabled() return changes end +--- Removes package fragments for plugins that no longer use the same directory. +function M:fix_pkgs() + for dir, fid in pairs(self.pkgs) do + local plugin = self.frag_to_meta[fid] + plugin = plugin and self.plugins[plugin.name] + if plugin then + -- check if plugin is still in the same directory + if plugin.dir ~= dir then + self.fragments:del(fid) + end + end + end + self:rebuild() +end + --- Resolve all plugins, based on cond, enabled and optional. function M:resolve() Util.track("resolve plugins") self:rebuild() + self:fix_pkgs() + self:fix_cond() -- selene: allow(empty_loop) diff --git a/lua/lazy/core/plugin.lua b/lua/lazy/core/plugin.lua index 355d3d5..713e54c 100644 --- a/lua/lazy/core/plugin.lua +++ b/lua/lazy/core/plugin.lua @@ -1,6 +1,5 @@ local Config = require("lazy.core.config") local Meta = require("lazy.core.meta") -local Pkg = require("lazy.pkg") local Util = require("lazy.core.util") ---@class LazyCorePlugin @@ -16,7 +15,6 @@ M.loading = false ---@field notifs {msg:string, level:number, file?:string}[] ---@field importing? string ---@field optional? boolean ----@field pkgs table local Spec = {} M.Spec = Spec M.LOCAL_SPEC = ".lazy.lua" @@ -30,8 +28,8 @@ function Spec.new(spec, opts) self.modules = {} self.notifs = {} self.ignore_installed = {} - self.pkgs = {} self.optional = opts and opts.optional + self.meta:load_pkgs() if spec then self:parse(spec) end @@ -62,25 +60,6 @@ function Spec.get_name(pkg) return slash and name:sub(#name - slash + 2) or pkg:gsub("%W+", "_") end ----@param plugin LazyPluginSpec -function Spec:add(plugin) - self.meta:add(plugin) - - ---@diagnostic disable-next-line: cast-type-mismatch - ---@cast plugin LazyPlugin - - -- import the plugin's spec - if Config.options.pkg.enabled and plugin.dir and not self.pkgs[plugin.dir] then - self.pkgs[plugin.dir] = true - local pkg = Pkg.get_spec(plugin) - if pkg then - self:normalize(pkg) - end - end - - return plugin -end - function Spec:error(msg) self:log(msg, vim.log.levels.ERROR) end @@ -110,7 +89,7 @@ end ---@param spec LazySpec|LazySpecImport function Spec:normalize(spec) if type(spec) == "string" then - self:add({ spec }) + self.meta:add({ spec }) elseif #spec > 1 or Util.is_list(spec) then ---@cast spec LazySpec[] for _, s in ipairs(spec) do @@ -118,11 +97,11 @@ function Spec:normalize(spec) end elseif spec[1] or spec.dir or spec.url then ---@cast spec LazyPluginSpec - local plugin = self:add(spec) + self.meta:add(spec) ---@diagnostic disable-next-line: cast-type-mismatch - ---@cast plugin LazySpecImport - if plugin and plugin.import then - self:import(plugin) + ---@cast spec LazySpecImport + if spec and spec.import then + self:import(spec) end elseif spec.import then ---@cast spec LazySpecImport diff --git a/lua/lazy/pkg/init.lua b/lua/lazy/pkg/init.lua index 9858ad7..bee9b42 100644 --- a/lua/lazy/pkg/init.lua +++ b/lua/lazy/pkg/init.lua @@ -7,6 +7,7 @@ local M = {} ---@class LazyPkg ---@field source string +---@field name string ---@field file string ---@field spec? LazySpec ---@field chunk? string|fun():LazySpec @@ -30,6 +31,7 @@ function M.update() for _, source in ipairs(sources) do local spec = source.get(plugin) if spec then + spec.name = plugin.name if type(spec.chunk) == "function" then spec.chunk = string.dump(spec.chunk) end @@ -81,6 +83,25 @@ function M.get(plugin) return ret end +function M.spec() + if not M.cache then + _load() + end + ---@type table + local ret = {} + + for dir in pairs(M.cache) do + local pkg = M.get({ dir = dir }) + local spec = pkg and pkg.spec + if pkg and spec then + spec = type(spec) == "table" and vim.deepcopy(spec) or spec + ret[dir] = { pkg.name, specs = spec } + end + end + + return ret +end + ---@param plugin LazyPlugin ---@return LazySpec? function M.get_spec(plugin) diff --git a/lua/lazy/pkg/rockspec.lua b/lua/lazy/pkg/rockspec.lua index 7a0c752..5732fbf 100644 --- a/lua/lazy/pkg/rockspec.lua +++ b/lua/lazy/pkg/rockspec.lua @@ -29,24 +29,27 @@ function M.get(plugin) end ---@type RockSpec? + ---@diagnostic disable-next-line: missing-fields local rockspec = {} - local ret, err = loadfile(rockspec_file, "t", rockspec) - if not ret then + local load, err = loadfile(rockspec_file, "t", rockspec) + if not load then error(err) end - ret() - return rockspec - and rockspec.package + load() + + ---@param dep string + local rocks = vim.tbl_filter(function(dep) + local name = dep:gsub("%s.*", "") + return not vim.tbl_contains(M.skip, name) + end, rockspec and rockspec.dependencies or {}) + + return #rocks > 0 and { source = "rockspec", file = rockspec_file, spec = { - dir = plugin.dir, - url = plugin.url, - rocks = vim.tbl_filter(function(dep) - local name = dep:gsub("%s.*", "") - return not vim.tbl_contains(M.skip, name) - end, rockspec.dependencies), + plugin.name, + rocks = rocks, }, } or nil diff --git a/lua/lazy/types.lua b/lua/lazy/types.lua index dabfa58..cbff124 100644 --- a/lua/lazy/types.lua +++ b/lua/lazy/types.lua @@ -86,6 +86,7 @@ ---@class LazyFragment ---@field id number +---@field pkg? boolean ---@field pid? number ---@field deps? number[] ---@field frags? number[] diff --git a/selene.toml b/selene.toml index 7312a91..5867a2a 100644 --- a/selene.toml +++ b/selene.toml @@ -1 +1,4 @@ std="vim" + +[lints] +mixed_table="allow" From 183f59e2e85dea0c38ed7d16c7c7e543c0b739c7 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sun, 23 Jun 2024 21:07:44 +0200 Subject: [PATCH 055/342] feat!: new docs for v11.0 --- .github/workflows/ci.yml | 21 - README.md | 845 ++--------------------------- doc/.keep | 0 doc/lazy.nvim.txt | 1101 ++++++++++++++++++++++---------------- lua/lazy/core/config.lua | 7 +- 5 files changed, 674 insertions(+), 1300 deletions(-) create mode 100644 doc/.keep diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c7d3156..05b9111 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,31 +26,10 @@ jobs: nvim --version [ ! -d tests ] && exit 0 nvim --headless -u tests/init.lua -c "PlenaryBustedDirectory tests/ {minimal_init = 'tests/init.lua', sequential = true}" - docs: - runs-on: ubuntu-latest - needs: tests - if: ${{ github.ref == 'refs/heads/main' }} - steps: - - uses: actions/checkout@v4 - - name: panvimdoc - uses: kdheepak/panvimdoc@main - with: - vimdoc: lazy.nvim - version: "Neovim >= 0.8.0" - demojify: true - treesitter: true - - name: Push changes - uses: stefanzweifel/git-auto-commit-action@v5 - with: - commit_message: "chore(build): auto-generate vimdoc" - commit_user_name: "github-actions[bot]" - commit_user_email: "github-actions[bot]@users.noreply.github.com" - commit_author: "github-actions[bot] " release: name: release if: ${{ github.ref == 'refs/heads/main' }} needs: - - docs - tests runs-on: ubuntu-latest steps: diff --git a/README.md b/README.md index 9bde4f9..a950b94 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,36 @@ -# 💤 lazy.nvim +

+ Install + · + Configure + · + Docs +

+ + + + **lazy.nvim** is a modern plugin manager for Neovim. @@ -30,813 +62,6 @@ - Git >= **2.19.0** (for partial clones support) - a [Nerd Font](https://www.nerdfonts.com/) **_(optional)_** -## 📦 Installation +## 🚀 Getting Started -You can add the following Lua code to your `init.lua` to bootstrap **lazy.nvim**: - - - -```lua -local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" -if not (vim.uv or vim.loop).fs_stat(lazypath) then - vim.fn.system({ - "git", - "clone", - "--filter=blob:none", - "https://github.com/folke/lazy.nvim.git", - "--branch=stable", -- latest stable release - lazypath, - }) -end -vim.opt.rtp:prepend(lazypath) -``` - - - -Next step is to add **lazy.nvim** below the code added in the prior step in `init.lua`: - -```lua -require("lazy").setup(plugins, opts) -``` - -- **plugins**: this should be a `table` or a `string` - - `table`: a list with your [Plugin Spec](#-plugin-spec) - - `string`: a Lua module name that contains your [Plugin Spec](#-plugin-spec). See [Structuring Your Plugins](#-structuring-your-plugins) -- **opts**: see [Configuration](#%EF%B8%8F-configuration) **_(optional)_** - -```lua --- Example using a list of specs with the default options -vim.g.mapleader = " " -- Make sure to set `mapleader` before lazy so your mappings are correct -vim.g.maplocalleader = "\\" -- Same for `maplocalleader` - -require("lazy").setup({ - "folke/which-key.nvim", - { "folke/neoconf.nvim", cmd = "Neoconf" }, - "folke/neodev.nvim", -}) -``` - -ℹ️ It is recommended to run `:checkhealth lazy` after installation. - -## 🔌 Plugin Spec - -| Property | Type | Description | -| ---------------- | ----------------------------------------------------------------------------------------------------------------------------------- |------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| **[1]** | `string?` | Short plugin url. Will be expanded using `config.git.url_format` | -| **dir** | `string?` | A directory pointing to a local plugin | -| **url** | `string?` | A custom git url where the plugin is hosted | -| **name** | `string?` | A custom name for the plugin used for the local plugin directory and as the display name | -| **dev** | `boolean?` | When `true`, a local plugin directory will be used instead. See `config.dev` | -| **lazy** | `boolean?` | When `true`, the plugin will only be loaded when needed. Lazy-loaded plugins are automatically loaded when their Lua modules are `required`, or when one of the lazy-loading handlers triggers | -| **enabled** | `boolean?` or `fun():boolean` | When `false`, or if the `function` returns false, then this plugin will not be included in the spec | -| **cond** | `boolean?` or `fun(LazyPlugin):boolean` | When `false`, or if the `function` returns false, then this plugin will not be loaded. Useful to disable some plugins in vscode, or firenvim for example. | -| **dependencies** | `LazySpec[]` | A list of plugin names or plugin specs that should be loaded when the plugin loads. Dependencies are always lazy-loaded unless specified otherwise. When specifying a name, make sure the plugin spec has been defined somewhere else. | -| **init** | `fun(LazyPlugin)` | `init` functions are always executed during startup | -| **opts** | `table` or `fun(LazyPlugin, opts:table)` | `opts` should be a table (will be merged with parent specs), return a table (replaces parent specs) or should change a table. The table will be passed to the `Plugin.config()` function. Setting this value will imply `Plugin.config()` | -| **config** | `fun(LazyPlugin, opts:table)` or `true` | `config` is executed when the plugin loads. The default implementation will automatically run `require(MAIN).setup(opts)` if `opts` or `config = true` is set. Lazy uses several heuristics to determine the plugin's `MAIN` module automatically based on the plugin's **name**. See also `opts`. To use the default implementation without `opts` set `config` to `true`. | -| **main** | `string?` | You can specify the `main` module to use for `config()` and `opts()`, in case it can not be determined automatically. See `config()` | -| **build** | `fun(LazyPlugin)` or `string` or a list of build commands | `build` is executed when a plugin is installed or updated. Before running `build`, a plugin is first loaded. If it's a string it will be run as a shell command. When prefixed with `:` it is a Neovim command. You can also specify a list to executed multiple build commands. Some plugins provide their own `build.lua` which is automatically used by lazy. So no need to specify a build step for those plugins. | -| **branch** | `string?` | Branch of the repository | -| **tag** | `string?` | Tag of the repository | -| **commit** | `string?` | Commit of the repository | -| **version** | `string?` or `false` to override the default | Version to use from the repository. Full [Semver](https://devhints.io/semver) ranges are supported | -| **pin** | `boolean?` | When `true`, this plugin will not be included in updates | -| **submodules** | `boolean?` | When false, git submodules will not be fetched. Defaults to `true` | -| **event** | `string?` or `string[]` or `fun(self:LazyPlugin, event:string[]):string[]` or `{event:string[]\|string, pattern?:string[]\|string}` | Lazy-load on event. Events can be specified as `BufEnter` or with a pattern like `BufEnter *.lua` | -| **cmd** | `string?` or `string[]` or `fun(self:LazyPlugin, cmd:string[]):string[]` | Lazy-load on command | -| **ft** | `string?` or `string[]` or `fun(self:LazyPlugin, ft:string[]):string[]` | Lazy-load on filetype | -| **keys** | `string?` or `string[]` or `LazyKeysSpec[]` or `fun(self:LazyPlugin, keys:string[]):(string \| LazyKeysSpec)[]` | Lazy-load on key mapping | -| **module** | `false?` | Do not automatically load this Lua module when it's required somewhere | -| **priority** | `number?` | Only useful for **start** plugins (`lazy=false`) to force loading certain plugins first. Default priority is `50`. It's recommended to set this to a high number for colorschemes. | -| **optional** | `boolean?` | When a spec is tagged optional, it will only be included in the final spec, when the same plugin has been specified at least once somewhere else without `optional`. This is mainly useful for Neovim distros, to allow setting options on plugins that may/may not be part of the user's plugins | - -### Lazy Loading - -**lazy.nvim** automagically lazy-loads Lua modules, so it is not needed to -specify `module=...` everywhere in your plugin specification. This means that if -you have a plugin `A` that is lazy-loaded and a plugin `B` that requires a -module of plugin `A`, then plugin `A` will be loaded on demand as expected. - -If you don't want this behavior for a certain plugin, you can specify that with `module=false`. -You can then manually load the plugin with `:Lazy load foobar.nvim`. - -You can configure **lazy.nvim** to lazy-load all plugins by default with `config.defaults.lazy = true`. - -Additionally, you can also lazy-load on **events**, **commands**, -**file types** and **key mappings**. - -Plugins will be lazy-loaded when one of the following is `true`: - -- The plugin only exists as a dependency in your spec -- It has an `event`, `cmd`, `ft` or `keys` key -- `config.defaults.lazy == true` - -#### 🌈 Colorschemes - -Colorscheme plugins can be configured with `lazy=true`. The plugin will automagically load -when doing `colorscheme foobar`. - -> **NOTE:** since **start** plugins can possibly change existing highlight groups, -> it's important to make sure that your main **colorscheme** is loaded first. -> To ensure this you can use the `priority=1000` field. **_(see the examples)_** - -#### ⌨️ Lazy Key Mappings - -The `keys` property can be a `string` or `string[]` for simple normal-mode mappings, or it -can be a `LazyKeysSpec` table with the following key-value pairs: - -- **[1]**: (`string`) lhs **_(required)_** -- **[2]**: (`string|fun()`) rhs **_(optional)_** -- **mode**: (`string|string[]`) mode **_(optional, defaults to `"n"`)_** -- **ft**: (`string|string[]`) `filetype` for buffer-local keymaps **_(optional)_** -- any other option valid for `vim.keymap.set` - -Key mappings will load the plugin the first time they get executed. - -When `[2]` is `nil`, then the real mapping has to be created by the `config()` function. - -```lua --- Example for neo-tree.nvim -{ - "nvim-neo-tree/neo-tree.nvim", - keys = { - { "ft", "Neotree toggle", desc = "NeoTree" }, - }, - config = function() - require("neo-tree").setup() - end, -} -``` - -### Versioning - -If you want to install a specific revision of a plugin, you can use `commit`, -`tag`, `branch`, `version`. - -The `version` property supports [Semver](https://semver.org/) ranges. - -
-Click to see some examples - -- `*`: latest stable version (this excludes pre-release versions) -- `1.2.x`: any version that starts with `1.2`, such as `1.2.0`, `1.2.3`, etc. -- `^1.2.3`: any version that is compatible with `1.2.3`, such as `1.3.0`, `1.4.5`, etc., but not `2.0.0`. -- `~1.2.3`: any version that is compatible with `1.2.3`, such as `1.2.4`, `1.2.5`, but not `1.3.0`. -- `>1.2.3`: any version that is greater than `1.2.3`, such as `1.3.0`, `1.4.5`, etc. -- `>=1.2.3`: any version that is greater than or equal to `1.2.3`, such as `1.2.3`, `1.3.0`, `1.4.5`, etc. -- `<1.2.3`: any version that is less than `1.2.3`, such as `1.1.0`, `1.0.5`, etc. -- `<=1.2.3`: any version that is less than or equal to `1.2.3`, such as `1.2.3`, `1.1.0`, `1.0.5`, etc - -
- -You can set `config.defaults.version = "*"` to install the latest stable -version of plugins that support Semver. - -### Examples - - - -```lua -return { - -- the colorscheme should be available when starting Neovim - { - "folke/tokyonight.nvim", - lazy = false, -- make sure we load this during startup if it is your main colorscheme - priority = 1000, -- make sure to load this before all the other start plugins - config = function() - -- load the colorscheme here - vim.cmd([[colorscheme tokyonight]]) - end, - }, - - -- I have a separate config.mappings file where I require which-key. - -- With lazy the plugin will be automatically loaded when it is required somewhere - { "folke/which-key.nvim", lazy = true }, - - { - "nvim-neorg/neorg", - -- lazy-load on filetype - ft = "norg", - -- options for neorg. This will automatically call `require("neorg").setup(opts)` - opts = { - load = { - ["core.defaults"] = {}, - }, - }, - }, - - { - "dstein64/vim-startuptime", - -- lazy-load on a command - cmd = "StartupTime", - -- init is called during startup. Configuration for vim plugins typically should be set in an init function - init = function() - vim.g.startuptime_tries = 10 - end, - }, - - { - "hrsh7th/nvim-cmp", - -- load cmp on InsertEnter - event = "InsertEnter", - -- these dependencies will only be loaded when cmp loads - -- dependencies are always lazy-loaded unless specified otherwise - dependencies = { - "hrsh7th/cmp-nvim-lsp", - "hrsh7th/cmp-buffer", - }, - config = function() - -- ... - end, - }, - - -- if some code requires a module from an unloaded plugin, it will be automatically loaded. - -- So for api plugins like devicons, we can always set lazy=true - { "nvim-tree/nvim-web-devicons", lazy = true }, - - -- you can use the VeryLazy event for things that can - -- load later and are not important for the initial UI - { "stevearc/dressing.nvim", event = "VeryLazy" }, - - { - "Wansmer/treesj", - keys = { - { "J", "TSJToggle", desc = "Join Toggle" }, - }, - opts = { use_default_keymaps = false, max_join_length = 150 }, - }, - - { - "monaqa/dial.nvim", - -- lazy-load on keys - -- mode is `n` by default. For more advanced options, check the section on key mappings - keys = { "", { "", mode = "n" } }, - }, - - -- local plugins need to be explicitly configured with dir - { dir = "~/projects/secret.nvim" }, - - -- you can use a custom url to fetch a plugin - { url = "git@github.com:folke/noice.nvim.git" }, - - -- local plugins can also be configured with the dev option. - -- This will use {config.dev.path}/noice.nvim/ instead of fetching it from GitHub - -- With the dev option, you can easily switch between the local and installed version of a plugin - { "folke/noice.nvim", dev = true }, -} -``` - - - -## ⚙️ Configuration - -**lazy.nvim** comes with the following defaults: - - - -```lua -{ - root = vim.fn.stdpath("data") .. "/lazy", -- directory where plugins will be installed - defaults = { - lazy = false, -- should plugins be lazy-loaded? - version = nil, - -- default `cond` you can use to globally disable a lot of plugins - -- when running inside vscode for example - cond = nil, ---@type boolean|fun(self:LazyPlugin):boolean|nil - -- version = "*", -- enable this to try installing the latest stable versions of plugins - }, - -- leave nil when passing the spec as the first argument to setup() - spec = nil, ---@type LazySpec - local_spec = true, -- load project specific .lazy.lua spec files. They will be added at the end of the spec. - lockfile = vim.fn.stdpath("config") .. "/lazy-lock.json", -- lockfile generated after running update. - ---@type number? limit the maximum amount of concurrent tasks - concurrency = jit.os:find("Windows") and (vim.uv.available_parallelism() * 2) or nil, - git = { - -- defaults for the `Lazy log` command - -- log = { "--since=3 days ago" }, -- show commits from the last 3 days - log = { "-8" }, -- show the last 8 commits - timeout = 120, -- kill processes that take more than 2 minutes - url_format = "https://github.com/%s.git", - -- lazy.nvim requires git >=2.19.0. If you really want to use lazy with an older version, - -- then set the below to false. This should work, but is NOT supported and will - -- increase downloads a lot. - filter = true, - }, - dev = { - ---@type string | fun(plugin: LazyPlugin): string directory where you store your local plugin projects - path = "~/projects", - ---@type string[] plugins that match these patterns will use your local versions instead of being fetched from GitHub - patterns = {}, -- For example {"folke"} - fallback = false, -- Fallback to git when local plugin doesn't exist - }, - install = { - -- install missing plugins on startup. This doesn't increase startup time. - missing = true, - -- try to load one of these colorschemes when starting an installation during startup - colorscheme = { "habamax" }, - }, - ui = { - -- a number <1 is a percentage., >1 is a fixed size - size = { width = 0.8, height = 0.8 }, - wrap = true, -- wrap the lines in the ui - -- The border to use for the UI window. Accepts same border values as |nvim_open_win()|. - border = "none", - -- The backdrop opacity. 0 is fully opaque, 100 is fully transparent. - backdrop = 60, - title = nil, ---@type string only works when border is not "none" - title_pos = "center", ---@type "center" | "left" | "right" - -- Show pills on top of the Lazy window - pills = true, ---@type boolean - icons = { - cmd = " ", - config = "", - event = " ", - ft = " ", - init = " ", - import = " ", - keys = " ", - lazy = "󰒲 ", - loaded = "●", - not_loaded = "○", - plugin = " ", - runtime = " ", - require = "󰢱 ", - source = " ", - start = " ", - task = "✔ ", - list = { - "●", - "➜", - "★", - "‒", - }, - }, - -- leave nil, to automatically select a browser depending on your OS. - -- If you want to use a specific browser, you can define it here - browser = nil, ---@type string? - throttle = 20, -- how frequently should the ui process render events - custom_keys = { - -- You can define custom key maps here. If present, the description will - -- be shown in the help menu. - -- To disable one of the defaults, set it to false. - - ["l"] = { - function(plugin) - require("lazy.util").float_term({ "lazygit", "log" }, { - cwd = plugin.dir, - }) - end, - desc = "Open lazygit log", - }, - - ["t"] = { - function(plugin) - require("lazy.util").float_term(nil, { - cwd = plugin.dir, - }) - end, - desc = "Open terminal in plugin dir", - }, - }, - }, - diff = { - -- diff command can be one of: - -- * browser: opens the github compare view. Note that this is always mapped to as well, - -- so you can have a different command for diff - -- * git: will run git diff and open a buffer with filetype git - -- * terminal_git: will open a pseudo terminal with git diff - -- * diffview.nvim: will open Diffview to show the diff - cmd = "git", - }, - checker = { - -- automatically check for plugin updates - enabled = false, - concurrency = nil, ---@type number? set to 1 to check for updates very slowly - notify = true, -- get a notification when new updates are found - frequency = 3600, -- check for updates every hour - check_pinned = false, -- check for pinned packages that can't be updated - }, - change_detection = { - -- automatically check for config file changes and reload the ui - enabled = true, - notify = true, -- get a notification when changes are found - }, - performance = { - cache = { - enabled = true, - }, - reset_packpath = true, -- reset the package path to improve startup time - rtp = { - reset = true, -- reset the runtime path to $VIMRUNTIME and your config directory - ---@type string[] - paths = {}, -- add any custom paths here that you want to includes in the rtp - ---@type string[] list any plugins you want to disable here - disabled_plugins = { - -- "gzip", - -- "matchit", - -- "matchparen", - -- "netrwPlugin", - -- "tarPlugin", - -- "tohtml", - -- "tutor", - -- "zipPlugin", - }, - }, - }, - -- lazy can generate helptags from the headings in markdown readme files, - -- so :help works even for plugins that don't have vim docs. - -- when the readme opens with :help it will be correctly displayed as markdown - readme = { - enabled = true, - root = vim.fn.stdpath("state") .. "/lazy/readme", - files = { "README.md", "lua/**/README.md" }, - -- only generate markdown helptags for plugins that dont have docs - skip_if_doc_exists = true, - }, - state = vim.fn.stdpath("state") .. "/lazy/state.json", -- state info for checker and other things - build = { - -- Plugins can provide a `build.lua` file that will be executed when the plugin is installed - -- or updated. When the plugin spec also has a `build` command, the plugin's `build.lua` not be - -- executed. In this case, a warning message will be shown. - warn_on_override = true, - }, - -- Enable profiling of lazy.nvim. This will add some overhead, - -- so only enable this when you are debugging lazy.nvim - profiling = { - -- Enables extra stats on the debug tab related to the loader cache. - -- Additionally gathers stats about all package.loaders - loader = false, - -- Track each new require in the Lazy profiling tab - require = false, - }, -} -``` - - - -
-If you don't want to use a Nerd Font, you can replace the icons with Unicode symbols. - -```lua -{ - ui = { - icons = { - cmd = "⌘", - config = "🛠", - event = "📅", - ft = "📂", - init = "⚙", - keys = "🗝", - plugin = "🔌", - runtime = "💻", - require = "🌙", - source = "📄", - start = "🚀", - task = "📌", - lazy = "💤 ", - }, - }, -} -``` - -
- -## 🚀 Usage - -Plugins are managed with the `:Lazy` command. -Open the help with `` to see all the key mappings. - -You can press `` on a plugin to show its details. Most properties -can be hovered with `` to open links, help files, readmes, -git commits and git issues. - -Lazy can automatically check for updates in the background. This feature -can be enabled with `config.checker.enabled = true`. - -Any operation can be started from the UI, with a sub command or an API function: - - - -| Command | Lua | Description | -| ------------------------- | -------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | -| `:Lazy build {plugins}` | `require("lazy").build(opts)` | Rebuild a plugin | -| `:Lazy check [plugins]` | `require("lazy").check(opts?)` | Check for updates and show the log (git fetch) | -| `:Lazy clean [plugins]` | `require("lazy").clean(opts?)` | Clean plugins that are no longer needed | -| `:Lazy clear` | `require("lazy").clear()` | Clear finished tasks | -| `:Lazy debug` | `require("lazy").debug()` | Show debug information | -| `:Lazy health` | `require("lazy").health()` | Run `:checkhealth lazy` | -| `:Lazy help` | `require("lazy").help()` | Toggle this help page | -| `:Lazy home` | `require("lazy").home()` | Go back to plugin list | -| `:Lazy install [plugins]` | `require("lazy").install(opts?)` | Install missing plugins | -| `:Lazy load {plugins}` | `require("lazy").load(opts)` | Load a plugin that has not been loaded yet. Similar to `:packadd`. Like `:Lazy load foo.nvim`. Use `:Lazy! load` to skip `cond` checks. | -| `:Lazy log [plugins]` | `require("lazy").log(opts?)` | Show recent updates | -| `:Lazy profile` | `require("lazy").profile()` | Show detailed profiling | -| `:Lazy reload {plugins}` | `require("lazy").reload(opts)` | Reload a plugin (experimental!!) | -| `:Lazy restore [plugins]` | `require("lazy").restore(opts?)` | Updates all plugins to the state in the lockfile. For a single plugin: restore it to the state in the lockfile or to a given commit under the cursor | -| `:Lazy sync [plugins]` | `require("lazy").sync(opts?)` | Run install, clean and update | -| `:Lazy update [plugins]` | `require("lazy").update(opts?)` | Update plugins. This will also update the lockfile | - - - -Any command can have a **bang** to make the command wait till it finished. For example, -if you want to sync lazy from the cmdline, you can use: - -```shell -nvim --headless "+Lazy! sync" +qa -``` - -`opts` is a table with the following key-values: - -- **wait**: when true, then the call will wait till the operation completed -- **show**: when false, the UI will not be shown -- **plugins**: a list of plugin names to run the operation on -- **concurrency**: limit the `number` of concurrently running tasks - -Stats API (`require("lazy").stats()`): - - - -```lua -{ - -- startuptime in milliseconds till UIEnter - startuptime = 0, - -- when true, startuptime is the accurate cputime for the Neovim process. (Linux & macOS) - -- this is more accurate than `nvim --startuptime`, and as such will be slightly higher - -- when false, startuptime is calculated based on a delta with a timestamp when lazy started. - real_cputime = false, - count = 0, -- total number of plugins - loaded = 0, -- number of loaded plugins - ---@type table - times = {}, -} -``` - - - -**lazy.nvim** provides a statusline component that you can use to show the number of pending updates. -Make sure to enable `config.checker.enabled = true` to make this work. - -
-Example of configuring lualine.nvim - -```lua -require("lualine").setup({ - sections = { - lualine_x = { - { - require("lazy.status").updates, - cond = require("lazy.status").has_updates, - color = { fg = "#ff9e64" }, - }, - }, - }, -}) - -``` - -
- -### 📆 User Events - -The following user events will be triggered: - -- **LazyDone**: when lazy has finished starting up and loaded your config -- **LazySync**: after running sync -- **LazyInstall**: after an install -- **LazyUpdate**: after an update -- **LazyClean**: after a clean -- **LazyCheck**: after checking for updates -- **LazyLog**: after running log -- **LazyLoad**: after loading a plugin. The `data` attribute will contain the plugin name. -- **LazySyncPre**: before running sync -- **LazyInstallPre**: before an install -- **LazyUpdatePre**: before an update -- **LazyCleanPre**: before a clean -- **LazyCheckPre**: before checking for updates -- **LazyLogPre**: before running log -- **LazyReload**: triggered by change detection after reloading plugin specs -- **VeryLazy**: triggered after `LazyDone` and processing `VimEnter` auto commands -- **LazyVimStarted**: triggered after `UIEnter` when `require("lazy").stats().startuptime` has been calculated. - Useful to update the startuptime on your dashboard. - -## 🔒 Lockfile `lazy-lock.json` - -After every **update**, the local lockfile is updated with the installed revisions. -It is recommended to have this file under version control. - -If you use your Neovim config on multiple machines, using the lockfile, you can -ensure that the same version of every plugin is installed. - -If you are on another machine, you can do `:Lazy restore`, to update all your plugins to -the version from the lockfile. - -## ⚡ Performance - -Great care has been taken to make the startup code (`lazy.core`) as efficient as possible. -During startup, all Lua files used before `VimEnter` or `BufReadPre` are byte-compiled and cached, -similar to what [impatient.nvim](https://github.com/lewis6991/impatient.nvim) does. - -My config for example loads in about `11ms` with `93` plugins. I do a lot of lazy-loading though :) - -**lazy.nvim** comes with an advanced profiler `:Lazy profile` to help you improve performance. -The profiling view shows you why and how long it took to load your plugins. - -![image](https://user-images.githubusercontent.com/292349/208301766-5c400561-83c3-4811-9667-1ec4bb3c43b8.png) - -## 🐛 Debug - -See an overview of active lazy-loading handlers and what's in the module cache. - -![image](https://user-images.githubusercontent.com/292349/208301790-7eedbfa5-d202-4e70-852e-de68aa47233b.png) - -## ▶️ Startup Sequence - -**lazy.nvim** does **NOT** use Neovim packages and even disables plugin loading -completely (`vim.go.loadplugins = false`). It takes over the complete -startup sequence for more flexibility and better performance. - -In practice this means that step 10 of [Neovim Initialization](https://neovim.io/doc/user/starting.html#initialization) is done by Lazy: - -1. All the plugins' `init()` functions are executed -2. All plugins with `lazy=false` are loaded. This includes sourcing `/plugin` and `/ftdetect` files. (`/after` will not be sourced yet) -3. All files from `/plugin` and `/ftdetect` directories in your rtp are sourced (excluding `/after`) -4. All `/after/plugin` files are sourced (this includes `/after` from plugins) - -Files from runtime directories are always sourced in alphabetical order. - -## 📂 Structuring Your Plugins - -Some users may want to split their plugin specs in multiple files. -Instead of passing a spec table to `setup()`, you can use a Lua module. -The specs from the **module** and any top-level **sub-modules** will be merged together in the final spec, -so it is not needed to add `require` calls in your main plugin file to the other files. - -The benefits of using this approach: - -- Simple to **add** new plugin specs. Just create a new file in your plugins module. -- Allows for **caching** of all your plugin specs. This becomes important if you have a lot of smaller plugin specs. -- Spec changes will automatically be **reloaded** when they're updated, so the `:Lazy` UI is always up to date. - -Example: - -- `~/.config/nvim/init.lua` - -```lua -require("lazy").setup("plugins") -``` - -- `~/.config/nvim/lua/plugins.lua` or `~/.config/nvim/lua/plugins/init.lua` **_(this file is optional)_** - -```lua -return { - "folke/neodev.nvim", - "folke/which-key.nvim", - { "folke/neoconf.nvim", cmd = "Neoconf" }, -} -``` - -- Any lua file in `~/.config/nvim/lua/plugins/*.lua` will be automatically merged in the main plugin spec - -For a real-life example, you can check [LazyVim](https://github.com/LazyVim/LazyVim) and more specifically: - -- [lazyvim.plugins](https://github.com/LazyVim/LazyVim/tree/main/lua/lazyvim/plugins) contains all the plugin specs that will be loaded - -### ↩️ Importing Specs, `config` & `opts` - -As part of a spec, you can add `import` statements to import additional plugin modules. -Both of the `setup()` calls are equivalent: - -```lua -require("lazy").setup("plugins") - --- Same as: -require("lazy").setup({{import = "plugins"}}) -``` - -To import multiple modules from a plugin, add additional specs for each import. -For example, to import LazyVim core plugins and an optional plugin: - -```lua -require("lazy").setup({ - spec = { - { "LazyVim/LazyVim", import = "lazyvim.plugins" }, - { import = "lazyvim.plugins.extras.coding.copilot" }, - } -}) -``` - -When you import specs, you can override them by simply adding a spec for the same plugin to your local -specs, adding any keys you want to override / merge. - -`opts`, `dependencies`, `cmd`, `event`, `ft` and `keys` are always merged with the parent spec. -Any other property will override the property from the parent spec. - -## 📦 Migration Guide - -### [packer.nvim](https://github.com/wbthomason/packer.nvim) - -- `setup` ➡️ `init` -- `requires` ➡️ `dependencies` -- `as` ➡️ `name` -- `opt` ➡️ `lazy` -- `run` ➡️ `build` -- `lock` ➡️ `pin` -- `disable=true` ➡️ `enabled = false` -- `tag='*'` ➡️ `version="*"` -- `after` is **_not needed_** for most use-cases. Use `dependencies` otherwise. -- `wants` is **_not needed_** for most use-cases. Use `dependencies` otherwise. -- `config` don't support string type, use `fun(LazyPlugin)` instead. -- `module` is auto-loaded. No need to specify -- `keys` spec is [different](#%EF%B8%8F-lazy-key-mappings) -- `rtp` can be accomplished with: - -```lua -config = function(plugin) - vim.opt.rtp:append(plugin.dir .. "/custom-rtp") -end -``` - -With packer `wants`, `requires` and `after` can be used to manage dependencies. -With lazy, this isn't needed for most of the Lua dependencies. They can be installed just like normal plugins -(even with `lazy=true`) and will be loaded when other plugins need them. -The `dependencies` key can be used to group those required plugins with the one that requires them. -The plugins which are added as `dependencies` will always be lazy-loaded and loaded when the plugin is loaded. - -### [paq-nvim](https://github.com/savq/paq-nvim) - -- `as` ➡️ `name` -- `opt` ➡️ `lazy` -- `run` ➡️ `build` - -## ❌ Uninstalling - -To uninstall **lazy.nvim**, you need to remove the following files and directories: - -- **data**: `~/.local/share/nvim/lazy` -- **state**: `~/.local/state/nvim/lazy` -- **lockfile**: `~/.config/nvim/lazy-lock.json` - -> Paths can differ if you changed `XDG` environment variables. - -## 🌈 Highlight Groups - -
-Click to see all highlight groups - - - -| Highlight Group | Default Group | Description | -| --------------------- | -------------------------- | --------------------------------------------------- | -| **LazyButton** | **_CursorLine_** | | -| **LazyButtonActive** | **_Visual_** | | -| **LazyComment** | **_Comment_** | | -| **LazyCommit** | **_@variable.builtin_** | commit ref | -| **LazyCommitIssue** | **_Number_** | | -| **LazyCommitScope** | **_Italic_** | conventional commit scope | -| **LazyCommitType** | **_Title_** | conventional commit type | -| **LazyDimmed** | **_Conceal_** | property | -| **LazyDir** | **_@markup.link_** | directory | -| **LazyH1** | **_IncSearch_** | home button | -| **LazyH2** | **_Bold_** | titles | -| **LazyLocal** | **_Constant_** | | -| **LazyNoCond** | **_DiagnosticWarn_** | unloaded icon for a plugin where `cond()` was false | -| **LazyNormal** | **_NormalFloat_** | | -| **LazyProgressDone** | **_Constant_** | progress bar done | -| **LazyProgressTodo** | **_LineNr_** | progress bar todo | -| **LazyProp** | **_Conceal_** | property | -| **LazyReasonCmd** | **_Operator_** | | -| **LazyReasonEvent** | **_Constant_** | | -| **LazyReasonFt** | **_Character_** | | -| **LazyReasonImport** | **_Identifier_** | | -| **LazyReasonKeys** | **_Statement_** | | -| **LazyReasonPlugin** | **_Special_** | | -| **LazyReasonRequire** | **_@variable.parameter_** | | -| **LazyReasonRuntime** | **_@macro_** | | -| **LazyReasonSource** | **_Character_** | | -| **LazyReasonStart** | **_@variable.member_** | | -| **LazySpecial** | **_@punctuation.special_** | | -| **LazyTaskError** | **_ErrorMsg_** | task errors | -| **LazyTaskOutput** | **_MsgArea_** | task output | -| **LazyUrl** | **_@markup.link_** | url | -| **LazyValue** | **_@string_** | value of a property | - - - -
- -## 📚 Plugin Authors - -If your plugin needs a build step, you can create a file `build.lua` or `build/init.lua` -in the root of your repo. This file will be loaded when the plugin is installed or updated. - -This makes it easier for users, as they no longer need to specify a `build` command. - -## 📦 Other Neovim Plugin Managers in Lua - -- [pckr.nvim](https://github.com/lewis6991/pckr.nvim) -- [packer.nvim](https://github.com/wbthomason/packer.nvim) -- [paq-nvim](https://github.com/savq/paq-nvim) -- [neopm](https://github.com/ii14/neopm) -- [dep](https://github.com/chiyadev/dep) -- [optpack.nvim](https://github.com/notomo/optpack.nvim) -- [pact.nvim](https://github.com/rktjmp/pact.nvim) +Check the [documentation website](https://lazy.folke.io/) for more information. \ No newline at end of file diff --git a/doc/.keep b/doc/.keep new file mode 100644 index 0000000..e69de29 diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index 876ea0a..14d4a16 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -1,307 +1,324 @@ -*lazy.nvim.txt* For Neovim >= 0.8.0 Last change: 2024 June 23 +*lazy.nvim.txt* A modern plugin manager for Neovim ============================================================================== Table of Contents *lazy.nvim-table-of-contents* -1. lazy.nvim |lazy.nvim-lazy.nvim| - - Features |lazy.nvim-lazy.nvim-features| - - Requirements |lazy.nvim-lazy.nvim-requirements| - - Installation |lazy.nvim-lazy.nvim-installation| - - Plugin Spec |lazy.nvim-lazy.nvim-plugin-spec| - - Configuration |lazy.nvim-lazy.nvim-configuration| - - Usage |lazy.nvim-lazy.nvim-usage| - - Lockfile lazy-lock.json |lazy.nvim-lazy.nvim-lockfile-lazy-lock.json| - - Performance |lazy.nvim-lazy.nvim-performance| - - Debug |lazy.nvim-lazy.nvim-debug| - - Startup Sequence |lazy.nvim-lazy.nvim-startup-sequence| - - Structuring Your Plugins |lazy.nvim-lazy.nvim-structuring-your-plugins| - - Migration Guide |lazy.nvim-lazy.nvim-migration-guide| - - Uninstalling |lazy.nvim-lazy.nvim-uninstalling| - - Highlight Groups |lazy.nvim-lazy.nvim-highlight-groups| - - Plugin Authors |lazy.nvim-lazy.nvim-plugin-authors| - - Other Neovim Plugin Managers in Lua|lazy.nvim-lazy.nvim-other-neovim-plugin-managers-in-lua| -2. Links |lazy.nvim-links| +1. 🚀 Getting Started |lazy.nvim-🚀-getting-started| + - ✨ Features |lazy.nvim-🚀-getting-started-✨-features| + - ⚡️ Requirements |lazy.nvim-🚀-getting-started-⚡️-requirements| +2. 🛠️ Installation |lazy.nvim-🛠️-installation| + - Structured Setup |lazy.nvim-🛠️-installation-structured-setup| + - Single File Setup |lazy.nvim-🛠️-installation-single-file-setup| +3. 🔌 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| +4. 📦 Packages |lazy.nvim-📦-packages| + - Lazy |lazy.nvim-📦-packages-lazy| + - Rockspec |lazy.nvim-📦-packages-rockspec| + - Packspec |lazy.nvim-📦-packages-packspec| +5. ⚙️ Configuration |lazy.nvim-⚙️-configuration| + - 🌈 Highlight Groups|lazy.nvim-⚙️-configuration-🌈-highlight-groups| +6. 🚀 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| +7. 📚 Plugin Developers |lazy.nvim-📚-plugin-developers| +8. Links |lazy.nvim-links| ============================================================================== -1. lazy.nvim *lazy.nvim-lazy.nvim* +1. 🚀 Getting Started *lazy.nvim-🚀-getting-started* **lazy.nvim** is a modern plugin manager for Neovim. -FEATURES *lazy.nvim-lazy.nvim-features* +✨ FEATURES *lazy.nvim-🚀-getting-started-✨-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 support -- Statusline component to see the number of pending updates -- Automatically lazy-loads colorschemes +- 📦 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 support +- 📈 Statusline component to see the number of pending updates +- 🎨 Automatically lazy-loads colorschemes -REQUIREMENTS *lazy.nvim-lazy.nvim-requirements* +⚡️ REQUIREMENTS *lazy.nvim-🚀-getting-started-⚡️-requirements* - Neovim >= **0.8.0** (needs to be built with **LuaJIT**) - Git >= **2.19.0** (for partial clones support) - a Nerd Font **(optional)** -INSTALLATION *lazy.nvim-lazy.nvim-installation* +============================================================================== +2. 🛠️ Installation *lazy.nvim-🛠️-installation* -You can add the following Lua code to your `init.lua` to bootstrap -**lazy.nvim** +There are multiple ways to install **lazy.nvim**. The **Structured Setup** is +the recommended way, but you can also use the **Single File Setup** if you +prefer to keep everything in your `init.lua`. + +Please refer to the Configuration section for an overview of +all available options. + + + + +STRUCTURED SETUP *lazy.nvim-🛠️-installation-structured-setup* >lua + require("config.lazy") +< + +>lua + -- Bootstrap lazy.nvim local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" if not (vim.uv or vim.loop).fs_stat(lazypath) then - vim.fn.system({ - "git", - "clone", - "--filter=blob:none", - "https://github.com/folke/lazy.nvim.git", - "--branch=stable", -- latest stable release - lazypath, - }) + local lazyrepo = "https://github.com/folke/lazy.nvim.git" + vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) end vim.opt.rtp:prepend(lazypath) -< - -Nextstep is to add **lazy.nvim** below the code added in the prior step in -`init.lua` - ->lua - require("lazy").setup(plugins, opts) -< - -- **plugins**this should be a `table` or a `string` - - `table`a list with your |lazy.nvim-plugin-spec| - - `string`a Lua module name that contains your |lazy.nvim-plugin-spec|. See |lazy.nvim-structuring-your-plugins| -- **opts**see |lazy.nvim-configuration| **(optional)** - ->lua - -- Example using a list of specs with the default options - vim.g.mapleader = " " -- Make sure to set `mapleader` before lazy so your mappings are correct - vim.g.maplocalleader = "\\" -- Same for `maplocalleader` + -- Make sure to setup `mapleader` and `maplocalleader` before + -- loading lazy.nvim so that mappings are correct. + -- This is also a good place to setup other settings (vim.opt) + vim.g.mapleader = " " + vim.g.maplocalleader = "\\" + + -- Setup lazy.nvim require("lazy").setup({ - "folke/which-key.nvim", - { "folke/neoconf.nvim", cmd = "Neoconf" }, - "folke/neodev.nvim", + -- highlight-start + spec = { + -- import your plugins + { import = "plugins" }, + }, + -- highlight-end + -- Configure any other settings here. See the documentation for more details. + -- colorscheme that will be used when installing plugins. + install = { colorscheme = { "habamax" } }, + -- automatically check for plugin updates + checker = { enabled = true }, }) < -It is recommended to run `:checkhealth lazy` after installation. +You can then create your plugin specs in `~/.config/nvim/lua/plugins/`. Each +file should return a table with the plugins you want to install. + +For more info see Structuring Your Plugins -PLUGIN SPEC *lazy.nvim-lazy.nvim-plugin-spec* - - ------------------------------------------------------------------------------------------------------------------------------------ - Property Type Description - -------------- ---------------------------------------------------------------- ---------------------------------------------------- - [1] string? Short plugin url. Will be expanded using - config.git.url_format - - dir string? A directory pointing to a local plugin - - url string? A custom git url where the plugin is hosted - - name string? A custom name for the plugin used for the local - plugin directory and as the display name - - dev boolean? When true, a local plugin directory will be used - instead. See config.dev - - lazy boolean? When true, the plugin will only be loaded when - needed. Lazy-loaded plugins are automatically loaded - when their Lua modules are required, or when one of - the lazy-loading handlers triggers - - enabled boolean? or fun():boolean When false, or if the function returns false, then - this plugin will not be included in the spec - - cond boolean? or fun(LazyPlugin):boolean When false, or if the function returns false, then - this plugin will not be loaded. Useful to disable - some plugins in vscode, or firenvim for example. - - dependencies LazySpec[] A list of plugin names or plugin specs that should - be loaded when the plugin loads. Dependencies are - always lazy-loaded unless specified otherwise. When - specifying a name, make sure the plugin spec has - been defined somewhere else. - - init fun(LazyPlugin) init functions are always executed during startup - - opts table or fun(LazyPlugin, opts:table) opts should be a table (will be merged with parent - specs), return a table (replaces parent specs) or - should change a table. The table will be passed to - the Plugin.config() function. Setting this value - will imply Plugin.config() - - config fun(LazyPlugin, opts:table) or true config is executed when the plugin loads. The - default implementation will automatically run - require(MAIN).setup(opts) if opts or config = true - is set. Lazy uses several heuristics to determine - the plugin’s MAIN module automatically based on the - plugin’s name. See also opts. To use the default - implementation without opts set config to true. - - main string? You can specify the main module to use for config() - and opts(), in case it can not be determined - automatically. See config() - - build fun(LazyPlugin) or string or a list of build commands build is executed when a plugin is installed or - updated. Before running build, a plugin is first - loaded. If it’s a string it will be run as a shell - command. When prefixed with : it is a Neovim - command. You can also specify a list to executed - multiple build commands. Some plugins provide their - own build.lua which is automatically used by lazy. - So no need to specify a build step for those - plugins. - - branch string? Branch of the repository - - tag string? Tag of the repository - - commit string? Commit of the repository - - version string? or false to override the default Version to use from the repository. Full Semver - ranges are supported - - pin boolean? When true, this plugin will not be included in - updates - - submodules boolean? When false, git submodules will not be fetched. - Defaults to true - - event string? or string[] or Lazy-load on event. Events can be specified as - fun(self:LazyPlugin, event:string[]):string[] or BufEnter or with a pattern like BufEnter *.lua - {event:string[]\|string, pattern?:string[]\|string} - - cmd string? or string[] or Lazy-load on command - fun(self:LazyPlugin, cmd:string[]):string[] - - ft string? or string[] or Lazy-load on filetype - fun(self:LazyPlugin, ft:string[]):string[] - - keys string? or string[] or LazyKeysSpec[] or Lazy-load on key mapping - fun(self:LazyPlugin, keys:string[]):(string \| LazyKeysSpec)[] - - module false? Do not automatically load this Lua module when it’s - required somewhere - - priority number? Only useful for start plugins (lazy=false) to force - loading certain plugins first. Default priority is - 50. It’s recommended to set this to a high number - for colorschemes. - - optional boolean? When a spec is tagged optional, it will only be - included in the final spec, when the same plugin has - been specified at least once somewhere else without - optional. This is mainly useful for Neovim distros, - to allow setting options on plugins that may/may not - be part of the user’s plugins - ------------------------------------------------------------------------------------------------------------------------------------ - -LAZY LOADING ~ - -**lazy.nvim** automagically lazy-loads Lua modules, so it is not needed to -specify `module=...` everywhere in your plugin specification. This means that -if you have a plugin `A` that is lazy-loaded and a plugin `B` that requires a -module of plugin `A`, then plugin `A` will be loaded on demand as expected. - -If you don’t want this behavior for a certain plugin, you can specify that -with `module=false`. You can then manually load the plugin with `:Lazy load -foobar.nvim`. - -You can configure **lazy.nvim** to lazy-load all plugins by default with -`config.defaults.lazy = true`. - -Additionally, you can also lazy-load on **events**, **commands**, **file -types** and **key mappings**. - -Plugins will be lazy-loaded when one of the following is `true` - -- Theplugin only exists as a dependency in your spec -- It has an `event`, `cmd`, `ft` or `keys` key -- `config.defaults.lazy == true` - - -COLORSCHEMES - -Colorscheme plugins can be configured with `lazy=true`. The plugin will -automagically load when doing `colorscheme foobar`. - - - **NOTE:** since **start** plugins can possibly change existing highlight - groups, it’s important to make sure that your main **colorscheme** is loaded - first. To ensure this you can use the `priority=1000` field. **(see the - examples)** - -LAZY KEY MAPPINGS - -The `keys` property can be a `string` or `string[]` for simple normal-mode -mappings, or it can be a `LazyKeysSpec` table with the following key-value -pairs: - -- **[1]**(`string`) lhs **(required)** -- **[2]**(`string|fun()`) rhs **(optional)** -- **mode**(`string|string[]`) mode **(optional, defaults to "n")** -- **ft**(`string|string[]`) `filetype` for buffer-local keymaps **(optional)** -- any other option valid for `vim.keymap.set` - -Key mappings will load the plugin the first time they get executed. - -When `[2]` is `nil`, then the real mapping has to be created by the `config()` -function. +SINGLE FILE SETUP *lazy.nvim-🛠️-installation-single-file-setup* >lua - -- Example for neo-tree.nvim - { - "nvim-neo-tree/neo-tree.nvim", - keys = { - { "ft", "Neotree toggle", desc = "NeoTree" }, - }, - config = function() - require("neo-tree").setup() - end, - } + -- Bootstrap lazy.nvim + local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" + if not (vim.uv or vim.loop).fs_stat(lazypath) then + local lazyrepo = "https://github.com/folke/lazy.nvim.git" + vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) + end + vim.opt.rtp:prepend(lazypath) + + -- Make sure to setup `mapleader` and `maplocalleader` before + -- loading lazy.nvim so that mappings are correct. + -- This is also a good place to setup other settings (vim.opt) + vim.g.mapleader = " " + vim.g.maplocalleader = "\\" + + -- Setup lazy.nvim + require("lazy").setup({ + -- highlight-start + spec = { + -- add your plugins here + }, + -- highlight-end + -- Configure any other settings here. See the documentation for more details. + -- colorscheme that will be used when installing plugins. + install = { colorscheme = { "habamax" } }, + -- automatically check for plugin updates + checker = { enabled = true }, + }) < -VERSIONING ~ - -If you want to install a specific revision of a plugin, you can use `commit`, -`tag`, `branch`, `version`. - -The `version` property supports Semver ranges. - -Click to see some examples ~ - -- `*`latest stable version (this excludes pre-release versions) -- `1.2.x`any version that starts with `1.2`, such as `1.2.0`, `1.2.3`, etc. -- `^1.2.3`any version that is compatible with `1.2.3`, such as `1.3.0`, `1.4.5`, etc., but not `2.0.0`. -- `~1.2.3`any version that is compatible with `1.2.3`, such as `1.2.4`, `1.2.5`, but not `1.3.0`. -- `>1.2.3`any version that is greater than `1.2.3`, such as `1.3.0`, `1.4.5`, etc. -- `>=1.2.3`any version that is greater than or equal to `1.2.3`, such as `1.2.3`, `1.3.0`, `1.4.5`, etc. -- `<1.2.3`any version that is less than `1.2.3`, such as `1.1.0`, `1.0.5`, etc. -- `<=1.2.3`any version that is less than or equal to `1.2.3`, such as `1.2.3`, `1.1.0`, `1.0.5`, etc - -You can set `config.defaults.version = "*"` to install the latest stable -version of plugins that support Semver. +============================================================================== +3. 🔌 Plugin Spec *lazy.nvim-🔌-plugin-spec* -EXAMPLES ~ +SPEC SOURCE *lazy.nvim-🔌-plugin-spec-spec-source* + + ----------------------------------------------------------------------------------- + Property Type Description + ---------- ---------- ------------------------------------------------------------- + [1] string? Short plugin url. Will be expanded using + config.git.url_format. Can also be a url or dir. + + dir string? A directory pointing to a local plugin + + url string? A custom git url where the plugin is hosted + + name string? A custom name for the plugin used for the local plugin + directory and as the display name + + dev boolean? When true, a local plugin directory will be used instead. See + config.dev + ----------------------------------------------------------------------------------- +A valid spec should define one of `[1]`, `dir` or `url`. + + +SPEC LOADING *lazy.nvim-🔌-plugin-spec-spec-loading* + + -------------------------------------------------------------------------------------------------- + Property Type Description + -------------- ------------------------- --------------------------------------------------------- + dependencies LazySpec[] A list of plugin names or plugin specs that should be + loaded when the plugin loads. Dependencies are always + lazy-loaded unless specified otherwise. When specifying a + name, make sure the plugin spec has been defined + somewhere else. + + enabled boolean? or fun():boolean When false, or if the function returns false, then this + plugin will not be included in the spec + + cond boolean? or Behaves the same as enabled, but won’t uninstall the + fun(LazyPlugin):boolean plugin when the condition is false. Useful to disable + some plugins in vscode, or firenvim for example. + + priority number? Only useful for start plugins (lazy=false) to force + loading certain plugins first. Default priority is 50. + It’s recommended to set this to a high number for + colorschemes. + -------------------------------------------------------------------------------------------------- + +SPEC SETUP *lazy.nvim-🔌-plugin-spec-spec-setup* + + ----------------------------------------------------------------------------------------------------- + Property Type Description + ---------- ----------------------------- ------------------------------------------------------------ + init fun(LazyPlugin) init functions are always executed during startup + + opts table or opts should be a table (will be merged with parent specs), + fun(LazyPlugin, opts:table) return a table (replaces parent specs) or should change a + table. The table will be passed to the Plugin.config() + function. Setting this value will imply Plugin.config() + + config fun(LazyPlugin, opts:table) config is executed when the plugin loads. The default + or true implementation will automatically run + require(MAIN).setup(opts) if opts or config = true is set. + Lazy uses several heuristics to determine the plugin’s MAIN + module automatically based on the plugin’s name. See also + opts. To use the default implementation without opts set + config to true. + + main string? You can specify the main module to use for config() and + opts(), in case it can not be determined automatically. See + config() + + build fun(LazyPlugin) or string or build is executed when a plugin is installed or updated. + a list of build commands Before running build, a plugin is first loaded. If it’s a + string it will be run as a shell command. When prefixed with + : it is a Neovim command. You can also specify a list to + executed multiple build commands. Some plugins provide their + own build.lua which is automatically used by lazy. So no + need to specify a build step for those plugins. + + rocks string[]? Add any luarocks dependencies. + ----------------------------------------------------------------------------------------------------- + +SPEC LAZY LOADING *lazy.nvim-🔌-plugin-spec-spec-lazy-loading* + + -------------------------------------------------------------------------------------------------------------------- + Property Type Description + ---------- ---------------------------------------------------------------- ---------------------------------------- + lazy boolean? When true, the plugin will only be + loaded when needed. Lazy-loaded plugins + are automatically loaded when their Lua + modules are required, or when one of the + lazy-loading handlers triggers + + event string? or string[] or Lazy-load on event. Events can be + fun(self:LazyPlugin, event:string[]):string[] or specified as BufEnter or with a pattern + {event:string[]\|string, pattern?:string[]\|string} like BufEnter *.lua + + cmd string? or string[] or Lazy-load on command + fun(self:LazyPlugin, cmd:string[]):string[] + + ft string? or string[] or Lazy-load on filetype + fun(self:LazyPlugin, ft:string[]):string[] + + keys string? or string[] or LazyKeysSpec[] or Lazy-load on key mapping + fun(self:LazyPlugin, keys:string[]):(string \| LazyKeysSpec)[] + -------------------------------------------------------------------------------------------------------------------- +Refer to the Lazy Loading <./lazy_loading.md> section for more information. + + +SPEC VERSIONING *lazy.nvim-🔌-plugin-spec-spec-versioning* + + ------------------------------------------------------------------------------ + Property Type Description + ------------ -------------------- -------------------------------------------- + branch string? Branch of the repository + + tag string? Tag of the repository + + commit string? Commit of the repository + + version string? or false to Version to use from the repository. Full + override the default Semver ranges are supported + + pin boolean? When true, this plugin will not be included + in updates + + submodules boolean? When false, git submodules will not be + fetched. Defaults to true + ------------------------------------------------------------------------------ +Refer to the Versioning <./versioning.md> section for more information. + + +SPEC ADVANCED *lazy.nvim-🔌-plugin-spec-spec-advanced* + + ---------------------------------------------------------------------------------------- + Property Type Description + ---------- ---------- ------------------------------------------------------------------ + optional boolean? When a spec is tagged optional, it will only be included in the + final spec, when the same plugin has been specified at least once + somewhere else without optional. This is mainly useful for Neovim + distros, to allow setting options on plugins that may/may not be + part of the user’s plugins. + + specs LazySpec A list of plugin specs defined in the scope of the plugin. This is + mainly useful for Neovim distros, to allow setting options on + plugins that may/may not be part of the user’s plugins. When the + plugin is disabled, none of the scoped specs will be included in + the final spec. Similar to dependencies without the automatic + loading of the specs. + + module false? Do not automatically load this Lua module when it’s required + somewhere + + import string? Import the given spec module. + ---------------------------------------------------------------------------------------- + +EXAMPLES *lazy.nvim-🔌-plugin-spec-examples* >lua return { @@ -394,7 +411,120 @@ EXAMPLES ~ < -CONFIGURATION *lazy.nvim-lazy.nvim-configuration* +LAZY LOADING *lazy.nvim-🔌-plugin-spec-lazy-loading* + +**lazy.nvim** automagically lazy-loads Lua modules. This means that if you have +a plugin `A` that is lazy-loaded and a plugin `B` that requires a module of +plugin `A`, then plugin `A` will be loaded on demand as expected. + + +Additionally, you can also lazy-load on **events**, **commands**, **file +types** and **key mappings**. + +Plugins will be lazy-loaded when one of the following is `true`: + +- The plugin only exists as a dependency in your spec +- It has an `event`, `cmd`, `ft` or `keys` key +- `config.defaults.lazy == true` + + +🌈 COLORSCHEMES ~ + +Colorscheme plugins can be configured with `lazy=true`. The plugin will +automagically load when doing `colorscheme foobar`. + + + +⌨️ LAZY KEY MAPPINGS ~ + +The `keys` property can be a `string` or `string[]` for simple normal-mode +mappings, or it can be a `LazyKeysSpec` table with the following key-value +pairs: + +- **[1]**: (`string`) lhs **(required)** +- **[2]**: (`string|fun()`) rhs **(optional)** +- **mode**: (`string|string[]`) mode **(optional, defaults to "n")** +- **ft**: (`string|string[]`) `filetype` for buffer-local keymaps **(optional)** +- any other option valid for `vim.keymap.set` + +Key mappings will load the plugin the first time they get executed. + +When `[2]` is `nil`, then the real mapping has to be created by the `config()` +function. + +>lua + -- Example for neo-tree.nvim + { + "nvim-neo-tree/neo-tree.nvim", + keys = { + { "ft", "Neotree toggle", desc = "NeoTree" }, + }, + config = function() + require("neo-tree").setup() + end, + } +< + + +VERSIONING *lazy.nvim-🔌-plugin-spec-versioning* + +If you want to install a specific revision of a plugin, you can use `commit`, +`tag`, `branch`, `version`. + +The `version` property supports Semver ranges. + + + +EXAMPLES ~ + +- `*`: latest stable version (this excludes pre-release versions) +- `1.2.x`: any version that starts with `1.2`, such as `1.2.0`, `1.2.3`, etc. +- `^1.2.3`: any version that is compatible with `1.2.3`, such as `1.3.0`, `1.4.5`, etc., but not `2.0.0`. +- `~1.2.3`: any version that is compatible with `1.2.3`, such as `1.2.4`, `1.2.5`, but not `1.3.0`. +- `>1.2.3`: any version that is greater than `1.2.3`, such as `1.3.0`, `1.4.5`, etc. +- `>=1.2.3`: any version that is greater than or equal to `1.2.3`, such as `1.2.3`, `1.3.0`, `1.4.5`, etc. +- `<1.2.3`: any version that is less than `1.2.3`, such as `1.1.0`, `1.0.5`, etc. +- `<=1.2.3`: any version that is less than or equal to `1.2.3`, such as `1.2.3`, `1.1.0`, `1.0.5`, etc + + +============================================================================== +4. 📦 Packages *lazy.nvim-📦-packages* + +**lazy.nvim** supports three ways for plugins to define their dependencies and +configuration. + +- **Lazy**: `lazy.lua` file +- **Rockspec**: luarocks `*-scm-1.rockspec` file +- **Packspec**: `pkg.json` (experimental, since the format is not quite there yet) + +You can enable/disable package sources with `config.pkg.sources` +. The order of sources is important, as the first source that +finds a package will be used. + + + +LAZY *lazy.nvim-📦-packages-lazy* + +Using a `lazy.lua` file is the recommended way to define your plugin +dependencies and configuration. Syntax is the same as any plugin spec. + + +ROCKSPEC *lazy.nvim-📦-packages-rockspec* + +When a plugin contains a `*-scm-1.rockspec` file, **lazy.nvim** will +automatically load its `rocks` dependencies. + + +PACKSPEC *lazy.nvim-📦-packages-packspec* + +Supports the pkg.json + format, with +a lazy extension in `lazy`. `lazy` can contain any valid lazy spec fields. They +will be added to the plugin’s spec. + + +============================================================================== +5. ⚙️ Configuration *lazy.nvim-⚙️-configuration* **lazy.nvim** comes with the following defaults: @@ -402,8 +532,13 @@ CONFIGURATION *lazy.nvim-lazy.nvim-configuration* { root = vim.fn.stdpath("data") .. "/lazy", -- directory where plugins will be installed defaults = { + -- By default, only LazyVim plugins will be lazy-loaded. Your custom plugins will load during startup. + -- If you know what you're doing, you can set this to `true` to have all your custom plugins lazy-loaded by default. lazy = false, -- should plugins be lazy-loaded? - version = nil, + -- It's recommended to leave version=false for now, since a lot the plugin that support versioning, + -- have outdated releases, which may break your Neovim install. + version = nil, -- always use the latest git commit + -- version = "*", -- try installing the latest stable version for plugins that support semver -- default `cond` you can use to globally disable a lot of plugins -- when running inside vscode for example cond = nil, ---@type boolean|fun(self:LazyPlugin):boolean|nil @@ -426,6 +561,21 @@ CONFIGURATION *lazy.nvim-lazy.nvim-configuration* -- increase downloads a lot. filter = true, }, + pkg = { + enabled = true, + cache = vim.fn.stdpath("state") .. "/lazy/pkg-cache.lua", + versions = true, -- Honor versions in pkg sources + -- the first package source that is found for a plugin will be used. + sources = { + "lazy", + "rockspec", + "packspec", + }, + }, + rocks = { + root = vim.fn.stdpath("data") .. "/lazy-rocks", + server = "https://nvim-neorocks.github.io/rocks-binaries/", + }, dev = { ---@type string | fun(plugin: LazyPlugin): string directory where you store your local plugin projects path = "~/projects", @@ -455,6 +605,7 @@ CONFIGURATION *lazy.nvim-lazy.nvim-configuration* cmd = " ", config = "", event = " ", + favorite = " ", ft = " ", init = " ", import = " ", @@ -601,7 +752,101 @@ If you don’t want to use a Nerd Font, you can replace the icons with Unicode s < -USAGE *lazy.nvim-lazy.nvim-usage* +🌈 HIGHLIGHT GROUPS *lazy.nvim-⚙️-configuration-🌈-highlight-groups* + + ----------------------------------------------------------------------- + Highlight Group Default Group Description + ----------------------- ----------------------- ----------------------- + LazyButton CursorLine + + LazyButtonActive Visual + + LazyComment Comment + + LazyCommit @variable.builtin commit ref + + LazyCommitIssue Number + + LazyCommitScope Italic conventional commit + scope + + LazyCommitType Title conventional commit + type + + LazyDimmed Conceal property + + LazyDir @markup.link directory + + LazyH1 IncSearch home button + + LazyH2 Bold titles + + LazyLocal Constant + + LazyNoCond DiagnosticWarn unloaded icon for a + plugin where cond() was + false + + LazyNormal NormalFloat + + LazyProgressDone Constant progress bar done + + LazyProgressTodo LineNr progress bar todo + + LazyProp Conceal property + + LazyReasonCmd Operator + + LazyReasonEvent Constant + + LazyReasonFt Character + + LazyReasonImport Identifier + + LazyReasonKeys Statement + + LazyReasonPlugin Special + + LazyReasonRequire @variable.parameter + + LazyReasonRuntime @macro + + LazyReasonSource Character + + LazyReasonStart @variable.member + + LazySpecial @punctuation.special + + LazyTaskError ErrorMsg task errors + + LazyTaskOutput MsgArea task output + + LazyUrl @markup.link url + + LazyValue @string value of a property + ----------------------------------------------------------------------- + +============================================================================== +6. 🚀 Usage *lazy.nvim-🚀-usage* + + +▶️ STARTUP SEQUENCE *lazy.nvim-🚀-usage-▶️-startup-sequence* + +**lazy.nvim** does **NOT** use Neovim packages and even disables plugin loading +completely (`vim.go.loadplugins = false`). It takes over the complete startup +sequence for more flexibility and better performance. + +In practice this means that step 10 of |Neovim Initialization| is done by Lazy: + +1. All the plugins’ `init()` functions are executed +2. All plugins with `lazy=false` are loaded. This includes sourcing `/plugin` and `/ftdetect` files. (`/after` will not be sourced yet) +3. All files from `/plugin` and `/ftdetect` directories in your rtp are sourced (excluding `/after`) +4. All `/after/plugin` files are sourced (this includes `/after` from plugins) + +Files from runtime directories are always sourced in alphabetical order. + + +🚀 COMMANDS *lazy.nvim-🚀-usage-🚀-commands* Plugins are managed with the `:Lazy` command. Open the help with `` to see all the key mappings. @@ -616,14 +861,17 @@ enabled with `config.checker.enabled = true`. Any operation can be started from the UI, with a sub command or an API function: - -------------------------------------------------------------------------------------------------------------- + ---------------------------------------------------------------------------------- Command Lua Description - ------------------------- -------------------------------- --------------------------------------------------- + ------------------------- -------------------------------- ----------------------- :Lazy build {plugins} require("lazy").build(opts) Rebuild a plugin - :Lazy check [plugins] require("lazy").check(opts?) Check for updates and show the log (git fetch) + :Lazy check [plugins] require("lazy").check(opts?) Check for updates and + show the log (git + fetch) - :Lazy clean [plugins] require("lazy").clean(opts?) Clean plugins that are no longer needed + :Lazy clean [plugins] require("lazy").clean(opts?) Clean plugins that are + no longer needed :Lazy clear require("lazy").clear() Clear finished tasks @@ -637,24 +885,36 @@ function: :Lazy install [plugins] require("lazy").install(opts?) Install missing plugins - :Lazy load {plugins} require("lazy").load(opts) Load a plugin that has not been loaded yet. Similar - to :packadd. Like :Lazy load foo.nvim. Use - :Lazy! load to skip cond checks. + :Lazy load {plugins} require("lazy").load(opts) Load a plugin that has + not been loaded yet. + Similar to :packadd. + Like + :Lazy load foo.nvim. + Use :Lazy! load to skip + cond checks. :Lazy log [plugins] require("lazy").log(opts?) Show recent updates :Lazy profile require("lazy").profile() Show detailed profiling - :Lazy reload {plugins} require("lazy").reload(opts) Reload a plugin (experimental!!) + :Lazy reload {plugins} require("lazy").reload(opts) Reload a plugin + (experimental!!) - :Lazy restore [plugins] require("lazy").restore(opts?) Updates all plugins to the state in the lockfile. - For a single plugin: restore it to the state in the - lockfile or to a given commit under the cursor + :Lazy restore [plugins] require("lazy").restore(opts?) Updates all plugins to + the state in the + lockfile. For a single + plugin: restore it to + the state in the + lockfile or to a given + commit under the cursor - :Lazy sync [plugins] require("lazy").sync(opts?) Run install, clean and update + :Lazy sync [plugins] require("lazy").sync(opts?) Run install, clean and + update - :Lazy update [plugins] require("lazy").update(opts?) Update plugins. This will also update the lockfile - -------------------------------------------------------------------------------------------------------------- + :Lazy update [plugins] require("lazy").update(opts?) Update plugins. This + will also update the + lockfile + ---------------------------------------------------------------------------------- Any command can have a **bang** to make the command wait till it finished. For example, if you want to sync lazy from the cmdline, you can use: @@ -664,10 +924,10 @@ example, if you want to sync lazy from the cmdline, you can use: `opts` is a table with the following key-values: -- **wait**when true, then the call will wait till the operation completed -- **show**when false, the UI will not be shown -- **plugins**a list of plugin names to run the operation on -- **concurrency**limit the `number` of concurrently running tasks +- **wait**: when true, then the call will wait till the operation completed +- **show**: when false, the UI will not be shown +- **plugins**: a list of plugin names to run the operation on +- **concurrency**: limit the `number` of concurrently running tasks Stats API (`require("lazy").stats()`): @@ -707,34 +967,47 @@ Example of configuring lualine.nvim ~ < -USER EVENTS ~ +📆 USER EVENTS *lazy.nvim-🚀-usage-📆-user-events* The following user events will be triggered: -- **LazyDone**when lazy has finished starting up and loaded your config -- **LazySync**after running sync -- **LazyInstall**after an install -- **LazyUpdate**after an update -- **LazyClean**after a clean -- **LazyCheck**after checking for updates -- **LazyLog**after running log -- **LazyLoad**after loading a plugin. The `data` attribute will contain the plugin name. -- **LazySyncPre**before running sync -- **LazyInstallPre**before an install -- **LazyUpdatePre**before an update -- **LazyCleanPre**before a clean -- **LazyCheckPre**before checking for updates -- **LazyLogPre**before running log -- **LazyReload**triggered by change detection after reloading plugin specs -- **VeryLazy**triggered after `LazyDone` and processing `VimEnter` auto commands -- **LazyVimStarted**triggered after `UIEnter` when `require("lazy").stats().startuptime` has been calculated. +- **LazyDone**: when lazy has finished starting up and loaded your config +- **LazySync**: after running sync +- **LazyInstall**: after an install +- **LazyUpdate**: after an update +- **LazyClean**: after a clean +- **LazyCheck**: after checking for updates +- **LazyLog**: after running log +- **LazyLoad**: after loading a plugin. The `data` attribute will contain the plugin name. +- **LazySyncPre**: before running sync +- **LazyInstallPre**: before an install +- **LazyUpdatePre**: before an update +- **LazyCleanPre**: before a clean +- **LazyCheckPre**: before checking for updates +- **LazyLogPre**: before running log +- **LazyReload**: triggered by change detection after reloading plugin specs +- **VeryLazy**: triggered after `LazyDone` and processing `VimEnter` auto commands +- **LazyVimStarted**: triggered after `UIEnter` when `require("lazy").stats().startuptime` has been calculated. Useful to update the startuptime on your dashboard. -LOCKFILE LAZY-LOCK.JSON *lazy.nvim-lazy.nvim-lockfile-lazy-lock.json* +❌ UNINSTALLING *lazy.nvim-🚀-usage-❌-uninstalling* -After every **update**, the local lockfile is updated with the installed -revisions. It is recommended to have this file under version control. +To uninstall **lazy.nvim**, you need to remove the following files and +directories: + +- **data**: `~/.local/share/nvim/lazy` +- **state**: `~/.local/state/nvim/lazy` +- **lockfile**: `~/.config/nvim/lazy-lock.json` + + + Paths can differ if you changed `XDG` environment variables. + +🔒 LOCKFILE *lazy.nvim-🚀-usage-🔒-lockfile* + +After every **update**, the local lockfile (`lazy-lock.json`) is updated with +the installed revisions. It is recommended to have this file under version +control. If you use your Neovim config on multiple machines, using the lockfile, you can ensure that the same version of every plugin is installed. @@ -743,7 +1016,49 @@ If you are on another machine, you can do `:Lazy restore`, to update all your plugins to the version from the lockfile. -PERFORMANCE *lazy.nvim-lazy.nvim-performance* +📦 MIGRATION GUIDE *lazy.nvim-🚀-usage-📦-migration-guide* + + +PACKER.NVIM ~ + +- `setup` ➡️ `init` +- `requires` ➡️ `dependencies` +- `as` ➡️ `name` +- `opt` ➡️ `lazy` +- `run` ➡️ `build` +- `lock` ➡️ `pin` +- `disable=true` ➡️ `enabled = false` +- `tag='*'` ➡️ `version="*"` +- `after` is **not needed** for most use-cases. Use `dependencies` otherwise. +- `wants` is **not needed** for most use-cases. Use `dependencies` otherwise. +- `config` don’t support string type, use `fun(LazyPlugin)` instead. +- `module` is auto-loaded. No need to specify +- `keys` spec is |lazy.nvim-different| +- `rtp` can be accomplished with: + +>lua + config = function(plugin) + vim.opt.rtp:append(plugin.dir .. "/custom-rtp") + end +< + +With packer `wants`, `requires` and `after` can be used to manage dependencies. +With lazy, this isn’t needed for most of the Lua dependencies. They can be +installed just like normal plugins (even with `lazy=true`) and will be loaded +when other plugins need them. The `dependencies` key can be used to group those +required plugins with the one that requires them. The plugins which are added +as `dependencies` will always be lazy-loaded and loaded when the plugin is +loaded. + + +PAQ-NVIM ~ + +- `as` ➡️ `name` +- `opt` ➡️ `lazy` +- `run` ➡️ `build` + + +⚡ PROFILING & DEBUG *lazy.nvim-🚀-usage-⚡-profiling-&-debug* Great care has been taken to make the startup code (`lazy.core`) as efficient as possible. During startup, all Lua files used before `VimEnter` or @@ -758,29 +1073,13 @@ improve performance. The profiling view shows you why and how long it took to load your plugins. -DEBUG *lazy.nvim-lazy.nvim-debug* +🐛 DEBUG ~ See an overview of active lazy-loading handlers and what’s in the module cache. -STARTUP SEQUENCE *lazy.nvim-lazy.nvim-startup-sequence* - -**lazy.nvim** does **NOT** use Neovim packages and even disables plugin loading -completely (`vim.go.loadplugins = false`). It takes over the complete startup -sequence for more flexibility and better performance. - -In practice this means that step 10 of |Neovim Initialization| is done by Lazy: - -1. All the plugins’ `init()` functions are executed -2. All plugins with `lazy=false` are loaded. This includes sourcing `/plugin` and `/ftdetect` files. (`/after` will not be sourced yet) -3. All files from `/plugin` and `/ftdetect` directories in your rtp are sourced (excluding `/after`) -4. All `/after/plugin` files are sourced (this includes `/after` from plugins) - -Files from runtime directories are always sourced in alphabetical order. - - -STRUCTURING YOUR PLUGINS *lazy.nvim-lazy.nvim-structuring-your-plugins* +📂 STRUCTURING YOUR PLUGINS*lazy.nvim-🚀-usage-📂-structuring-your-plugins* Some users may want to split their plugin specs in multiple files. Instead of passing a spec table to `setup()`, you can use a Lua module. The specs from the @@ -820,7 +1119,7 @@ For a real-life example, you can check LazyVim - lazyvim.plugins contains all the plugin specs that will be loaded -IMPORTING SPECS, CONFIG & OPTS ~ +↩️ IMPORTING SPECS, CONFIG & OPTS As part of a spec, you can add `import` statements to import additional plugin modules. Both of the `setup()` calls are equivalent: @@ -852,155 +1151,21 @@ the parent spec. Any other property will override the property from the parent spec. -MIGRATION GUIDE *lazy.nvim-lazy.nvim-migration-guide* +============================================================================== +7. 📚 Plugin Developers *lazy.nvim-📚-plugin-developers* +To make it easier for users to install your plugin, you can include a package +spec in your repo. -PACKER.NVIM ~ - -- `setup` `init` -- `requires` `dependencies` -- `as` `name` -- `opt` `lazy` -- `run` `build` -- `lock` `pin` -- `disable=true` `enabled = false` -- `tag='*'` `version="*"` -- `after` is **not needed** for most use-cases. Use `dependencies` otherwise. -- `wants` is **not needed** for most use-cases. Use `dependencies` otherwise. -- `config` don’t support string type, use `fun(LazyPlugin)` instead. -- `module` is auto-loaded. No need to specify -- `keys` spec is |lazy.nvim-different| -- `rtp` can be accomplished with: - ->lua - config = function(plugin) - vim.opt.rtp:append(plugin.dir .. "/custom-rtp") - end -< - -With packer `wants`, `requires` and `after` can be used to manage dependencies. -With lazy, this isn’t needed for most of the Lua dependencies. They can be -installed just like normal plugins (even with `lazy=true`) and will be loaded -when other plugins need them. The `dependencies` key can be used to group those -required plugins with the one that requires them. The plugins which are added -as `dependencies` will always be lazy-loaded and loaded when the plugin is -loaded. - - -PAQ-NVIM ~ - -- `as` `name` -- `opt` `lazy` -- `run` `build` - - -UNINSTALLING *lazy.nvim-lazy.nvim-uninstalling* - -To uninstall **lazy.nvim**, you need to remove the following files and -directories: - -- **data**`~/.local/share/nvim/lazy` -- **state**`~/.local/state/nvim/lazy` -- **lockfile**`~/.config/nvim/lazy-lock.json` - - - Paths can differ if you changed `XDG` environment variables. - -HIGHLIGHT GROUPS *lazy.nvim-lazy.nvim-highlight-groups* - -Click to see all highlight groups ~ - - --------------------------------------------------------------------------------- - Highlight Group Default Group Description - ------------------- ------------------------ ------------------------------------ - LazyButton CursorLine - - LazyButtonActive Visual - - LazyComment Comment - - LazyCommit _@variable.builtin_ commitref - - LazyCommitIssue Number - - LazyCommitScope Italic conventional commit scope - - LazyCommitType Title conventional commit type - - LazyDimmed Conceal property - - LazyDir _@markup.link_ directory - - LazyH1 IncSearch homebutton - - LazyH2 Bold titles - - LazyLocal Constant - - LazyNoCond DiagnosticWarn unloaded icon for a plugin where - cond() was false - - LazyNormal NormalFloat - - LazyProgressDone Constant progress bar done - - LazyProgressTodo LineNr progress bar todo - - LazyProp Conceal property - - LazyReasonCmd Operator - - LazyReasonEvent Constant - - LazyReasonFt Character - - LazyReasonImport Identifier - - LazyReasonKeys Statement - - LazyReasonPlugin Special - - LazyReasonRequire _@variable.parameter_ - - LazyReasonRuntime _@macro_ - - LazyReasonSource Character - - LazyReasonStart _@variable.member_ - - LazySpecial _@punctuation.special_ - - LazyTaskError ErrorMsg taskerrors - - LazyTaskOutput MsgArea task output - - LazyUrl _@markup.link_ url - - LazyValue _@string_ valueof a property - --------------------------------------------------------------------------------- - -PLUGIN AUTHORS *lazy.nvim-lazy.nvim-plugin-authors* - -If your plugin needs a build step, you can create a file `build.lua` or -`build/init.lua` in the root of your repo. This file will be loaded when the -plugin is installed or updated. +If your plugin needs a build step, you can specify this in your **package +file**, or create a file `build.lua` or `build/init.lua` in the root of your +repo. This file will be loaded when the plugin is installed or updated. This makes it easier for users, as they no longer need to specify a `build` command. - -OTHER NEOVIM PLUGIN MANAGERS IN LUA*lazy.nvim-lazy.nvim-other-neovim-plugin-managers-in-lua* - -- pckr.nvim -- packer.nvim -- paq-nvim -- neopm -- dep -- optpack.nvim -- pact.nvim - ============================================================================== -2. Links *lazy.nvim-links* +8. Links *lazy.nvim-links* 1. *image*: https://user-images.githubusercontent.com/292349/208301737-68fb279c-ba70-43ef-a369-8c3e8367d6b1.png 2. *image*: https://user-images.githubusercontent.com/292349/208301766-5c400561-83c3-4811-9667-1ec4bb3c43b8.png diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 46fbfd5..1b5d734 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -7,8 +7,13 @@ local M = {} M.defaults = { root = vim.fn.stdpath("data") .. "/lazy", -- directory where plugins will be installed defaults = { + -- By default, only LazyVim plugins will be lazy-loaded. Your custom plugins will load during startup. + -- If you know what you're doing, you can set this to `true` to have all your custom plugins lazy-loaded by default. lazy = false, -- should plugins be lazy-loaded? - version = nil, + -- It's recommended to leave version=false for now, since a lot the plugin that support versioning, + -- have outdated releases, which may break your Neovim install. + version = nil, -- always use the latest git commit + -- version = "*", -- try installing the latest stable version for plugins that support semver -- default `cond` you can use to globally disable a lot of plugins -- when running inside vscode for example cond = nil, ---@type boolean|fun(self:LazyPlugin):boolean|nil From fd8229d6e312e83d6bafda256adf0e650b13ca01 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sun, 23 Jun 2024 22:00:48 +0200 Subject: [PATCH 056/342] fix(pkg): versioning and reload specs when pkg-cache is dirty --- lua/lazy/core/plugin.lua | 7 +++ lua/lazy/pkg/init.lua | 92 +++++++++++++++++++------------------- lua/lazy/pkg/lazy.lua | 3 +- lua/lazy/pkg/rockspec.lua | 2 +- lua/lazy/view/commands.lua | 3 +- 5 files changed, 59 insertions(+), 48 deletions(-) diff --git a/lua/lazy/core/plugin.lua b/lua/lazy/core/plugin.lua index 713e54c..878ed3f 100644 --- a/lua/lazy/core/plugin.lua +++ b/lua/lazy/core/plugin.lua @@ -1,5 +1,6 @@ local Config = require("lazy.core.config") local Meta = require("lazy.core.meta") +local Pkg = require("lazy.pkg") local Util = require("lazy.core.util") ---@class LazyCorePlugin @@ -332,6 +333,12 @@ function M.load() Util.track("state") M.update_state() Util.track() + + if Config.options.pkg.enabled and Pkg.dirty then + Pkg.update() + return M.load() + end + M.loading = false vim.api.nvim_exec_autocmds("User", { pattern = "LazyPlugins", modeline = false }) end diff --git a/lua/lazy/pkg/init.lua b/lua/lazy/pkg/init.lua index bee9b42..781f66a 100644 --- a/lua/lazy/pkg/init.lua +++ b/lua/lazy/pkg/init.lua @@ -2,6 +2,8 @@ local Config = require("lazy.core.config") local Util = require("lazy.util") local M = {} +M.VERSION = 7 +M.dirty = false ---@alias LazyPkgSpec LazySpec | fun():LazySpec @@ -10,10 +12,13 @@ local M = {} ---@field name string ---@field file string ---@field spec? LazySpec ----@field chunk? string|fun():LazySpec + +---@class LazyPkgInput: LazyPkg +---@field spec? LazySpec|fun():LazySpec +---@field code? string ---@class LazyPkgSource ----@field get fun(plugin:LazyPlugin):LazyPkg +---@field get fun(plugin:LazyPlugin):LazyPkgInput? ---@type table? M.cache = nil @@ -25,76 +30,78 @@ function M.update() sources[#sources + 1] = require("lazy.pkg." .. s) end - ---@type table - local ret = {} + M.cache = {} for _, plugin in pairs(Config.plugins) do - for _, source in ipairs(sources) do - local spec = source.get(plugin) - if spec then - spec.name = plugin.name - if type(spec.chunk) == "function" then - spec.chunk = string.dump(spec.chunk) + if plugin._.installed then + for _, source in ipairs(sources) do + local spec = source.get(plugin) + if spec then + spec.name = plugin.name + if type(spec.code) == "string" then + spec.spec = { _raw = spec.code } + spec.code = nil + end + M.cache[plugin.dir] = spec + break end - ret[plugin.dir] = spec - break end end end - local code = "return " .. Util.dump(ret) + local code = "return " .. Util.dump({ version = M.VERSION, specs = M.cache }) Util.write_file(Config.options.pkg.cache, code) + M.dirty = false M.cache = nil end local function _load() Util.track("pkg") - M.cache = {} + M.cache = nil if vim.uv.fs_stat(Config.options.pkg.cache) then Util.try(function() local chunk, err = loadfile(Config.options.pkg.cache) if not chunk then error(err) end - M.cache = chunk() + local ret = chunk() + if ret and ret.version == M.VERSION then + M.cache = ret.specs + end end, "Error loading pkg:") end + if rawget(M, "cache") then + M.dirty = false + else + M.cache = {} + M.dirty = true + end Util.track() end ----@param plugin LazyPlugin +---@param dir string ---@return LazyPkg? -function M.get(plugin) - if not M.cache then - _load() - end - - local ret = M.cache[plugin.dir] +function M.get(dir) + local ret = M.cache[dir] if not ret then return end - if ret.chunk and not ret.spec then - if type(ret.chunk) == "string" then - ret.chunk = load(ret.chunk, "@" .. plugin.dir) - end - ret.spec = ret.chunk() - ret.chunk = nil + if type(ret.spec) == "function" then + ret.spec = ret.spec() end return ret end function M.spec() - if not M.cache then - _load() - end ---@type table local ret = {} for dir in pairs(M.cache) do - local pkg = M.get({ dir = dir }) + local pkg = M.get(dir) local spec = pkg and pkg.spec if pkg and spec then spec = type(spec) == "table" and vim.deepcopy(spec) or spec + ---@cast spec LazySpec ret[dir] = { pkg.name, specs = spec } end end @@ -102,16 +109,11 @@ function M.spec() return ret end ----@param plugin LazyPlugin ----@return LazySpec? -function M.get_spec(plugin) - local pkg = M.get(plugin) - local spec = pkg and pkg.spec - if not spec then - return - end - spec = type(spec) == "table" and vim.deepcopy(spec) or spec - return { plugin.name, specs = spec } -end - -return M +return setmetatable(M, { + __index = function(_, key) + if key == "cache" then + _load() + return M.cache + end + end, +}) diff --git a/lua/lazy/pkg/lazy.lua b/lua/lazy/pkg/lazy.lua index 07b0491..9ca0637 100644 --- a/lua/lazy/pkg/lazy.lua +++ b/lua/lazy/pkg/lazy.lua @@ -16,11 +16,12 @@ function M.get(plugin) end, "`" .. M.lazy_file .. "` for **" .. plugin.name .. "** has errors:") if not chunk then Util.error("Invalid `" .. M.lazy_file .. "` for **" .. plugin.name .. "**") + return end return { source = "lazy", file = M.lazy_file, - chunk = chunk, + code = "function()\n" .. Util.read_file(file) .. "\nend", } end end diff --git a/lua/lazy/pkg/rockspec.lua b/lua/lazy/pkg/rockspec.lua index 5732fbf..c0e5ec3 100644 --- a/lua/lazy/pkg/rockspec.lua +++ b/lua/lazy/pkg/rockspec.lua @@ -46,7 +46,7 @@ function M.get(plugin) return #rocks > 0 and { source = "rockspec", - file = rockspec_file, + file = vim.fn.fnamemodify(rockspec_file, ":t"), spec = { plugin.name, rocks = rocks, diff --git a/lua/lazy/view/commands.lua b/lua/lazy/view/commands.lua index 6b828a5..9791924 100644 --- a/lua/lazy/view/commands.lua +++ b/lua/lazy/view/commands.lua @@ -34,6 +34,7 @@ M.commands = { health = function() vim.cmd.checkhealth("lazy") end, + ---@param opts ManagerOpts pkg = function(opts) local Pkg = require("lazy.pkg") Pkg.update() @@ -44,7 +45,7 @@ M.commands = { }, }) for _, plugin in pairs(opts and opts.plugins or {}) do - local spec = Pkg.get(plugin) + local spec = Pkg.get(plugin.dir) Util.info(vim.inspect(spec), { lang = "lua", title = plugin.name }) end end, From 3515cb518f61c02b41cd3a8d8135c9a5862a982f Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sun, 23 Jun 2024 22:04:32 +0200 Subject: [PATCH 057/342] fix(pkg): make sure state dir exists --- lua/lazy/pkg/init.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/lua/lazy/pkg/init.lua b/lua/lazy/pkg/init.lua index 781f66a..c43a53f 100644 --- a/lua/lazy/pkg/init.lua +++ b/lua/lazy/pkg/init.lua @@ -48,6 +48,7 @@ function M.update() end end local code = "return " .. Util.dump({ version = M.VERSION, specs = M.cache }) + vim.fn.mkdir(vim.fn.fnamemodify(Config.options.pkg.cache, ":h"), "p") Util.write_file(Config.options.pkg.cache, code) M.dirty = false M.cache = nil From 7b6ddbfc137ad5d8b178a3bbf5a1338630f30625 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sun, 23 Jun 2024 22:15:10 +0200 Subject: [PATCH 058/342] fix(pkg): automatically update pkgs when editing a pkg file --- lua/lazy/core/config.lua | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 1b5d734..a7ac3c8 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -318,9 +318,13 @@ function M.setup(opts) -- useful for plugin developers when making changes to a packspec file vim.api.nvim_create_autocmd("BufWritePost", { - pattern = "lazy.lua", + pattern = { "lazy.lua", "pkg.json", "*.rockspec" }, callback = function() - require("lazy.view.commands").cmd("pkg") + require("lazy").pkg({ + plugins = { + require("lazy.core.plugin").find(vim.uv.cwd() .. "/lua/"), + }, + }) end, }) end, From 502600d3e693bf84eb7dac753e0f6999d62fa1b0 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Mon, 24 Jun 2024 06:44:33 +0200 Subject: [PATCH 059/342] docs: fix default lazy-loading comment --- lua/lazy/core/config.lua | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index a7ac3c8..83634be 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -7,8 +7,8 @@ local M = {} M.defaults = { root = vim.fn.stdpath("data") .. "/lazy", -- directory where plugins will be installed defaults = { - -- By default, only LazyVim plugins will be lazy-loaded. Your custom plugins will load during startup. - -- If you know what you're doing, you can set this to `true` to have all your custom plugins lazy-loaded by default. + -- If you know what you're doing, you can set this to `true` to have all your plugins lazy-loaded by default. + -- Only do this if you know what you are doing, as it can lead to unexpected behavior. lazy = false, -- should plugins be lazy-loaded? -- It's recommended to leave version=false for now, since a lot the plugin that support versioning, -- have outdated releases, which may break your Neovim install. @@ -17,7 +17,6 @@ M.defaults = { -- default `cond` you can use to globally disable a lot of plugins -- when running inside vscode for example cond = nil, ---@type boolean|fun(self:LazyPlugin):boolean|nil - -- version = "*", -- enable this to try installing the latest stable versions of plugins }, -- leave nil when passing the spec as the first argument to setup() spec = nil, ---@type LazySpec From 23c2851265ca11a4e92f5f506fd154bbe5431ddb Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 24 Jun 2024 05:10:36 +0000 Subject: [PATCH 060/342] chore(build): auto-generate docs --- doc/lazy.nvim.txt | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index 14d4a16..e6fda3d 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -532,8 +532,8 @@ will be added to the plugin’s spec. { root = vim.fn.stdpath("data") .. "/lazy", -- directory where plugins will be installed defaults = { - -- By default, only LazyVim plugins will be lazy-loaded. Your custom plugins will load during startup. - -- If you know what you're doing, you can set this to `true` to have all your custom plugins lazy-loaded by default. + -- If you know what you're doing, you can set this to `true` to have all your plugins lazy-loaded by default. + -- Only do this if you know what you are doing, as it can lead to unexpected behavior. lazy = false, -- should plugins be lazy-loaded? -- It's recommended to leave version=false for now, since a lot the plugin that support versioning, -- have outdated releases, which may break your Neovim install. @@ -542,7 +542,6 @@ will be added to the plugin’s spec. -- default `cond` you can use to globally disable a lot of plugins -- when running inside vscode for example cond = nil, ---@type boolean|fun(self:LazyPlugin):boolean|nil - -- version = "*", -- enable this to try installing the latest stable versions of plugins }, -- leave nil when passing the spec as the first argument to setup() spec = nil, ---@type LazySpec From d498f81b8ca81179d82a2f20c3c4bc5935a60bee Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Mon, 24 Jun 2024 07:12:32 +0200 Subject: [PATCH 061/342] style: wording --- lua/lazy/core/config.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 83634be..1fb28bb 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -7,7 +7,7 @@ local M = {} M.defaults = { root = vim.fn.stdpath("data") .. "/lazy", -- directory where plugins will be installed defaults = { - -- If you know what you're doing, you can set this to `true` to have all your plugins lazy-loaded by default. + -- Set this to `true` to have all your plugins lazy-loaded by default. -- Only do this if you know what you are doing, as it can lead to unexpected behavior. lazy = false, -- should plugins be lazy-loaded? -- It's recommended to leave version=false for now, since a lot the plugin that support versioning, From d4c07d062dde09cf4e0f716bbf2815052783a3ba Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 24 Jun 2024 05:13:25 +0000 Subject: [PATCH 062/342] chore(build): auto-generate docs --- doc/lazy.nvim.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index e6fda3d..8562034 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -532,7 +532,7 @@ will be added to the plugin’s spec. { root = vim.fn.stdpath("data") .. "/lazy", -- directory where plugins will be installed defaults = { - -- If you know what you're doing, you can set this to `true` to have all your plugins lazy-loaded by default. + -- Set this to `true` to have all your plugins lazy-loaded by default. -- Only do this if you know what you are doing, as it can lead to unexpected behavior. lazy = false, -- should plugins be lazy-loaded? -- It's recommended to leave version=false for now, since a lot the plugin that support versioning, From b3ee5b96f242a86962371df6708bf598fed56e82 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 24 Jun 2024 06:35:54 +0000 Subject: [PATCH 063/342] chore(build): auto-generate docs --- doc/lazy.nvim.txt | 56 +++++++++++++++++++++++++++++++++-------------- 1 file changed, 40 insertions(+), 16 deletions(-) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index 8562034..ed9bcad 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -3,13 +3,15 @@ ============================================================================== Table of Contents *lazy.nvim-table-of-contents* -1. 🚀 Getting Started |lazy.nvim-🚀-getting-started| +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| -2. 🛠️ Installation |lazy.nvim-🛠️-installation| +3. 🛠️ Installation |lazy.nvim-🛠️-installation| - Structured Setup |lazy.nvim-🛠️-installation-structured-setup| - Single File Setup |lazy.nvim-🛠️-installation-single-file-setup| -3. 🔌 Plugin Spec |lazy.nvim-🔌-plugin-spec| +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| @@ -19,13 +21,13 @@ Table of Contents *lazy.nvim-table-of-contents* - Examples |lazy.nvim-🔌-plugin-spec-examples| - Lazy Loading |lazy.nvim-🔌-plugin-spec-lazy-loading| - Versioning |lazy.nvim-🔌-plugin-spec-versioning| -4. 📦 Packages |lazy.nvim-📦-packages| +5. 📦 Packages |lazy.nvim-📦-packages| - Lazy |lazy.nvim-📦-packages-lazy| - Rockspec |lazy.nvim-📦-packages-rockspec| - Packspec |lazy.nvim-📦-packages-packspec| -5. ⚙️ Configuration |lazy.nvim-⚙️-configuration| +6. ⚙️ Configuration |lazy.nvim-⚙️-configuration| - 🌈 Highlight Groups|lazy.nvim-⚙️-configuration-🌈-highlight-groups| -6. 🚀 Usage |lazy.nvim-🚀-usage| +7. 🚀 Usage |lazy.nvim-🚀-usage| - ▶️ Startup Sequence |lazy.nvim-🚀-usage-▶️-startup-sequence| - 🚀 Commands |lazy.nvim-🚀-usage-🚀-commands| - 📆 User Events |lazy.nvim-🚀-usage-📆-user-events| @@ -34,11 +36,33 @@ Table of Contents *lazy.nvim-table-of-contents* - 📦 Migration Guide |lazy.nvim-🚀-usage-📦-migration-guide| - ⚡ Profiling & Debug |lazy.nvim-🚀-usage-⚡-profiling-&-debug| - 📂 Structuring Your Plugins|lazy.nvim-🚀-usage-📂-structuring-your-plugins| -7. 📚 Plugin Developers |lazy.nvim-📚-plugin-developers| -8. Links |lazy.nvim-links| +8. 📚 Plugin Developers |lazy.nvim-📚-plugin-developers| +9. Links |lazy.nvim-links| ============================================================================== -1. 🚀 Getting Started *lazy.nvim-🚀-getting-started* +1. 📰 What’s new? *lazy.nvim-📰-what’s-new?* + + +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 lazy.nvim . The GitHub + `README.md` has been updated to point to the new website. The `vimdoc` contains + all the information that is available on the website. +- **Spec Resolution & Merging**: the code that resolves a final spec from a + plugin’s fragments has been rewritten. This should be a tiny bit faster, but + more importantly, fixes some issues and is easier to maintain. +- `rocks`: specs can now specify a list of rocks (luarocks + ) that should be installed. +- Packages can now specify their dependencies + and configuration using one of: + - **Lazy**: `lazy.lua` file + - **Rockspec**: luarocks `*-scm-1.rockspec` file + - **Packspec**: `pkg.json` (experimental, since the format is not quite there yet) + + +============================================================================== +2. 🚀 Getting Started *lazy.nvim-🚀-getting-started* **lazy.nvim** is a modern plugin manager for Neovim. @@ -72,7 +96,7 @@ Table of Contents *lazy.nvim-table-of-contents* ============================================================================== -2. 🛠️ Installation *lazy.nvim-🛠️-installation* +3. 🛠️ Installation *lazy.nvim-🛠️-installation* There are multiple ways to install **lazy.nvim**. The **Structured Setup** is the recommended way, but you can also use the **Single File Setup** if you @@ -161,7 +185,7 @@ SINGLE FILE SETUP *lazy.nvim-🛠️-installation-single-file-setup* ============================================================================== -3. 🔌 Plugin Spec *lazy.nvim-🔌-plugin-spec* +4. 🔌 Plugin Spec *lazy.nvim-🔌-plugin-spec* SPEC SOURCE *lazy.nvim-🔌-plugin-spec-spec-source* @@ -488,7 +512,7 @@ EXAMPLES ~ ============================================================================== -4. 📦 Packages *lazy.nvim-📦-packages* +5. 📦 Packages *lazy.nvim-📦-packages* **lazy.nvim** supports three ways for plugins to define their dependencies and configuration. @@ -524,7 +548,7 @@ will be added to the plugin’s spec. ============================================================================== -5. ⚙️ Configuration *lazy.nvim-⚙️-configuration* +6. ⚙️ Configuration *lazy.nvim-⚙️-configuration* **lazy.nvim** comes with the following defaults: @@ -826,7 +850,7 @@ If you don’t want to use a Nerd Font, you can replace the icons with Unicode s ----------------------------------------------------------------------- ============================================================================== -6. 🚀 Usage *lazy.nvim-🚀-usage* +7. 🚀 Usage *lazy.nvim-🚀-usage* ▶️ STARTUP SEQUENCE *lazy.nvim-🚀-usage-▶️-startup-sequence* @@ -1151,7 +1175,7 @@ spec. ============================================================================== -7. 📚 Plugin Developers *lazy.nvim-📚-plugin-developers* +8. 📚 Plugin Developers *lazy.nvim-📚-plugin-developers* To make it easier for users to install your plugin, you can include a package spec in your repo. @@ -1164,7 +1188,7 @@ This makes it easier for users, as they no longer need to specify a `build` command. ============================================================================== -8. Links *lazy.nvim-links* +9. Links *lazy.nvim-links* 1. *image*: https://user-images.githubusercontent.com/292349/208301737-68fb279c-ba70-43ef-a369-8c3e8367d6b1.png 2. *image*: https://user-images.githubusercontent.com/292349/208301766-5c400561-83c3-4811-9667-1ec4bb3c43b8.png From fcfd54835da5af64c6046060f4db62c4626d209c Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Mon, 24 Jun 2024 14:14:41 +0200 Subject: [PATCH 064/342] feat: spec.rocks is no longer needed & added support for installing any luarock --- lua/lazy/core/config.lua | 14 ------ lua/lazy/core/loader.lua | 16 +++++- lua/lazy/core/meta.lua | 32 +++++++----- lua/lazy/core/plugin.lua | 27 ++++++++-- lua/lazy/manage/init.lua | 6 +-- lua/lazy/manage/rocks.lua | 90 ---------------------------------- lua/lazy/manage/task/rocks.lua | 57 --------------------- lua/lazy/pkg/init.lua | 89 +++++++++++++++++---------------- lua/lazy/pkg/rockspec.lua | 18 +++++-- lua/lazy/types.lua | 6 +-- 10 files changed, 120 insertions(+), 235 deletions(-) delete mode 100644 lua/lazy/manage/rocks.lua delete mode 100644 lua/lazy/manage/task/rocks.lua diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 1fb28bb..624ce35 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -226,9 +226,6 @@ M.mapleader = nil ---@type string M.maplocalleader = nil ----@type {specs:string, tree:string, path:string, cpath:string} -M.rocks = {} - function M.headless() return #vim.api.nvim_list_uis() == 0 end @@ -279,17 +276,6 @@ function M.setup(opts) M.mapleader = vim.g.mapleader M.maplocalleader = vim.g.maplocalleader - M.rocks = { - specs = M.options.rocks.root .. "/specs", - tree = M.options.rocks.root .. "/tree", - path = M.options.rocks.root .. "/tree/share/lua/5.1", - cpath = M.options.rocks.root .. "/tree/lib/lua/5.1", - } - vim.fn.mkdir(M.rocks.specs, "p") - vim.fn.mkdir(M.rocks.tree, "p") - package.path = package.path .. ";" .. M.rocks.path .. "/?.lua;" .. M.rocks.path .. "/?/init.lua;" - package.cpath = package.cpath .. ";" .. M.rocks.cpath .. "/?." .. (jit.os:find("Windows") and "dll" or "so") .. ";" - if M.headless() then require("lazy.view.commands").setup() end diff --git a/lua/lazy/core/loader.lua b/lua/lazy/core/loader.lua index a0233ad..6f426d9 100644 --- a/lua/lazy/core/loader.lua +++ b/lua/lazy/core/loader.lua @@ -69,9 +69,8 @@ function M.install_missing() for _, plugin in pairs(Config.plugins) do local installed = plugin._.installed local has_errors = Plugin.has_errors(plugin) - local rocks_installed = plugin._.rocks_installed ~= false - if not has_errors and not (installed and rocks_installed) then + if not has_errors and not (installed and not plugin._.build) then for _, colorscheme in ipairs(Config.options.install.colorscheme) do if colorscheme == "default" then break @@ -344,6 +343,10 @@ function M._load(plugin, reason, opts) M.add_to_rtp(plugin) + if plugin._.pkg and plugin._.pkg.source == "rockspec" then + M.add_to_luapath(plugin) + end + if plugin.dependencies then Util.try(function() M.load(plugin.dependencies, {}) @@ -487,6 +490,15 @@ function M.add_to_rtp(plugin) vim.opt.rtp = rtp end +---@param plugin LazyPlugin +function M.add_to_luapath(plugin) + local root = Config.options.rocks.root .. "/" .. plugin.name + local path = root .. "/share/lua/5.1" + local cpath = root .. "/lib/lua/5.1" + package.path = package.path .. ";" .. path .. "/?.lua;" .. path .. "/?/init.lua;" + package.cpath = package.cpath .. ";" .. cpath .. "/?." .. (jit.os:find("Windows") and "dll" or "so") .. ";" +end + function M.source(path) Util.track({ runtime = path }) Util.try(function() diff --git a/lua/lazy/core/meta.lua b/lua/lazy/core/meta.lua index 533ec27..43bd642 100644 --- a/lua/lazy/core/meta.lua +++ b/lua/lazy/core/meta.lua @@ -33,10 +33,11 @@ function M:load_pkgs() if not Config.options.pkg.enabled then return end - local specs = Pkg.spec() - for dir, spec in pairs(specs) do - local meta, fragment = self:add(spec) + local specs = Pkg.get() + for dir, pkg in pairs(specs) do + local meta, fragment = self:add(pkg.spec) if meta and fragment then + meta._.pkg = pkg -- tag all package fragments as optional for _, fid in ipairs(meta._.frags) do local frag = self.fragments:get(fid) @@ -165,18 +166,23 @@ function M:_rebuild(name) assert(#plugin._.frags > 0, "no fragments found for plugin " .. name) + ---@type table + local done = {} for _, fid in ipairs(plugin._.frags) do - local fragment = self.fragments:get(fid) - assert(fragment, "fragment " .. fid .. " not found, for plugin " .. name) - ---@diagnostic disable-next-line: no-unknown - super = setmetatable(fragment.spec, super and { __index = super } or nil) - plugin._.dep = plugin._.dep and fragment.dep - plugin.optional = plugin.optional and (rawget(fragment.spec, "optional") == true) - plugin.url = fragment.url or plugin.url + if not done[fid] then + done[fid] = true + local fragment = self.fragments:get(fid) + assert(fragment, "fragment " .. fid .. " not found, for plugin " .. name) + ---@diagnostic disable-next-line: no-unknown + super = setmetatable(fragment.spec, super and { __index = super } or nil) + plugin._.dep = plugin._.dep and fragment.dep + plugin.optional = plugin.optional and (rawget(fragment.spec, "optional") == true) + plugin.url = fragment.url or plugin.url - -- dependencies - for _, dep in ipairs(fragment.deps or {}) do - table.insert(plugin.dependencies, self.fragments:get(dep).name) + -- dependencies + for _, dep in ipairs(fragment.deps or {}) do + table.insert(plugin.dependencies, self.fragments:get(dep).name) + end end end diff --git a/lua/lazy/core/plugin.lua b/lua/lazy/core/plugin.lua index 878ed3f..875b580 100644 --- a/lua/lazy/core/plugin.lua +++ b/lua/lazy/core/plugin.lua @@ -236,7 +236,7 @@ function M.update_state() installed[name] = nil end - require("lazy.manage.rocks").update_state() + M.update_rocks_state() Config.to_clean = {} for pack, dir_type in pairs(installed) do @@ -253,6 +253,23 @@ function M.update_state() end end +function M.update_rocks_state() + local root = Config.options.rocks.root + ---@type table + local installed = {} + Util.ls(root, function(_, name, type) + if type == "directory" then + installed[name] = name + end + end) + + for _, plugin in pairs(Config.plugins) do + if plugin._.pkg and plugin._.pkg.source == "rockspec" then + plugin._.build = not installed[plugin.name] + end + end +end + ---@param path string function M.local_spec(path) local file = vim.secure.read(path) @@ -321,11 +338,11 @@ function M.load() -- copy state. This wont do anything during startup for name, plugin in pairs(existing) do if Config.plugins[name] then - local dep = Config.plugins[name]._.dep - local frags = Config.plugins[name]._.frags + local new_state = Config.plugins[name]._ Config.plugins[name]._ = plugin._ - Config.plugins[name]._.dep = dep - Config.plugins[name]._.frags = frags + Config.plugins[name]._.dep = new_state.dep + Config.plugins[name]._.frags = new_state.frags + -- Config.plugins[name]._.tasks = new_state.tasks end end Util.track() diff --git a/lua/lazy/manage/init.lua b/lua/lazy/manage/init.lua index 3e145c8..01c9a54 100644 --- a/lua/lazy/manage/init.lua +++ b/lua/lazy/manage/init.lua @@ -82,13 +82,12 @@ function M.install(opts) pipeline = { "git.clone", { "git.checkout", lockfile = opts.lockfile }, - "rocks.install", "plugin.docs", "wait", "plugin.build", }, plugins = function(plugin) - return plugin.url and not (plugin._.installed and plugin._.rocks_installed ~= false) + return plugin.url and not (plugin._.installed and not plugin._.build) end, }, opts):wait(function() require("lazy.manage.lock").update() @@ -107,7 +106,6 @@ function M.update(opts) "git.fetch", "git.status", { "git.checkout", lockfile = opts.lockfile }, - "rocks.install", "plugin.docs", "wait", "plugin.build", @@ -224,7 +222,7 @@ function M.clear(plugins) if plugin._.tasks then ---@param task LazyTask plugin._.tasks = vim.tbl_filter(function(task) - return task:is_running() + return task:is_running() or task.error end, plugin._.tasks) end end diff --git a/lua/lazy/manage/rocks.lua b/lua/lazy/manage/rocks.lua deleted file mode 100644 index 3e1bc6e..0000000 --- a/lua/lazy/manage/rocks.lua +++ /dev/null @@ -1,90 +0,0 @@ ---# selene:allow(incorrect_standard_library_use) - -local Config = require("lazy.core.config") -local Util = require("lazy.core.util") - ----@class LazyRock ----@field plugin string ----@field name string ----@field spec string ----@field installed boolean - -local M = {} ----@type LazyRock[] -M.rocks = {} - ----@param ... string ----@return string[] -function M.args(...) - local ret = { - "--tree", - Config.rocks.tree, - "--server", - Config.options.rocks.server, - "--dev", - "--lua-version", - "5.1", - } - vim.list_extend(ret, { ... }) - return ret -end - ----@param plugin LazyPlugin -function M.get_rockspec(plugin) - local rocks = vim.tbl_map(function(rock) - return rock.name - end, plugin._.rocks) - assert(rocks and #rocks > 0, plugin.name .. " has no rocks") - local rockspec_file = Config.rocks.specs .. "/lazy-" .. plugin.name .. "-scm-1.rockspec" - require("lazy.util").write_file( - rockspec_file, - ([[ -rockspec_format = "3.0" -package = "lazy-%s" -version = "scm-1" -source = { url = "%s" } -dependencies = %s -build = { type = "builtin" } -]]):format(plugin.name, plugin.url, vim.inspect(plugin.rocks)) - ) - return rockspec_file -end - -function M.update_state() - local root = Config.rocks.tree .. "/lib/luarocks/rocks-5.1" - ---@type table - local installed = {} - Util.ls(root, function(_, name, type) - if type == "directory" then - installed[name] = name - end - end) - - ---@type LazyRock[] - local rocks = {} - M.rocks = rocks - - for _, plugin in pairs(Config.plugins) do - if plugin.rocks then - plugin._.rocks = {} - plugin._.rocks_installed = true - for _, spec in ipairs(plugin.rocks) do - spec = vim.trim(spec) - local name = spec:gsub("%s.*", "") - local rock = { - plugin = plugin.name, - name = name, - spec = spec, - installed = installed[name] ~= nil, - } - if rock.name ~= "lua" then - plugin._.rocks_installed = plugin._.rocks_installed and rock.installed - table.insert(plugin._.rocks, rock) - table.insert(rocks, rock) - end - end - end - end -end - -return M diff --git a/lua/lazy/manage/task/rocks.lua b/lua/lazy/manage/task/rocks.lua deleted file mode 100644 index b2f61bf..0000000 --- a/lua/lazy/manage/task/rocks.lua +++ /dev/null @@ -1,57 +0,0 @@ -local Rocks = require("lazy.manage.rocks") - ----@type table -local M = {} - -local running = false -local has_rocks = nil ---@type boolean? - -M.install = { - skip = function(plugin) - return plugin._.rocks_installed ~= false - end, - run = function(self) - if has_rocks == nil then - has_rocks = vim.fn.executable("luarocks") == 1 - end - if not has_rocks then - self.error = "This plugin has luarocks dependencies,\nbut the `luarocks` executable is not found.\nPlease install https://luarocks.org/ to continue.\n" - .. "luarock deps: " - .. vim.inspect(self.plugin.rocks) - return - end - - local started = false - - local function install() - started = true - self.status = "luarocks (install)" - vim.api.nvim_exec_autocmds("User", { pattern = "LazyRender", modeline = false }) - self:spawn("luarocks", { - args = Rocks.args("install", "--deps-mode", "one", "--deps-only", Rocks.get_rockspec(self.plugin)), - on_exit = function(ok) - running = false - if ok then - self.plugin._.rocks_installed = true - end - end, - }) - end - - local timer = vim.uv.new_timer() - timer:start(0, 100, function() - if not running then - running = true - timer:stop() - vim.schedule(install) - end - end) - self.status = "luarocks (pending)" - - table.insert(self._running, function() - return not started - end) - end, -} - -return M diff --git a/lua/lazy/pkg/init.lua b/lua/lazy/pkg/init.lua index c43a53f..48e755c 100644 --- a/lua/lazy/pkg/init.lua +++ b/lua/lazy/pkg/init.lua @@ -2,23 +2,28 @@ local Config = require("lazy.core.config") local Util = require("lazy.util") local M = {} -M.VERSION = 7 +M.VERSION = 8 M.dirty = false ----@alias LazyPkgSpec LazySpec | fun():LazySpec - ---@class LazyPkg ----@field source string ---@field name string +---@field dir string +---@field source "lazy" | "packspec" | "rockspec" +---@field file string +---@field spec LazyPluginSpec + +---@class LazyPkgSpec ---@field file string ---@field spec? LazySpec - ----@class LazyPkgInput: LazyPkg ----@field spec? LazySpec|fun():LazySpec ---@field code? string ---@class LazyPkgSource ----@field get fun(plugin:LazyPlugin):LazyPkgInput? +---@field name string +---@field get fun(plugin:LazyPlugin):LazyPkgSpec? + +---@class LazyPkgCache +---@field pkgs LazyPkg[] +---@field version number ---@type table? M.cache = nil @@ -27,27 +32,40 @@ function M.update() ---@type LazyPkgSource[] local sources = {} for _, s in ipairs(Config.options.pkg.sources) do - sources[#sources + 1] = require("lazy.pkg." .. s) + sources[#sources + 1] = { + name = s, + get = require("lazy.pkg." .. s).get, + } end - M.cache = {} + ---@type LazyPkgCache + local ret = { + version = M.VERSION, + pkgs = {}, + } for _, plugin in pairs(Config.plugins) do if plugin._.installed then for _, source in ipairs(sources) do local spec = source.get(plugin) if spec then - spec.name = plugin.name + ---@type LazyPkg + local pkg = { + name = plugin.name, + dir = plugin.dir, + source = source.name, + file = spec.file, + spec = spec.spec or {}, + } if type(spec.code) == "string" then - spec.spec = { _raw = spec.code } - spec.code = nil + pkg.spec = { _raw = spec.code } end - M.cache[plugin.dir] = spec + table.insert(ret.pkgs, pkg) break end end end end - local code = "return " .. Util.dump({ version = M.VERSION, specs = M.cache }) + local code = "return " .. Util.dump(ret) vim.fn.mkdir(vim.fn.fnamemodify(Config.options.pkg.cache, ":h"), "p") Util.write_file(Config.options.pkg.cache, code) M.dirty = false @@ -63,9 +81,18 @@ local function _load() if not chunk then error(err) end + ---@type LazyPkgCache? local ret = chunk() if ret and ret.version == M.VERSION then - M.cache = ret.specs + M.cache = {} + for _, pkg in ipairs(ret.pkgs) do + if type(pkg.spec) == "function" then + pkg.spec = pkg.spec() + end + -- wrap in the scope of the plugin + pkg.spec = { pkg.name, specs = pkg.spec } + M.cache[pkg.dir] = pkg + end end end, "Error loading pkg:") end @@ -80,34 +107,12 @@ end ---@param dir string ---@return LazyPkg? +---@overload fun():table function M.get(dir) - local ret = M.cache[dir] - if not ret then - return + if dir then + return M.cache[dir] end - - if type(ret.spec) == "function" then - ret.spec = ret.spec() - end - - return ret -end - -function M.spec() - ---@type table - local ret = {} - - for dir in pairs(M.cache) do - local pkg = M.get(dir) - local spec = pkg and pkg.spec - if pkg and spec then - spec = type(spec) == "table" and vim.deepcopy(spec) or spec - ---@cast spec LazySpec - ret[dir] = { pkg.name, specs = spec } - end - end - - return ret + return M.cache end return setmetatable(M, { diff --git a/lua/lazy/pkg/rockspec.lua b/lua/lazy/pkg/rockspec.lua index c0e5ec3..ba4a692 100644 --- a/lua/lazy/pkg/rockspec.lua +++ b/lua/lazy/pkg/rockspec.lua @@ -4,7 +4,7 @@ local Util = require("lazy.core.util") local M = {} -M.dev_suffix = "-scm-1.rockspec" +M.dev_suffix = "-1.rockspec" M.skip = { "lua" } ---@class RockSpec @@ -14,7 +14,7 @@ M.skip = { "lua" } ---@field dependencies string[] ---@param plugin LazyPlugin ----@return LazyPkg? +---@return LazyPkgSpec? function M.get(plugin) local rockspec_file ---@type string? Util.ls(plugin.dir, function(path, name, t) @@ -43,13 +43,21 @@ function M.get(plugin) return not vim.tbl_contains(M.skip, name) end, rockspec and rockspec.dependencies or {}) - return #rocks > 0 + local use = #rocks > 0 + use = true + + local lazy = nil + if not vim.uv.fs_stat(plugin.dir .. "/lua") then + lazy = false + end + + return use and { - source = "rockspec", file = vim.fn.fnamemodify(rockspec_file, ":t"), spec = { plugin.name, - rocks = rocks, + build = "rockspec", + lazy = lazy, }, } or nil diff --git a/lua/lazy/types.lua b/lua/lazy/types.lua index cbff124..4fd033c 100644 --- a/lua/lazy/types.lua +++ b/lua/lazy/types.lua @@ -8,6 +8,7 @@ ---@field dep? boolean True if this plugin is only in the spec as a dependency ---@field dir? string Explicit dir or dev set for this plugin ---@field dirty? boolean +---@field build? boolean ---@field frags? number[] ---@field handlers? LazyPluginHandlers ---@field installed? boolean @@ -15,13 +16,12 @@ ---@field kind? LazyPluginKind ---@field loaded? {[string]:string}|{time:number} ---@field outdated? boolean ----@field rocks? LazyRock[] ----@field rocks_installed? boolean ---@field rtp_loaded? boolean ---@field tasks? LazyTask[] ---@field updated? {from:string, to:string} ---@field updates? {from:GitInfo, to:GitInfo} ---@field working? boolean +---@field pkg? LazyPkg ---@alias PluginOpts table|fun(self:LazyPlugin, opts:table):table? @@ -29,7 +29,7 @@ ---@field init? fun(self:LazyPlugin) Will always be run ---@field deactivate? fun(self:LazyPlugin) Unload/Stop a plugin ---@field config? fun(self:LazyPlugin, opts:table)|true Will be executed when loading the plugin ----@field build? string|fun(self:LazyPlugin)|(string|fun(self:LazyPlugin))[] +---@field build? string|async fun(self:LazyPlugin)|(string|async fun(self:LazyPlugin))[] ---@field opts? PluginOpts ---@class LazyPluginHandlers From 368747bc9a314b4f0745547ebdcc3fbc4d100c0a Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Mon, 24 Jun 2024 14:16:00 +0200 Subject: [PATCH 065/342] feat(build): build files and functions are now async. use coroutine.yield to interrupt and report progress --- lua/lazy/core/config.lua | 6 --- lua/lazy/manage/task/init.lua | 26 +++++++++ lua/lazy/manage/task/plugin.lua | 96 ++++++++++++++++++++++----------- lua/lazy/util.lua | 12 +++++ 4 files changed, 102 insertions(+), 38 deletions(-) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 624ce35..0919cab 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -183,12 +183,6 @@ M.defaults = { skip_if_doc_exists = true, }, state = vim.fn.stdpath("state") .. "/lazy/state.json", -- state info for checker and other things - build = { - -- Plugins can provide a `build.lua` file that will be executed when the plugin is installed - -- or updated. When the plugin spec also has a `build` command, the plugin's `build.lua` not be - -- executed. In this case, a warning message will be shown. - warn_on_override = true, - }, -- Enable profiling of lazy.nvim. This will add some overhead, -- so only enable this when you are debugging lazy.nvim profiling = { diff --git a/lua/lazy/manage/task/init.lua b/lua/lazy/manage/task/init.lua index 2397cdf..d86ef5f 100644 --- a/lua/lazy/manage/task/init.lua +++ b/lua/lazy/manage/task/init.lua @@ -74,6 +74,32 @@ function Task:start() self:_check() end +---@param fn async fun() +function Task:async(fn) + local co = coroutine.create(fn) + local check = vim.uv.new_check() + check:start(vim.schedule_wrap(function() + local status = coroutine.status(co) + if status == "dead" then + check:stop() + self:_check() + elseif status == "suspended" then + local ok, res = coroutine.resume(co) + if not ok then + error(res) + elseif res then + self.status = res + self.output = self.output .. "\n" .. res + vim.api.nvim_exec_autocmds("User", { pattern = "LazyRender", modeline = false }) + end + end + end)) + + table.insert(self._running, function() + return check:is_active() + end) +end + ---@private function Task:_check() for _, state in ipairs(self._running) do diff --git a/lua/lazy/manage/task/plugin.lua b/lua/lazy/manage/task/plugin.lua index e058c50..cd01a25 100644 --- a/lua/lazy/manage/task/plugin.lua +++ b/lua/lazy/manage/task/plugin.lua @@ -8,25 +8,67 @@ local M = {} ---@param plugin LazyPlugin local function get_build_file(plugin) for _, path in ipairs({ "build.lua", "build/init.lua" }) do - path = plugin.dir .. "/" .. path - if Util.file_exists(path) then + if Util.file_exists(plugin.dir .. "/" .. path) then return path end end end +local B = {} + +---@param task LazyTask +function B.rockspec(task) + local root = Config.options.rocks.root .. "/" .. task.plugin.name + vim.fn.mkdir(root, "p") + task:spawn("luarocks", { + args = { + "--tree", + root, + "--server", + Config.options.rocks.server, + "--dev", + "--lua-version", + "5.1", + "make", + "--force-fast", + }, + cwd = task.plugin.dir, + }) +end + +---@param task LazyTask +---@param build string +function B.cmd(task, build) + local cmd = vim.api.nvim_parse_cmd(build:sub(2), {}) --[[@as vim.api.keyset.cmd]] + task.output = vim.api.nvim_cmd(cmd, { output = true }) +end + +---@param task LazyTask +---@param build string +function B.shell(task, build) + local shell = vim.env.SHELL or vim.o.shell + local shell_args = shell:find("cmd.exe", 1, true) and "/c" or "-c" + + task:spawn(shell, { + args = { shell_args, build }, + cwd = task.plugin.dir, + }) +end + M.build = { ---@param opts? {force:boolean} skip = function(plugin, opts) if opts and opts.force then return false end - return not (plugin._.dirty and (plugin.build or get_build_file(plugin))) + return not ((plugin._.dirty or plugin._.build) and (plugin.build or get_build_file(plugin))) end, run = function(self) vim.cmd([[silent! runtime plugin/rplugin.vim]]) - Loader.load(self.plugin, { task = "build" }) + if self.plugin.build ~= "rockspec" then + Loader.load(self.plugin, { task = "build" }) + end local builders = self.plugin.build @@ -35,39 +77,29 @@ M.build = { return end - local build_file = get_build_file(self.plugin) - if build_file then - if builders then - if Config.options.build.warn_on_override then - Util.warn( - ("Plugin **%s** provides its own build script, but you also defined a `build` command.\nThe `build.lua` file will not be used"):format( - self.plugin.name - ) - ) - end - else - builders = function() - Loader.source(build_file) - end - end - end + builders = builders or get_build_file(self.plugin) + if builders then builders = type(builders) == "table" and builders or { builders } ---@cast builders (string|fun(LazyPlugin))[] for _, build in ipairs(builders) do - if type(build) == "string" and build:sub(1, 1) == ":" then - local cmd = vim.api.nvim_parse_cmd(build:sub(2), {}) - self.output = vim.api.nvim_cmd(cmd, { output = true }) - elseif type(build) == "function" then - build(self.plugin) + if type(build) == "function" then + self:async(function() + build(self.plugin) + end) + elseif build == "rockspec" then + B.rockspec(self) + elseif build:sub(1, 1) == ":" then + B.cmd(self, build) + elseif build:match("%.lua$") then + local file = self.plugin.dir .. "/" .. build + local chunk, err = loadfile(file) + if not chunk or err then + error(err) + end + self:async(chunk) else - local shell = vim.env.SHELL or vim.o.shell - local shell_args = shell:find("cmd.exe", 1, true) and "/c" or "-c" - - self:spawn(shell, { - args = { shell_args, build }, - cwd = self.plugin.dir, - }) + B.shell(self, build) end end end diff --git a/lua/lazy/util.lua b/lua/lazy/util.lua index 755c1cd..813b4d9 100644 --- a/lua/lazy/util.lua +++ b/lua/lazy/util.lua @@ -231,6 +231,18 @@ function M.markdown(msg, opts) ) end +---@async +---@param ms number +function M.sleep(ms) + local continue = false + vim.defer_fn(function() + continue = true + end, ms) + while not continue do + coroutine.yield() + end +end + function M._dump(value, result) local t = type(value) if t == "number" or t == "boolean" then From b73c57ed9ec8e63bbb867d21a3f3a865224b25d4 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Mon, 24 Jun 2024 14:27:29 +0200 Subject: [PATCH 066/342] fix(luarocks): cleanup luarocks when deleting a plugin --- lua/lazy/manage/task/fs.lua | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/lua/lazy/manage/task/fs.lua b/lua/lazy/manage/task/fs.lua index c99c8bf..3401c29 100644 --- a/lua/lazy/manage/task/fs.lua +++ b/lua/lazy/manage/task/fs.lua @@ -4,6 +4,19 @@ local Util = require("lazy.util") ---@type table local M = {} +local function rm(dir) + local stat = vim.uv.fs_lstat(dir) + assert(stat and stat.type == "directory", dir .. " should be a directory!") + Util.walk(dir, function(path, _, type) + if type == "directory" then + vim.uv.fs_rmdir(path) + else + vim.uv.fs_unlink(path) + end + end) + vim.uv.fs_rmdir(dir) +end + M.clean = { skip = function(plugin) return plugin._.is_local @@ -11,18 +24,12 @@ M.clean = { run = function(self) local dir = self.plugin.dir:gsub("/+$", "") assert(dir:find(Config.options.root, 1, true) == 1, self.plugin.dir .. " should be under packpath!") + rm(dir) - local stat = vim.uv.fs_lstat(dir) - assert(stat and stat.type == "directory", self.plugin.dir .. " should be a directory!") - - Util.walk(dir, function(path, _, type) - if type == "directory" then - vim.uv.fs_rmdir(path) - else - vim.uv.fs_unlink(path) - end - end) - vim.uv.fs_rmdir(dir) + local rock_root = Config.options.rocks.root .. "/" .. self.plugin.name + if vim.uv.fs_stat(rock_root) then + rm(rock_root) + end self.plugin._.installed = false end, From fd04bc62f95fd26de7a6df4ad5a8088e88e35626 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 24 Jun 2024 13:12:26 +0000 Subject: [PATCH 067/342] chore(build): auto-generate docs --- doc/lazy.nvim.txt | 86 +++++++++++++++++++++++++++++++++-------------- 1 file changed, 61 insertions(+), 25 deletions(-) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index ed9bcad..b31fb4e 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -36,7 +36,9 @@ Table of Contents *lazy.nvim-table-of-contents* - 📦 Migration Guide |lazy.nvim-🚀-usage-📦-migration-guide| - ⚡ Profiling & Debug |lazy.nvim-🚀-usage-⚡-profiling-&-debug| - 📂 Structuring Your Plugins|lazy.nvim-🚀-usage-📂-structuring-your-plugins| -8. 📚 Plugin Developers |lazy.nvim-📚-plugin-developers| +8. 🔥 Developers |lazy.nvim-🔥-developers| + - Best Practices |lazy.nvim-🔥-developers-best-practices| + - Building |lazy.nvim-🔥-developers-building| 9. Links |lazy.nvim-links| ============================================================================== @@ -46,19 +48,28 @@ Table of Contents *lazy.nvim-table-of-contents* 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 lazy.nvim . The GitHub - `README.md` has been updated to point to the new website. The `vimdoc` contains - all the information that is available on the website. + documentation. Check it out at . The GitHub `README.md` + has been updated to point to the new website. The `vimdoc` contains all the + information that is available on the website. - **Spec Resolution & Merging**: the code that resolves a final spec from a plugin’s fragments has been rewritten. This should be a tiny bit faster, but more importantly, fixes some issues and is easier to maintain. -- `rocks`: specs can now specify a list of rocks (luarocks - ) that should be installed. - Packages can now specify their dependencies and configuration using one of: - **Lazy**: `lazy.lua` file - **Rockspec**: luarocks `*-scm-1.rockspec` file - **Packspec**: `pkg.json` (experimental, since the format is not quite there yet) +- Packages are not limited to just Neovim plugins. You can install any + **luarocks** package, like: + >lua + { "https://github.com/lubyk/yaml" } + < + Luarocks packages without a `/lua` directory are never lazy-loaded, since + it’s just a library. +- `build` functions or `*.lua` build files (like `build.lua`) now run + asynchronously. You can use `coroutine.yield(status_msg)` to show progress. + Yielding will also schedule the next `resume` to run in the next tick, so you + can do long-running tasks without blocking Neovim. ============================================================================== @@ -235,9 +246,9 @@ SPEC LOADING *lazy.nvim-🔌-plugin-spec-spec-loading* SPEC SETUP *lazy.nvim-🔌-plugin-spec-spec-setup* - ----------------------------------------------------------------------------------------------------- + ---------------------------------------------------------------------------------------------------- Property Type Description - ---------- ----------------------------- ------------------------------------------------------------ + ---------- ----------------------------- ----------------------------------------------------------- init fun(LazyPlugin) init functions are always executed during startup opts table or opts should be a table (will be merged with parent specs), @@ -258,15 +269,8 @@ SPEC SETUP *lazy.nvim-🔌-plugin-spec-spec-setup* config() build fun(LazyPlugin) or string or build is executed when a plugin is installed or updated. - a list of build commands Before running build, a plugin is first loaded. If it’s a - string it will be run as a shell command. When prefixed with - : it is a Neovim command. You can also specify a list to - executed multiple build commands. Some plugins provide their - own build.lua which is automatically used by lazy. So no - need to specify a build step for those plugins. - - rocks string[]? Add any luarocks dependencies. - ----------------------------------------------------------------------------------------------------- + a list of build commands See Building for more information. + ---------------------------------------------------------------------------------------------------- SPEC LAZY LOADING *lazy.nvim-🔌-plugin-spec-spec-lazy-loading* @@ -535,8 +539,8 @@ dependencies and configuration. Syntax is the same as any plugin spec. ROCKSPEC *lazy.nvim-📦-packages-rockspec* -When a plugin contains a `*-scm-1.rockspec` file, **lazy.nvim** will -automatically load its `rocks` dependencies. +When a plugin contains a `*-1.rockspec` file, **lazy.nvim** will automatically +build the rock and its dependencies. PACKSPEC *lazy.nvim-📦-packages-packspec* @@ -1175,17 +1179,49 @@ spec. ============================================================================== -8. 📚 Plugin Developers *lazy.nvim-📚-plugin-developers* +8. 🔥 Developers *lazy.nvim-🔥-developers* To make it easier for users to install your plugin, you can include a package spec in your repo. -If your plugin needs a build step, you can specify this in your **package -file**, or create a file `build.lua` or `build/init.lua` in the root of your -repo. This file will be loaded when the plugin is installed or updated. -This makes it easier for users, as they no longer need to specify a `build` -command. +BEST PRACTICES *lazy.nvim-🔥-developers-best-practices* + +- If your plugin needs `setup()`, then create a simple `lazy.lua` file like this: + >lua + return { "me/my-plugin", opts = {} } + < +- Plugins that are pure lua libraries should be lazy-loaded with `lazy = true`. + >lua + { "nvim-lua/plenary.nvim", lazy = true } + < +- Only use `dependencies` if a plugin needs the dep to be installed **AND** + loaded. Lua plugins/libraries are automatically loaded when they are + `require()`d, so they don’t need to be in `dependencies`. +- Inside a `build` function or `*.lua` build file, use + `coroutine.yield(status_msg)` to show progress. +- Don’t change the `cwd` in your build function, since builds run in parallel + and changing the `cwd` will affect other builds. + + +BUILDING *lazy.nvim-🔥-developers-building* + +The spec **build** property can be one of the following: + +- `fun(plugin: LazyPlugin)`: a function that builds the plugin. +- `*.lua`: a Lua file that builds the plugin (like `build.lua`) +- `":Command"`: a Neovim command +- `"rockspec"`: this will run `luarocks make` in the plugin’s directory + This is automatically set by the `rockspec` package source. +- any other **string** will be run as a shell command +- a `list` of any of the above to run multiple build steps +- if no `build` is specified, but a `build.lua` file exists, that will be used instead. + +Build functions and `*.lua` files run asynchronously in a coroutine. Use +`coroutine.yield(status_msg)` to show progress. Yielding will also schedule the +next `coroutine.resume()` to run in the next tick, so you can do long-running +tasks without blocking Neovim. + ============================================================================== 9. Links *lazy.nvim-links* From dbffad6f44674a3c1b23c649a0abab299d7349d8 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Mon, 24 Jun 2024 16:42:57 +0200 Subject: [PATCH 068/342] fix(fragments): prevent adding the same spec instance more than once --- lua/lazy/core/fragments.lua | 40 ++++++++++++++++++++++--------------- lua/lazy/core/meta.lua | 13 ++++++------ lua/lazy/core/plugin.lua | 19 +++++++++--------- lua/lazy/core/util.lua | 14 +++++++++++++ lua/lazy/pkg/init.lua | 16 +++++++++++---- 5 files changed, 65 insertions(+), 37 deletions(-) diff --git a/lua/lazy/core/fragments.lua b/lua/lazy/core/fragments.lua index 1ca018c..e0e6723 100644 --- a/lua/lazy/core/fragments.lua +++ b/lua/lazy/core/fragments.lua @@ -1,13 +1,5 @@ local Config = require("lazy.core.config") - -local M = {} - -M._fid = 0 - -local function next_id() - M._fid = M._fid + 1 - return M._fid -end +local Util = require("lazy.core.util") --- This class is used to manage the fragments of a plugin spec. --- It keeps track of the fragments and their relations to other fragments. @@ -17,30 +9,39 @@ end ---@field frag_stack number[] ---@field dep_stack number[] ---@field dirty table +---@field plugins table ---@field spec LazySpecLoader -local F = {} +local M = {} + +M._fid = 0 + +local function next_id() + M._fid = M._fid + 1 + return M._fid +end ---@param spec LazySpecLoader ---@return LazyFragments function M.new(spec) - local self = setmetatable({}, { __index = F }) + local self = setmetatable({}, { __index = M }) self.fragments = {} self.frag_stack = {} self.dep_stack = {} self.spec = spec self.dirty = {} + self.plugins = {} return self end ---@param id number -function F:get(id) +function M:get(id) return self.fragments[id] end --- Remove a fragment and all its children. --- This will also remove the fragment from its parent's children list. ---@param id number -function F:del(id) +function M:del(id) -- del fragment local fragment = self.fragments[id] if not fragment then @@ -55,13 +56,13 @@ function F:del(id) local parent = self.fragments[pid] if parent.frags then ---@param fid number - parent.frags = vim.tbl_filter(function(fid) + parent.frags = Util.filter(function(fid) return fid ~= id end, parent.frags) end if parent.deps then ---@param fid number - parent.deps = vim.tbl_filter(function(fid) + parent.deps = Util.filter(function(fid) return fid ~= id end, parent.deps) end @@ -81,8 +82,15 @@ end --- Add a fragment to the fragments list. --- This also resolves its name, url, dir, dependencies and child specs. ---@param plugin LazyPluginSpec -function F:add(plugin) +function M:add(plugin) + if self.plugins[plugin] then + return self.fragments[self.plugins[plugin]] + end + local id = next_id() + setmetatable(plugin, nil) + + self.plugins[plugin] = id local pid = self.frag_stack[#self.frag_stack] diff --git a/lua/lazy/core/meta.lua b/lua/lazy/core/meta.lua index 43bd642..679a16f 100644 --- a/lua/lazy/core/meta.lua +++ b/lua/lazy/core/meta.lua @@ -33,8 +33,7 @@ function M:load_pkgs() if not Config.options.pkg.enabled then return end - local specs = Pkg.get() - for dir, pkg in pairs(specs) do + for _, pkg in ipairs(Pkg.get()) do local meta, fragment = self:add(pkg.spec) if meta and fragment then meta._.pkg = pkg @@ -44,7 +43,7 @@ function M:load_pkgs() frag.spec.optional = true end -- keep track of the top-level package fragment - self.pkgs[dir] = fragment.id + self.pkgs[pkg.dir] = fragment.id end end end @@ -128,7 +127,7 @@ function M:rebuild() -- fragment was deleted, so remove it from plugin self.frag_to_meta[fid] = nil ---@param f number - meta._.frags = vim.tbl_filter(function(f) + meta._.frags = Util.filter(function(f) return f ~= fid end, meta._.frags) -- if no fragments left, delete plugin @@ -167,10 +166,10 @@ function M:_rebuild(name) assert(#plugin._.frags > 0, "no fragments found for plugin " .. name) ---@type table - local done = {} + local added = {} for _, fid in ipairs(plugin._.frags) do - if not done[fid] then - done[fid] = true + if not added[fid] then + added[fid] = true local fragment = self.fragments:get(fid) assert(fragment, "fragment " .. fid .. " not found, for plugin " .. name) ---@diagnostic disable-next-line: no-unknown diff --git a/lua/lazy/core/plugin.lua b/lua/lazy/core/plugin.lua index 875b580..e93555c 100644 --- a/lua/lazy/core/plugin.lua +++ b/lua/lazy/core/plugin.lua @@ -170,10 +170,10 @@ function Spec:import(spec) self.importing = nil return self:error( "Invalid spec module: `" - .. modname - .. "`\nExpected a `table` of specs, but a `" - .. type(mod) - .. "` was returned instead" + .. modname + .. "`\nExpected a `table` of specs, but a `" + .. type(mod) + .. "` was returned instead" ) end self:normalize(mod) @@ -216,11 +216,11 @@ function M.update_state() plugin._ = plugin._ or {} if plugin.lazy == nil then local lazy = plugin._.dep - or Config.options.defaults.lazy - or plugin.event - or plugin.keys - or plugin.ft - or plugin.cmd + or Config.options.defaults.lazy + or plugin.event + or plugin.keys + or plugin.ft + or plugin.cmd plugin.lazy = lazy and true or false end if plugin.dir:find(Config.options.root, 1, true) == 1 then @@ -342,7 +342,6 @@ function M.load() Config.plugins[name]._ = plugin._ Config.plugins[name]._.dep = new_state.dep Config.plugins[name]._.frags = new_state.frags - -- Config.plugins[name]._.tasks = new_state.tasks end end Util.track() diff --git a/lua/lazy/core/util.lua b/lua/lazy/core/util.lua index d4fa47c..0504dd8 100644 --- a/lua/lazy/core/util.lua +++ b/lua/lazy/core/util.lua @@ -28,6 +28,20 @@ function M.track(data, time) end end +---@generic T +---@param list T[] +---@param fn fun(v: T):boolean? +---@return T[] +function M.filter(fn, list) + local ret = {} + for _, v in ipairs(list) do + if fn(v) then + table.insert(ret, v) + end + end + return ret +end + ---@generic F: fun() ---@param data (string|{[string]:string})? ---@param fn F diff --git a/lua/lazy/pkg/init.lua b/lua/lazy/pkg/init.lua index 48e755c..0037b26 100644 --- a/lua/lazy/pkg/init.lua +++ b/lua/lazy/pkg/init.lua @@ -25,7 +25,7 @@ M.dirty = false ---@field pkgs LazyPkg[] ---@field version number ----@type table? +---@type LazyPkg[]? M.cache = nil function M.update() @@ -65,6 +65,9 @@ function M.update() end end end + table.sort(ret.pkgs, function(a, b) + return a.name < b.name + end) local code = "return " .. Util.dump(ret) vim.fn.mkdir(vim.fn.fnamemodify(Config.options.pkg.cache, ":h"), "p") Util.write_file(Config.options.pkg.cache, code) @@ -91,8 +94,8 @@ local function _load() end -- wrap in the scope of the plugin pkg.spec = { pkg.name, specs = pkg.spec } - M.cache[pkg.dir] = pkg end + M.cache = ret.pkgs end end, "Error loading pkg:") end @@ -107,10 +110,15 @@ end ---@param dir string ---@return LazyPkg? ----@overload fun():table +---@overload fun():LazyPkg[] function M.get(dir) if dir then - return M.cache[dir] + for _, pkg in ipairs(M.cache) do + if pkg.dir == dir then + return pkg + end + end + return end return M.cache end From 9a6c21982638b6e2ea498514baee9186c0e60d82 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Mon, 24 Jun 2024 17:07:25 +0200 Subject: [PATCH 069/342] fix(rocks): only build rockspec when it has deps or an advanced build step --- lua/lazy/pkg/init.lua | 2 +- lua/lazy/pkg/rockspec.lua | 43 ++++++++++++++++++++++++++------------- 2 files changed, 30 insertions(+), 15 deletions(-) diff --git a/lua/lazy/pkg/init.lua b/lua/lazy/pkg/init.lua index 0037b26..2d5b7d9 100644 --- a/lua/lazy/pkg/init.lua +++ b/lua/lazy/pkg/init.lua @@ -2,7 +2,7 @@ local Config = require("lazy.core.config") local Util = require("lazy.util") local M = {} -M.VERSION = 8 +M.VERSION = 10 M.dirty = false ---@class LazyPkg diff --git a/lua/lazy/pkg/rockspec.lua b/lua/lazy/pkg/rockspec.lua index ba4a692..58fc2c5 100644 --- a/lua/lazy/pkg/rockspec.lua +++ b/lua/lazy/pkg/rockspec.lua @@ -12,6 +12,7 @@ M.skip = { "lua" } ---@field package string ---@field version string ---@field dependencies string[] +---@field build? {build_type?: string, modules?: any[]} ---@param plugin LazyPlugin ---@return LazyPkgSpec? @@ -37,30 +38,44 @@ function M.get(plugin) end load() + if not rockspec then + return + end + + local has_lua = not not vim.uv.fs_stat(plugin.dir .. "/lua") + ---@param dep string local rocks = vim.tbl_filter(function(dep) local name = dep:gsub("%s.*", "") return not vim.tbl_contains(M.skip, name) - end, rockspec and rockspec.dependencies or {}) + end, rockspec.dependencies or {}) - local use = #rocks > 0 - use = true + local use = not has_lua + or #rocks > 0 + or ( + rockspec.build + and rockspec.build.build_type + and rockspec.build.build_type ~= "none" + and not (rockspec.build.build_type == "builtin" and not rockspec.build.modules) + ) + + if not use then + return + end local lazy = nil - if not vim.uv.fs_stat(plugin.dir .. "/lua") then + if not has_lua then lazy = false end - return use - and { - file = vim.fn.fnamemodify(rockspec_file, ":t"), - spec = { - plugin.name, - build = "rockspec", - lazy = lazy, - }, - } - or nil + return { + file = vim.fn.fnamemodify(rockspec_file, ":t"), + spec = { + plugin.name, + build = "rockspec", + lazy = lazy, + }, + } or nil end return M From eb26e95debd7056d8c7e6e2859b5a21e522b11c4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 24 Jun 2024 15:14:48 +0000 Subject: [PATCH 070/342] chore(build): auto-generate docs --- doc/lazy.nvim.txt | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index b31fb4e..d16353c 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -542,6 +542,12 @@ ROCKSPEC *lazy.nvim-📦-packages-rockspec* When a plugin contains a `*-1.rockspec` file, **lazy.nvim** will automatically build the rock and its dependencies. +A **rockspec** will only be used if one of the following is true: + +- the package does not have a `/lua` directory +- the package has a complex build step +- the package has dependencies (excluding `lua`) + PACKSPEC *lazy.nvim-📦-packages-packspec* @@ -736,12 +742,6 @@ will be added to the plugin’s spec. skip_if_doc_exists = true, }, state = vim.fn.stdpath("state") .. "/lazy/state.json", -- state info for checker and other things - build = { - -- Plugins can provide a `build.lua` file that will be executed when the plugin is installed - -- or updated. When the plugin spec also has a `build` command, the plugin's `build.lua` not be - -- executed. In this case, a warning message will be shown. - warn_on_override = true, - }, -- Enable profiling of lazy.nvim. This will add some overhead, -- so only enable this when you are debugging lazy.nvim profiling = { From c33b9fbf8d314ac972772792391a5ddd3df933e8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 24 Jun 2024 17:16:50 +0200 Subject: [PATCH 071/342] chore(main): release 11.0.0 (#1537) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 30 +++++++++++++++++++++++++++ lua/lazy/core/config.lua | 2 +- 3 files changed, 32 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index 5596560..4981afa 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "10.24.3" + ".": "11.0.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 1ad4080..61c2a44 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,35 @@ # Changelog +## [11.0.0](https://github.com/folke/lazy.nvim/compare/v10.24.3...v11.0.0) (2024-06-24) + + +### ⚠ BREAKING CHANGES + +* new docs for v11.0 + +### Features + +* added support for plugin packages by lazy, rockspec and packspec ([3be55a4](https://github.com/folke/lazy.nvim/commit/3be55a46158cde17e2b853e531d260f3738a5346)) +* **build:** build files and functions are now async. use coroutine.yield to interrupt and report progress ([368747b](https://github.com/folke/lazy.nvim/commit/368747bc9a314b4f0745547ebdcc3fbc4d100c0a)) +* luarocks support ([f1ba2e3](https://github.com/folke/lazy.nvim/commit/f1ba2e3d057ae5c03d04134a9d538d0b2251f13b)) +* **meta:** check for dir changes for plugins already added to the rtp ([ee2ca39](https://github.com/folke/lazy.nvim/commit/ee2ca39f672a2d6f4cbb683b525e6b3d91f3fc0c)) +* new docs for v11.0 ([183f59e](https://github.com/folke/lazy.nvim/commit/183f59e2e85dea0c38ed7d16c7c7e543c0b739c7)) +* packspec ([8eba74c](https://github.com/folke/lazy.nvim/commit/8eba74c3fc41e1a364225f744022f8b3ff11d796)) +* **pkg:** import package specs in the scope of the plugin ([c1912e2](https://github.com/folke/lazy.nvim/commit/c1912e23481ba72a8d8f7a5c736f5e2547e6853e)) +* rewrite of spec resolving ([75ffe56](https://github.com/folke/lazy.nvim/commit/75ffe56f70faac43f077796b91178d2f1419f8ce)) +* spec.rocks is no longer needed & added support for installing any luarock ([fcfd548](https://github.com/folke/lazy.nvim/commit/fcfd54835da5af64c6046060f4db62c4626d209c)) + + +### Bug Fixes + +* **fragments:** prevent adding the same spec instance more than once ([dbffad6](https://github.com/folke/lazy.nvim/commit/dbffad6f44674a3c1b23c649a0abab299d7349d8)) +* **luarocks:** cleanup luarocks when deleting a plugin ([b73c57e](https://github.com/folke/lazy.nvim/commit/b73c57ed9ec8e63bbb867d21a3f3a865224b25d4)) +* **pkg:** automatically update pkgs when editing a pkg file ([7b6ddbf](https://github.com/folke/lazy.nvim/commit/7b6ddbfc137ad5d8b178a3bbf5a1338630f30625)) +* **pkg:** correctly pre-load package specs and remove them when needed during resolve ([4326d4b](https://github.com/folke/lazy.nvim/commit/4326d4b487d4facc19b375ca30cd633cf56d88ed)) +* **pkg:** make sure state dir exists ([3515cb5](https://github.com/folke/lazy.nvim/commit/3515cb518f61c02b41cd3a8d8135c9a5862a982f)) +* **pkg:** versioning and reload specs when pkg-cache is dirty ([fd8229d](https://github.com/folke/lazy.nvim/commit/fd8229d6e312e83d6bafda256adf0e650b13ca01)) +* **rocks:** only build rockspec when it has deps or an advanced build step ([9a6c219](https://github.com/folke/lazy.nvim/commit/9a6c21982638b6e2ea498514baee9186c0e60d82)) + ## [10.24.3](https://github.com/folke/lazy.nvim/compare/v10.24.2...v10.24.3) (2024-06-23) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 0919cab..7aa69b4 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -195,7 +195,7 @@ M.defaults = { debug = false, } -M.version = "10.24.3" -- x-release-please-version +M.version = "11.0.0" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 146de4e801f9169e79052a51365eaae789094611 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Mon, 24 Jun 2024 17:36:59 +0200 Subject: [PATCH 072/342] fix(rocks): dont trigger rebuild for luarocks when build is overriden --- lua/lazy/core/plugin.lua | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/lua/lazy/core/plugin.lua b/lua/lazy/core/plugin.lua index e93555c..f409294 100644 --- a/lua/lazy/core/plugin.lua +++ b/lua/lazy/core/plugin.lua @@ -170,10 +170,10 @@ function Spec:import(spec) self.importing = nil return self:error( "Invalid spec module: `" - .. modname - .. "`\nExpected a `table` of specs, but a `" - .. type(mod) - .. "` was returned instead" + .. modname + .. "`\nExpected a `table` of specs, but a `" + .. type(mod) + .. "` was returned instead" ) end self:normalize(mod) @@ -216,11 +216,11 @@ function M.update_state() plugin._ = plugin._ or {} if plugin.lazy == nil then local lazy = plugin._.dep - or Config.options.defaults.lazy - or plugin.event - or plugin.keys - or plugin.ft - or plugin.cmd + or Config.options.defaults.lazy + or plugin.event + or plugin.keys + or plugin.ft + or plugin.cmd plugin.lazy = lazy and true or false end if plugin.dir:find(Config.options.root, 1, true) == 1 then @@ -264,7 +264,7 @@ function M.update_rocks_state() end) for _, plugin in pairs(Config.plugins) do - if plugin._.pkg and plugin._.pkg.source == "rockspec" then + if plugin._.pkg and plugin._.pkg.source == "rockspec" and plugin.build == "rockspec" then plugin._.build = not installed[plugin.name] end end From 7f52977c1dda8fd1301f5d8a78ce154d52fd82be Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 24 Jun 2024 17:39:01 +0200 Subject: [PATCH 073/342] chore(main): release 11.0.1 (#1538) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 7 +++++++ lua/lazy/core/config.lua | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index 4981afa..c656ffb 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "11.0.0" + ".": "11.0.1" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 61c2a44..060e1cd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [11.0.1](https://github.com/folke/lazy.nvim/compare/v11.0.0...v11.0.1) (2024-06-24) + + +### Bug Fixes + +* **rocks:** dont trigger rebuild for luarocks when build is overriden ([146de4e](https://github.com/folke/lazy.nvim/commit/146de4e801f9169e79052a51365eaae789094611)) + ## [11.0.0](https://github.com/folke/lazy.nvim/compare/v10.24.3...v11.0.0) (2024-06-24) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 7aa69b4..3c81704 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -195,7 +195,7 @@ M.defaults = { debug = false, } -M.version = "11.0.0" -- x-release-please-version +M.version = "11.0.1" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From cd3581efd125c3a246a730cd0a2f7683461f486d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 24 Jun 2024 15:42:27 +0000 Subject: [PATCH 074/342] chore(build): auto-generate docs --- README.md | 2 ++ doc/lazy.nvim.txt | 2 ++ 2 files changed, 4 insertions(+) diff --git a/README.md b/README.md index a950b94..7403668 100644 --- a/README.md +++ b/README.md @@ -61,6 +61,8 @@ - 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. ## 🚀 Getting Started diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index d16353c..a81b0f5 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -104,6 +104,8 @@ Table of Contents *lazy.nvim-table-of-contents* - Neovim >= **0.8.0** (needs to be built with **LuaJIT**) - Git >= **2.19.0** (for partial clones support) - a Nerd Font **(optional)** +- luarocks to install rockspecs. + You can remove `rockspec` from `opts.pkg.sources` to disable this feature. ============================================================================== From 79afa96b909051be1a782865171a91edd2ca71fc Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Mon, 24 Jun 2024 17:46:59 +0200 Subject: [PATCH 075/342] style: remove pkg.versions --- lua/lazy/core/config.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 3c81704..831695a 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -38,7 +38,6 @@ M.defaults = { pkg = { enabled = true, cache = vim.fn.stdpath("state") .. "/lazy/pkg-cache.lua", - versions = true, -- Honor versions in pkg sources -- the first package source that is found for a plugin will be used. sources = { "lazy", From 79c2efc8d828a8ac45495624c51ca081a3243415 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 24 Jun 2024 15:49:09 +0000 Subject: [PATCH 076/342] chore(build): auto-generate docs --- doc/lazy.nvim.txt | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index a81b0f5..22e4d4b 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -59,6 +59,29 @@ Table of Contents *lazy.nvim-table-of-contents* - **Lazy**: `lazy.lua` file - **Rockspec**: luarocks `*-scm-1.rockspec` file - **Packspec**: `pkg.json` (experimental, since the format is not quite there yet) + Related _lazy.nvim_ options: + >lua + { + pkg = { + enabled = true, + cache = vim.fn.stdpath("state") .. "/lazy/pkg-cache.lua", + -- the first package source that is found for a plugin will be used. + sources = { + "lazy", + "rockspec", + "packspec", + }, + }, + rocks = { + root = vim.fn.stdpath("data") .. "/lazy-rocks", + server = "https://nvim-neorocks.github.io/rocks-binaries/", + }, + } + < +- Installing neorg is now as simple as: + >lua + { "nvim-neorg/neorg", opts = {} } + < - Packages are not limited to just Neovim plugins. You can install any **luarocks** package, like: >lua From 0f45c0d0623b4850716898a5e399c844466690f6 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Mon, 24 Jun 2024 17:50:27 +0200 Subject: [PATCH 077/342] fix(health): added luarocks check to health --- lua/lazy/health.lua | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lua/lazy/health.lua b/lua/lazy/health.lua index 6202de6..42d7f62 100644 --- a/lua/lazy/health.lua +++ b/lua/lazy/health.lua @@ -13,9 +13,15 @@ function M.check() start("lazy.nvim") if vim.fn.executable("git") == 1 then - ok("Git installed") + ok("'git' installed") else - error("Git not installed?") + error("'git' not installed?") + end + + if vim.fn.executable("luarocks") == 1 then + ok("'luarocks' installed") + else + error("'luarocks' not installed") end local sites = vim.opt.packpath:get() From 656d3d1f5b5910e50af3d67286999ff7088ebfb6 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Mon, 24 Jun 2024 18:02:54 +0200 Subject: [PATCH 078/342] feat: show rockspec deps in plugin details --- lua/lazy/pkg/rockspec.lua | 19 +++++++++++++++++-- lua/lazy/view/render.lua | 5 +++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/lua/lazy/pkg/rockspec.lua b/lua/lazy/pkg/rockspec.lua index 58fc2c5..3d0745e 100644 --- a/lua/lazy/pkg/rockspec.lua +++ b/lua/lazy/pkg/rockspec.lua @@ -1,12 +1,27 @@ --# selene:allow(incorrect_standard_library_use) - -local Util = require("lazy.core.util") +local Config = require("lazy.core.config") +local Util = require("lazy.util") local M = {} M.dev_suffix = "-1.rockspec" M.skip = { "lua" } +---@param plugin LazyPlugin +function M.deps(plugin) + local root = Config.options.rocks.root .. "/" .. plugin.name + local manifest_file = root .. "/lib/luarocks/rocks-5.1/manifest" + local manifest = {} + local ok = pcall(function() + local load, err = loadfile(manifest_file, "t", manifest) + if not load then + error(err) + end + load() + end) + return manifest and vim.tbl_keys(manifest.repository or {}) +end + ---@class RockSpec ---@field rockspec_format string ---@field package string diff --git a/lua/lazy/view/render.lua b/lua/lazy/view/render.lua index a34456c..7d91dd8 100644 --- a/lua/lazy/view/render.lua +++ b/lua/lazy/view/render.lua @@ -511,6 +511,11 @@ function M:details(plugin) table.insert(props, { "commit", git.commit:sub(1, 7), "LazyCommit" }) end end + local rocks = require("lazy.pkg.rockspec").deps(plugin) + if not vim.tbl_isempty(rocks) then + table.insert(props, { "rocks", vim.inspect(rocks) }) + end + if Util.file_exists(plugin.dir .. "/README.md") then table.insert(props, { "readme", "README.md" }) end From 105d4805ad58875d0b0fafe1185679539b8bc69a Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Mon, 24 Jun 2024 19:38:33 +0200 Subject: [PATCH 079/342] fix(runner): sync package specs after installing and before building --- lua/lazy/core/plugin.lua | 1 + lua/lazy/manage/init.lua | 18 +++++++++--- lua/lazy/manage/runner.lua | 59 ++++++++++++++++++++++++++------------ lua/lazy/pkg/rockspec.lua | 4 +-- 4 files changed, 58 insertions(+), 24 deletions(-) diff --git a/lua/lazy/core/plugin.lua b/lua/lazy/core/plugin.lua index f409294..ecf6d64 100644 --- a/lua/lazy/core/plugin.lua +++ b/lua/lazy/core/plugin.lua @@ -342,6 +342,7 @@ function M.load() Config.plugins[name]._ = plugin._ Config.plugins[name]._.dep = new_state.dep Config.plugins[name]._.frags = new_state.frags + Config.plugins[name]._.pkg = new_state.pkg end end Util.track() diff --git a/lua/lazy/manage/init.lua b/lua/lazy/manage/init.lua index 01c9a54..9737538 100644 --- a/lua/lazy/manage/init.lua +++ b/lua/lazy/manage/init.lua @@ -83,7 +83,13 @@ function M.install(opts) "git.clone", { "git.checkout", lockfile = opts.lockfile }, "plugin.docs", - "wait", + { + "wait", + sync = function() + require("lazy.pkg").update() + Plugin.load() + end, + }, "plugin.build", }, plugins = function(plugin) @@ -92,7 +98,6 @@ function M.install(opts) }, opts):wait(function() require("lazy.manage.lock").update() require("lazy.help").update() - require("lazy.pkg").update() end) end @@ -107,7 +112,13 @@ function M.update(opts) "git.status", { "git.checkout", lockfile = opts.lockfile }, "plugin.docs", - "wait", + { + "wait", + sync = function() + require("lazy.pkg").update() + Plugin.load() + end, + }, "plugin.build", { "git.log", updated = true }, }, @@ -117,7 +128,6 @@ function M.update(opts) }, opts):wait(function() require("lazy.manage.lock").update() require("lazy.help").update() - require("lazy.pkg").update() end) end -- diff --git a/lua/lazy/manage/runner.lua b/lua/lazy/manage/runner.lua index 7e3a39d..930dbc8 100644 --- a/lua/lazy/manage/runner.lua +++ b/lua/lazy/manage/runner.lua @@ -8,13 +8,15 @@ local Util = require("lazy.util") ---@field concurrency? number ---@alias PipelineStep {task:string, opts?:TaskOptions} ----@alias LazyRunnerTask {co:thread, status: {task?:LazyTask, waiting?:boolean}, plugin: LazyPlugin} +---@alias LazyRunnerTask {co:thread, status: {task?:LazyTask, waiting?:boolean}, plugin: string} ---@class Runner ----@field _plugins LazyPlugin[] +---@field _plugins string[] ---@field _running LazyRunnerTask[] ---@field _pipeline PipelineStep[] +---@field _sync PipelineStep[] ---@field _on_done fun()[] +---@field _syncing boolean ---@field _opts RunnerOpts local Runner = {} @@ -24,13 +26,11 @@ function Runner.new(opts) self._opts = opts or {} local plugins = self._opts.plugins - if type(plugins) == "function" then - self._plugins = vim.tbl_filter(plugins, Config.plugins) - else - self._plugins = plugins or Config.plugins - end + self._plugins = vim.tbl_map(function(plugin) + return plugin.name + end, type(plugins) == "function" and vim.tbl_filter(plugins, Config.plugins) or plugins or Config.plugins) table.sort(self._plugins, function(a, b) - return a.name < b.name + return a < b end) self._running = {} self._on_done = {} @@ -40,6 +40,10 @@ function Runner.new(opts) return type(step) == "string" and { task = step } or { task = step[1], opts = step } end, self._opts.pipeline) + self._sync = vim.tbl_filter(function(step) + return step.task == "wait" + end, self._pipeline) + return self end @@ -57,14 +61,31 @@ function Runner:_resume(entry) end function Runner:resume(waiting) + if self._syncing then + return true + end if waiting then - for _, entry in ipairs(self._running) do - if entry.status then - if entry.status.waiting then - entry.status.waiting = false - entry.plugin._.working = true + local sync = self._sync[1] + table.remove(self._sync, 1) + if sync then + self._syncing = true + vim.schedule(function() + if sync.opts and type(sync.opts.sync) == "function" then + sync.opts.sync(self) end - end + for _, entry in ipairs(self._running) do + if entry.status then + if entry.status.waiting then + entry.status.waiting = false + local plugin = Config.plugins[entry.plugin] + if plugin then + plugin._.working = true + end + end + end + end + self._syncing = false + end) end end local running = 0 @@ -78,7 +99,7 @@ function Runner:resume(waiting) end end end - return running > 0 or (not waiting and self:resume(true)) + return self._syncing or running > 0 or (not waiting and self:resume(true)) end function Runner:start() @@ -88,7 +109,7 @@ function Runner:start() if ok then table.insert(self._running, { co = co, status = {}, plugin = plugin }) else - Util.error("Could not start tasks for " .. plugin.name .. "\n" .. err) + Util.error("Could not start tasks for " .. plugin .. "\n" .. err) end end @@ -107,8 +128,9 @@ function Runner:start() end ---@async ----@param plugin LazyPlugin -function Runner:run_pipeline(plugin) +---@param name string +function Runner:run_pipeline(name) + local plugin = Config.plugins[name] plugin._.working = true coroutine.yield() for _, step in ipairs(self._pipeline) do @@ -117,6 +139,7 @@ function Runner:run_pipeline(plugin) coroutine.yield({ waiting = true }) plugin._.working = true else + plugin = Config.plugins[name] or plugin local task = self:queue(plugin, step.task, step.opts) if task then coroutine.yield({ task = task }) diff --git a/lua/lazy/pkg/rockspec.lua b/lua/lazy/pkg/rockspec.lua index 3d0745e..72defae 100644 --- a/lua/lazy/pkg/rockspec.lua +++ b/lua/lazy/pkg/rockspec.lua @@ -12,14 +12,14 @@ function M.deps(plugin) local root = Config.options.rocks.root .. "/" .. plugin.name local manifest_file = root .. "/lib/luarocks/rocks-5.1/manifest" local manifest = {} - local ok = pcall(function() + pcall(function() local load, err = loadfile(manifest_file, "t", manifest) if not load then error(err) end load() end) - return manifest and vim.tbl_keys(manifest.repository or {}) + return vim.tbl_keys(manifest.repository or {}) end ---@class RockSpec From 07c067a1a82bb0988179e1887bba9df4721b3ea7 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Mon, 24 Jun 2024 19:44:07 +0200 Subject: [PATCH 080/342] feat: make it easier to disable luarocks --- lua/lazy/core/config.lua | 3 ++- lua/lazy/pkg/init.lua | 10 ++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 831695a..bb0e2fa 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -41,11 +41,12 @@ M.defaults = { -- the first package source that is found for a plugin will be used. sources = { "lazy", - "rockspec", + "rockspec", -- will only be used when rocks.enabled is true "packspec", }, }, rocks = { + enabled = true, root = vim.fn.stdpath("data") .. "/lazy-rocks", server = "https://nvim-neorocks.github.io/rocks-binaries/", }, diff --git a/lua/lazy/pkg/init.lua b/lua/lazy/pkg/init.lua index 2d5b7d9..ee0daa4 100644 --- a/lua/lazy/pkg/init.lua +++ b/lua/lazy/pkg/init.lua @@ -32,10 +32,12 @@ function M.update() ---@type LazyPkgSource[] local sources = {} for _, s in ipairs(Config.options.pkg.sources) do - sources[#sources + 1] = { - name = s, - get = require("lazy.pkg." .. s).get, - } + if s ~= "rockspec" or Config.options.rocks.enabled then + sources[#sources + 1] = { + name = s, + get = require("lazy.pkg." .. s).get, + } + end end ---@type LazyPkgCache From e3ee51b6680a116649da56f6c651d53c3e47be4e Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Mon, 24 Jun 2024 19:44:22 +0200 Subject: [PATCH 081/342] fix(health): show missing luarocks as warning --- lua/lazy/health.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/lazy/health.lua b/lua/lazy/health.lua index 42d7f62..3bfc3f5 100644 --- a/lua/lazy/health.lua +++ b/lua/lazy/health.lua @@ -21,7 +21,7 @@ function M.check() if vim.fn.executable("luarocks") == 1 then ok("'luarocks' installed") else - error("'luarocks' not installed") + warn("'luarocks' not installed") end local sites = vim.opt.packpath:get() From bd397ff1e3c5411ca4adbdbb5cc54b86b5768a6f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 24 Jun 2024 17:45:13 +0000 Subject: [PATCH 082/342] chore(build): auto-generate docs --- doc/lazy.nvim.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index 22e4d4b..ab6a6f4 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -68,11 +68,12 @@ Table of Contents *lazy.nvim-table-of-contents* -- the first package source that is found for a plugin will be used. sources = { "lazy", - "rockspec", + "rockspec", -- will only be used when rocks.enabled is true "packspec", }, }, rocks = { + enabled = true, root = vim.fn.stdpath("data") .. "/lazy-rocks", server = "https://nvim-neorocks.github.io/rocks-binaries/", }, From 77edda11bf82864585875cecb0c370e31bb06a85 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Mon, 24 Jun 2024 19:55:09 +0200 Subject: [PATCH 083/342] test: fixes --- lua/lazy/manage/runner.lua | 40 +++++++++++++++++++++++++------------- tests/manage/task_spec.lua | 2 +- 2 files changed, 27 insertions(+), 15 deletions(-) diff --git a/lua/lazy/manage/runner.lua b/lua/lazy/manage/runner.lua index 930dbc8..9b766df 100644 --- a/lua/lazy/manage/runner.lua +++ b/lua/lazy/manage/runner.lua @@ -11,7 +11,7 @@ local Util = require("lazy.util") ---@alias LazyRunnerTask {co:thread, status: {task?:LazyTask, waiting?:boolean}, plugin: string} ---@class Runner ----@field _plugins string[] +---@field _plugins table ---@field _running LazyRunnerTask[] ---@field _pipeline PipelineStep[] ---@field _sync PipelineStep[] @@ -26,12 +26,17 @@ function Runner.new(opts) self._opts = opts or {} local plugins = self._opts.plugins - self._plugins = vim.tbl_map(function(plugin) - return plugin.name - end, type(plugins) == "function" and vim.tbl_filter(plugins, Config.plugins) or plugins or Config.plugins) - table.sort(self._plugins, function(a, b) - return a < b - end) + ---@type LazyPlugin[] + local pp = {} + if type(plugins) == "function" then + pp = vim.tbl_filter(plugins, Config.plugins) + else + pp = plugins or Config.plugins + end + self._plugins = {} + for _, plugin in ipairs(pp) do + self._plugins[plugin.name] = plugin + end self._running = {} self._on_done = {} @@ -47,6 +52,10 @@ function Runner.new(opts) return self end +function Runner:plugin(name) + return Config.plugins[name] or self._plugins[name] +end + ---@param entry LazyRunnerTask function Runner:_resume(entry) if entry.status.task and not entry.status.task:is_done() then @@ -77,7 +86,7 @@ function Runner:resume(waiting) if entry.status then if entry.status.waiting then entry.status.waiting = false - local plugin = Config.plugins[entry.plugin] + local plugin = self:plugin(entry.plugin) if plugin then plugin._.working = true end @@ -103,13 +112,16 @@ function Runner:resume(waiting) end function Runner:start() - for _, plugin in pairs(self._plugins) do + ---@type string[] + local names = vim.tbl_keys(self._plugins) + table.sort(names) + for _, name in pairs(names) do local co = coroutine.create(self.run_pipeline) - local ok, err = coroutine.resume(co, self, plugin) + local ok, err = coroutine.resume(co, self, name) if ok then - table.insert(self._running, { co = co, status = {}, plugin = plugin }) + table.insert(self._running, { co = co, status = {}, plugin = name }) else - Util.error("Could not start tasks for " .. plugin .. "\n" .. err) + Util.error("Could not start tasks for " .. name .. "\n" .. err) end end @@ -130,7 +142,7 @@ end ---@async ---@param name string function Runner:run_pipeline(name) - local plugin = Config.plugins[name] + local plugin = self:plugin(name) plugin._.working = true coroutine.yield() for _, step in ipairs(self._pipeline) do @@ -139,7 +151,7 @@ function Runner:run_pipeline(name) coroutine.yield({ waiting = true }) plugin._.working = true else - plugin = Config.plugins[name] or plugin + plugin = self:plugin(name) local task = self:queue(plugin, step.task, step.opts) if task then coroutine.yield({ task = task }) diff --git a/tests/manage/task_spec.lua b/tests/manage/task_spec.lua index 76608af..bbb8704 100644 --- a/tests/manage/task_spec.lua +++ b/tests/manage/task_spec.lua @@ -102,7 +102,7 @@ describe("task", function() task:start() assert(task:is_running()) task:wait() - assert(task.output == "foo\nbar\n" or task.output == "bar\nfoo\n") + assert(task.output == "foo\nbar\n" or task.output == "bar\nfoo\n", task.output) assert(done) assert(not task.error) end) From ae4881d36e7f589124f8eb7febfc6a8b58f8e027 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Mon, 24 Jun 2024 20:03:00 +0200 Subject: [PATCH 084/342] fix(health): only check for luarocks when luarocks is enabled. --- lua/lazy/health.lua | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/lua/lazy/health.lua b/lua/lazy/health.lua index 3bfc3f5..c0a8981 100644 --- a/lua/lazy/health.lua +++ b/lua/lazy/health.lua @@ -18,10 +18,12 @@ function M.check() error("'git' not installed?") end - if vim.fn.executable("luarocks") == 1 then - ok("'luarocks' installed") - else - warn("'luarocks' not installed") + if Config.options.rocks.enabled then + if vim.fn.executable("luarocks") == 1 then + ok("'luarocks' installed") + else + error("'luarocks' not installed. Either install it or set opts.rocks.enabled = false") + end end local sites = vim.opt.packpath:get() From b6b0c4c15c8a247eb7baace4f408b76d595c448a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 24 Jun 2024 20:06:31 +0200 Subject: [PATCH 085/342] chore(main): release 11.1.0 (#1539) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 16 ++++++++++++++++ lua/lazy/core/config.lua | 2 +- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index c656ffb..8d8b6a5 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "11.0.1" + ".": "11.1.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 060e1cd..b2af7be 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,21 @@ # Changelog +## [11.1.0](https://github.com/folke/lazy.nvim/compare/v11.0.1...v11.1.0) (2024-06-24) + + +### Features + +* make it easier to disable luarocks ([07c067a](https://github.com/folke/lazy.nvim/commit/07c067a1a82bb0988179e1887bba9df4721b3ea7)) +* show rockspec deps in plugin details ([656d3d1](https://github.com/folke/lazy.nvim/commit/656d3d1f5b5910e50af3d67286999ff7088ebfb6)) + + +### Bug Fixes + +* **health:** added luarocks check to health ([0f45c0d](https://github.com/folke/lazy.nvim/commit/0f45c0d0623b4850716898a5e399c844466690f6)) +* **health:** only check for luarocks when luarocks is enabled. ([ae4881d](https://github.com/folke/lazy.nvim/commit/ae4881d36e7f589124f8eb7febfc6a8b58f8e027)) +* **health:** show missing luarocks as warning ([e3ee51b](https://github.com/folke/lazy.nvim/commit/e3ee51b6680a116649da56f6c651d53c3e47be4e)) +* **runner:** sync package specs after installing and before building ([105d480](https://github.com/folke/lazy.nvim/commit/105d4805ad58875d0b0fafe1185679539b8bc69a)) + ## [11.0.1](https://github.com/folke/lazy.nvim/compare/v11.0.0...v11.0.1) (2024-06-24) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index bb0e2fa..4d1aa2b 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -195,7 +195,7 @@ M.defaults = { debug = false, } -M.version = "11.0.1" -- x-release-please-version +M.version = "11.1.0" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 0081c95aeea1b758568834be1ccacee7299bfb47 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Mon, 24 Jun 2024 20:22:57 +0200 Subject: [PATCH 086/342] style: allow false for build --- lua/lazy/types.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/lazy/types.lua b/lua/lazy/types.lua index 4fd033c..0a10467 100644 --- a/lua/lazy/types.lua +++ b/lua/lazy/types.lua @@ -29,7 +29,7 @@ ---@field init? fun(self:LazyPlugin) Will always be run ---@field deactivate? fun(self:LazyPlugin) Unload/Stop a plugin ---@field config? fun(self:LazyPlugin, opts:table)|true Will be executed when loading the plugin ----@field build? string|async fun(self:LazyPlugin)|(string|async fun(self:LazyPlugin))[] +---@field build? false|string|async fun(self:LazyPlugin)|(string|async fun(self:LazyPlugin))[] ---@field opts? PluginOpts ---@class LazyPluginHandlers From 972baa615b89e84a67faa62f364c9bf2d18f1736 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 24 Jun 2024 18:23:56 +0000 Subject: [PATCH 087/342] chore(build): auto-generate docs --- doc/lazy.nvim.txt | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index ab6a6f4..e88747b 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -272,9 +272,9 @@ SPEC LOADING *lazy.nvim-🔌-plugin-spec-spec-loading* SPEC SETUP *lazy.nvim-🔌-plugin-spec-spec-setup* - ---------------------------------------------------------------------------------------------------- + --------------------------------------------------------------------------------------------------- Property Type Description - ---------- ----------------------------- ----------------------------------------------------------- + ---------- ----------------------------- ---------------------------------------------------------- init fun(LazyPlugin) init functions are always executed during startup opts table or opts should be a table (will be merged with parent specs), @@ -285,18 +285,19 @@ SPEC SETUP *lazy.nvim-🔌-plugin-spec-spec-setup* config fun(LazyPlugin, opts:table) config is executed when the plugin loads. The default or true implementation will automatically run require(MAIN).setup(opts) if opts or config = true is set. - Lazy uses several heuristics to determine the plugin’s MAIN - module automatically based on the plugin’s name. See also - opts. To use the default implementation without opts set - config to true. + Lazy uses several heuristics to determine the plugin’s + MAIN module automatically based on the plugin’s name. See + also opts. To use the default implementation without opts + set config to true. main string? You can specify the main module to use for config() and - opts(), in case it can not be determined automatically. See - config() + opts(), in case it can not be determined automatically. + See config() build fun(LazyPlugin) or string or build is executed when a plugin is installed or updated. - a list of build commands See Building for more information. - ---------------------------------------------------------------------------------------------------- + false or a list of build See Building for more information. + commands + --------------------------------------------------------------------------------------------------- SPEC LAZY LOADING *lazy.nvim-🔌-plugin-spec-spec-lazy-loading* From 1446f6cfbb4ca0a7ee0baf3acc86ab5e4be5ab22 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Mon, 24 Jun 2024 21:56:43 +0200 Subject: [PATCH 088/342] perf: minimize meta rebuild when loading specs --- lua/lazy/core/loader.lua | 10 ++++++++-- lua/lazy/core/meta.lua | 16 ++++++++++++++- lua/lazy/core/plugin.lua | 11 ++++++++-- lua/lazy/core/util.lua | 43 ++++++++++++++++++++++++++++++++-------- 4 files changed, 67 insertions(+), 13 deletions(-) diff --git a/lua/lazy/core/loader.lua b/lua/lazy/core/loader.lua index 6f426d9..7209362 100644 --- a/lua/lazy/core/loader.lua +++ b/lua/lazy/core/loader.lua @@ -524,7 +524,7 @@ function M.colorscheme(name) end function M.auto_load(modname, modpath) - local plugin = Plugin.find(modpath) + local plugin = Plugin.find(modpath, { fast = not M.did_handlers }) if plugin and modpath:find(plugin.dir, 1, true) == 1 then plugin._.rtp_loaded = true -- don't load if: @@ -545,8 +545,14 @@ end ---@param modname string function M.loader(modname) - local paths = Util.get_unloaded_rtp(modname) + local paths, cached = Util.get_unloaded_rtp(modname, { cache = true }) local ret = Cache.find(modname, { rtp = false, paths = paths })[1] + + if not ret and cached then + paths = Util.get_unloaded_rtp(modname) + ret = Cache.find(modname, { rtp = false, paths = paths })[1] + end + if ret then M.auto_load(modname, ret.modpath) local mod = package.loaded[modname] diff --git a/lua/lazy/core/meta.lua b/lua/lazy/core/meta.lua index 679a16f..4645f1b 100644 --- a/lua/lazy/core/meta.lua +++ b/lua/lazy/core/meta.lua @@ -117,6 +117,14 @@ end --- Rebuild all plugins based on dirty fragments, --- or dirty plugins. Will remove plugins that no longer have fragments. function M:rebuild() + local frag_count = vim.tbl_count(self.fragments.dirty) + local plugin_count = vim.tbl_count(self.dirty) + if frag_count == 0 and plugin_count == 0 then + return + end + if Config.options.debug then + Util.track("rebuild plugins frags=" .. frag_count .. " plugins=" .. plugin_count) + end for fid in pairs(self.fragments.dirty) do local meta = self.frag_to_meta[fid] if meta then @@ -143,6 +151,9 @@ function M:rebuild() for n, _ in pairs(self.dirty) do self:_rebuild(n) end + if Config.options.debug then + Util.track() + end end --- Rebuild a single plugin. @@ -150,6 +161,10 @@ end --- This also resolves dependencies, dep, optional, dir, dev, and url. ---@param name string function M:_rebuild(name) + if not self.dirty[name] then + return + end + self.dirty[name] = nil local plugin = self.plugins[name] if not plugin or #plugin._.frags == 0 then self.plugins[name] = nil @@ -225,7 +240,6 @@ function M:_rebuild(name) setmetatable(plugin, { __index = super }) - self.dirty[plugin.name] = nil return plugin end diff --git a/lua/lazy/core/plugin.lua b/lua/lazy/core/plugin.lua index ecf6d64..062d5d2 100644 --- a/lua/lazy/core/plugin.lua +++ b/lua/lazy/core/plugin.lua @@ -362,17 +362,24 @@ end -- Finds the plugin that has this path ---@param path string -function M.find(path) +---@param opts? {fast?:boolean} +function M.find(path, opts) if not Config.spec then return end + opts = opts or {} local lua = path:find("/lua/", 1, true) if lua then local name = path:sub(1, lua - 1) local slash = name:reverse():find("/", 1, true) if slash then name = name:sub(#name - slash + 2) - return name and Config.plugins[name] or Config.spec.plugins[name] or nil + if name then + if opts.fast then + return Config.spec.meta.plugins[name] + end + return Config.spec.plugins[name] + end end end end diff --git a/lua/lazy/core/util.lua b/lua/lazy/core/util.lua index 0504dd8..9a65a85 100644 --- a/lua/lazy/core/util.lua +++ b/lua/lazy/core/util.lua @@ -238,18 +238,33 @@ function M.walkmods(root, fn, modname) end ---@param modname string -function M.get_unloaded_rtp(modname) - modname = modname:gsub("/", ".") - local idx = modname:find(".", 1, true) - local topmod = idx and modname:sub(1, idx - 1) or modname - topmod = M.normname(topmod) +---@return string +function M.topmod(modname) + return modname:match("^[^./]+") or modname +end +---@type table +M.unloaded_cache = {} + +---@param modname string +---@param opts? {cache?:boolean} +function M.get_unloaded_rtp(modname, opts) + opts = opts or {} + + local topmod = M.topmod(modname) + if opts.cache and M.unloaded_cache[topmod] then + return M.unloaded_cache[topmod], true + end + + local norm = M.normname(topmod) + + ---@type string[] local rtp = {} local Config = require("lazy.core.config") if Config.spec then for _, plugin in pairs(Config.spec.plugins) do if not (plugin._.loaded or plugin.module == false) then - if topmod == M.normname(plugin.name) then + if norm == M.normname(plugin.name) then table.insert(rtp, 1, plugin.dir) else table.insert(rtp, plugin.dir) @@ -257,15 +272,27 @@ function M.get_unloaded_rtp(modname) end end end - return rtp + M.unloaded_cache[topmod] = rtp + return rtp, false end function M.find_root(modname) + local paths, cached = M.get_unloaded_rtp(modname, { cache = true }) + local ret = require("lazy.core.cache").find(modname, { rtp = true, - paths = M.get_unloaded_rtp(modname), + paths = paths, patterns = { "", ".lua" }, })[1] + + if not ret and cached then + paths = M.get_unloaded_rtp(modname) + ret = require("lazy.core.cache").find(modname, { + rtp = false, + paths = paths, + patterns = { "", ".lua" }, + })[1] + end if ret then local root = ret.modpath:gsub("/init%.lua$", ""):gsub("%.lua$", "") return root From a089d43dba7438532c56e1c582c5974713bd48f8 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Mon, 24 Jun 2024 21:57:34 +0200 Subject: [PATCH 089/342] feat: rewrite some known plugins to lazy specs instead of luarocks (plenary.nvim). Closes #1540 --- lua/lazy/pkg/init.lua | 3 ++- lua/lazy/pkg/rockspec.lua | 27 ++++++++++++++++++++++++++- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/lua/lazy/pkg/init.lua b/lua/lazy/pkg/init.lua index ee0daa4..a81ab9c 100644 --- a/lua/lazy/pkg/init.lua +++ b/lua/lazy/pkg/init.lua @@ -14,6 +14,7 @@ M.dirty = false ---@class LazyPkgSpec ---@field file string +---@field source? string ---@field spec? LazySpec ---@field code? string @@ -54,7 +55,7 @@ function M.update() local pkg = { name = plugin.name, dir = plugin.dir, - source = source.name, + source = spec.source or source.name, file = spec.file, spec = spec.spec or {}, } diff --git a/lua/lazy/pkg/rockspec.lua b/lua/lazy/pkg/rockspec.lua index 72defae..0eba34c 100644 --- a/lua/lazy/pkg/rockspec.lua +++ b/lua/lazy/pkg/rockspec.lua @@ -7,6 +7,10 @@ local M = {} M.dev_suffix = "-1.rockspec" M.skip = { "lua" } +M.rewrites = { + ["plenary.nvim"] = { "nvim-lua/plenary.nvim", lazy = true }, +} + ---@param plugin LazyPlugin function M.deps(plugin) local root = Config.options.rocks.root .. "/" .. plugin.name @@ -32,6 +36,14 @@ end ---@param plugin LazyPlugin ---@return LazyPkgSpec? function M.get(plugin) + if M.rewrites[plugin.name] then + return { + file = "rewrite", + source = "lazy", + spec = M.rewrites[plugin.name], + } + end + local rockspec_file ---@type string? Util.ls(plugin.dir, function(path, name, t) if t == "file" and name:sub(-#M.dev_suffix) == M.dev_suffix then @@ -59,9 +71,16 @@ function M.get(plugin) local has_lua = not not vim.uv.fs_stat(plugin.dir .. "/lua") + ---@type LazyPluginSpec + local rewrites = {} + ---@param dep string local rocks = vim.tbl_filter(function(dep) local name = dep:gsub("%s.*", "") + if M.rewrites[name] then + table.insert(rewrites, M.rewrites[name]) + return false + end return not vim.tbl_contains(M.skip, name) end, rockspec.dependencies or {}) @@ -75,6 +94,12 @@ function M.get(plugin) ) if not use then + if #rewrites > 0 then + return { + file = vim.fn.fnamemodify(rockspec_file, ":t"), + spec = rewrites, + } + end return end @@ -90,7 +115,7 @@ function M.get(plugin) build = "rockspec", lazy = lazy, }, - } or nil + } end return M From 9bcbbc17a77680992fc9afcf3819f3b5c8f06bba Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 24 Jun 2024 21:59:16 +0200 Subject: [PATCH 090/342] chore(main): release 11.2.0 (#1541) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 12 ++++++++++++ lua/lazy/core/config.lua | 2 +- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index 8d8b6a5..af8cc29 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "11.1.0" + ".": "11.2.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index b2af7be..7df3b59 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,17 @@ # Changelog +## [11.2.0](https://github.com/folke/lazy.nvim/compare/v11.1.0...v11.2.0) (2024-06-24) + + +### Features + +* rewrite some known plugins to lazy specs instead of luarocks (plenary.nvim). Closes [#1540](https://github.com/folke/lazy.nvim/issues/1540) ([a089d43](https://github.com/folke/lazy.nvim/commit/a089d43dba7438532c56e1c582c5974713bd48f8)) + + +### Performance Improvements + +* minimize meta rebuild when loading specs ([1446f6c](https://github.com/folke/lazy.nvim/commit/1446f6cfbb4ca0a7ee0baf3acc86ab5e4be5ab22)) + ## [11.1.0](https://github.com/folke/lazy.nvim/compare/v11.0.1...v11.1.0) (2024-06-24) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 4d1aa2b..3312d16 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -195,7 +195,7 @@ M.defaults = { debug = false, } -M.version = "11.1.0" -- x-release-please-version +M.version = "11.2.0" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 62a47b921fbffb3c1c8088a731029ae234f98851 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Mon, 24 Jun 2024 23:42:51 +0200 Subject: [PATCH 091/342] fix(loader): no need to check plugin.dir in auto_load --- lua/lazy/core/loader.lua | 2 +- lua/lazy/pkg/init.lua | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/lua/lazy/core/loader.lua b/lua/lazy/core/loader.lua index 7209362..597933b 100644 --- a/lua/lazy/core/loader.lua +++ b/lua/lazy/core/loader.lua @@ -525,7 +525,7 @@ end function M.auto_load(modname, modpath) local plugin = Plugin.find(modpath, { fast = not M.did_handlers }) - if plugin and modpath:find(plugin.dir, 1, true) == 1 then + if plugin then plugin._.rtp_loaded = true -- don't load if: -- * handlers haven't been setup yet diff --git a/lua/lazy/pkg/init.lua b/lua/lazy/pkg/init.lua index a81ab9c..b9620ca 100644 --- a/lua/lazy/pkg/init.lua +++ b/lua/lazy/pkg/init.lua @@ -1,5 +1,5 @@ local Config = require("lazy.core.config") -local Util = require("lazy.util") +local Util = require("lazy.core.util") local M = {} M.VERSION = 10 @@ -71,9 +71,10 @@ function M.update() table.sort(ret.pkgs, function(a, b) return a.name < b.name end) - local code = "return " .. Util.dump(ret) + local U = require("lazy.util") + local code = "return " .. U.dump(ret) vim.fn.mkdir(vim.fn.fnamemodify(Config.options.pkg.cache, ":h"), "p") - Util.write_file(Config.options.pkg.cache, code) + U.write_file(Config.options.pkg.cache, code) M.dirty = false M.cache = nil end From 378bfb465673a747e9e9f966e518063499e20cfe Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 24 Jun 2024 23:44:20 +0200 Subject: [PATCH 092/342] chore(main): release 11.2.1 (#1542) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 7 +++++++ lua/lazy/core/config.lua | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index af8cc29..60f4637 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "11.2.0" + ".": "11.2.1" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 7df3b59..c19d070 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [11.2.1](https://github.com/folke/lazy.nvim/compare/v11.2.0...v11.2.1) (2024-06-24) + + +### Bug Fixes + +* **loader:** no need to check plugin.dir in auto_load ([62a47b9](https://github.com/folke/lazy.nvim/commit/62a47b921fbffb3c1c8088a731029ae234f98851)) + ## [11.2.0](https://github.com/folke/lazy.nvim/compare/v11.1.0...v11.2.0) (2024-06-24) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 3312d16..df520c8 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -195,7 +195,7 @@ M.defaults = { debug = false, } -M.version = "11.2.0" -- x-release-please-version +M.version = "11.2.1" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From dea1f687fe6e15eb3098557a69d44231ebcb6cf5 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Tue, 25 Jun 2024 00:31:32 +0200 Subject: [PATCH 093/342] fix(fragments): check for empty plugin names --- lua/lazy/core/fragments.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/lazy/core/fragments.lua b/lua/lazy/core/fragments.lua index e0e6723..89b83f5 100644 --- a/lua/lazy/core/fragments.lua +++ b/lua/lazy/core/fragments.lua @@ -124,7 +124,7 @@ function M:add(plugin) fragment.name = fragment.name or fragment.url and self.spec.get_name(fragment.url) or fragment.dir and self.spec.get_name(fragment.dir) - if not fragment.name then + if not fragment.name or fragment.name == "" then return self.spec:error("Invalid plugin spec " .. vim.inspect(plugin)) end From d87da7667939deff2ed8b5a3c198d9ea2e03fee4 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Tue, 25 Jun 2024 07:55:30 +0200 Subject: [PATCH 094/342] feat(rocks): use hererocks to install luarocks when luarocks is not found --- lua/lazy/core/config.lua | 2 ++ lua/lazy/core/meta.lua | 8 ++++++++ lua/lazy/core/plugin.lua | 4 +++- lua/lazy/manage/task/plugin.lua | 20 +++++++++++++++++++- lua/lazy/pkg/init.lua | 26 ++++++++++++++++++++++++++ 5 files changed, 58 insertions(+), 2 deletions(-) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index df520c8..a119737 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -49,6 +49,8 @@ M.defaults = { enabled = true, root = vim.fn.stdpath("data") .. "/lazy-rocks", server = "https://nvim-neorocks.github.io/rocks-binaries/", + -- use hererocks to install luarocks. + hererocks = vim.fn.executable("luarocks") == 0, }, dev = { ---@type string | fun(plugin: LazyPlugin): string directory where you store your local plugin projects diff --git a/lua/lazy/core/meta.lua b/lua/lazy/core/meta.lua index 4645f1b..6978d96 100644 --- a/lua/lazy/core/meta.lua +++ b/lua/lazy/core/meta.lua @@ -33,7 +33,9 @@ function M:load_pkgs() if not Config.options.pkg.enabled then return end + local have_rockspec = false for _, pkg in ipairs(Pkg.get()) do + have_rockspec = have_rockspec or pkg.source == "rockspec" local meta, fragment = self:add(pkg.spec) if meta and fragment then meta._.pkg = pkg @@ -46,6 +48,12 @@ function M:load_pkgs() self.pkgs[pkg.dir] = fragment.id end end + if have_rockspec then + local hererocks = Pkg.hererocks() + if hererocks then + self:add(hererocks) + end + end end --- Remove a plugin and all its fragments. diff --git a/lua/lazy/core/plugin.lua b/lua/lazy/core/plugin.lua index 062d5d2..cfc7b62 100644 --- a/lua/lazy/core/plugin.lua +++ b/lua/lazy/core/plugin.lua @@ -264,8 +264,10 @@ function M.update_rocks_state() end) for _, plugin in pairs(Config.plugins) do - if plugin._.pkg and plugin._.pkg.source == "rockspec" and plugin.build == "rockspec" then + if plugin.build == "rockspec" then plugin._.build = not installed[plugin.name] + elseif plugin.name == "hererocks" then + plugin._.build = not vim.uv.fs_stat(Config.options.rocks.root .. "/hererocks") end end end diff --git a/lua/lazy/manage/task/plugin.lua b/lua/lazy/manage/task/plugin.lua index cd01a25..6803722 100644 --- a/lua/lazy/manage/task/plugin.lua +++ b/lua/lazy/manage/task/plugin.lua @@ -18,8 +18,25 @@ local B = {} ---@param task LazyTask function B.rockspec(task) + ---@type table + local env = {} + + if Config.options.rocks.hererocks then + local hererocks = Config.options.rocks.root .. "/hererocks" + local sep = jit.os:find("Windows") and ";" or ":" + local path = vim.split(vim.env.PATH, sep) + table.insert(path, 1, hererocks .. "/bin") + env = { + PATH = table.concat(path, sep), + } + local plugin = Config.plugins.hererocks + -- hererocks is still building, so skip for now + if plugin and plugin._.build then + return + end + end + local root = Config.options.rocks.root .. "/" .. task.plugin.name - vim.fn.mkdir(root, "p") task:spawn("luarocks", { args = { "--tree", @@ -33,6 +50,7 @@ function B.rockspec(task) "--force-fast", }, cwd = task.plugin.dir, + env = env, }) end diff --git a/lua/lazy/pkg/init.lua b/lua/lazy/pkg/init.lua index b9620ca..3a7dd4c 100644 --- a/lua/lazy/pkg/init.lua +++ b/lua/lazy/pkg/init.lua @@ -112,6 +112,32 @@ local function _load() Util.track() end +---@return LazyPluginSpec?, string? +function M.hererocks() + if not (Config.options.rocks.enabled and Config.options.rocks.hererocks) then + return + end + + local root = Config.options.rocks.root .. "/hererocks" + + local cmd = { + "python", + "hererocks.py", + "--verbose", + "-l", + "5.1", + "-r", + "latest", + root, + } + + return { + "luarocks/hererocks", + lazy = true, + build = table.concat(cmd, " "), + }, root +end + ---@param dir string ---@return LazyPkg? ---@overload fun():LazyPkg[] From 0a5839ceeaec6d550f0e8d425d4a478daac176ce Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 25 Jun 2024 05:58:24 +0000 Subject: [PATCH 095/342] chore(build): auto-generate docs --- doc/lazy.nvim.txt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index e88747b..64dac25 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -624,17 +624,19 @@ will be added to the plugin’s spec. pkg = { enabled = true, cache = vim.fn.stdpath("state") .. "/lazy/pkg-cache.lua", - versions = true, -- Honor versions in pkg sources -- the first package source that is found for a plugin will be used. sources = { "lazy", - "rockspec", + "rockspec", -- will only be used when rocks.enabled is true "packspec", }, }, rocks = { + enabled = true, root = vim.fn.stdpath("data") .. "/lazy-rocks", server = "https://nvim-neorocks.github.io/rocks-binaries/", + -- use hererocks to install luarocks. + hererocks = vim.fn.executable("luarocks") == 0, }, dev = { ---@type string | fun(plugin: LazyPlugin): string directory where you store your local plugin projects From 45cd8d3f0fab197e6e0391cffa38879bdda4c2cd Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Tue, 25 Jun 2024 06:40:50 +0200 Subject: [PATCH 096/342] fix(rocks): hererocks paths on windows --- lua/lazy/manage/task/plugin.lua | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/lua/lazy/manage/task/plugin.lua b/lua/lazy/manage/task/plugin.lua index 6803722..cfdf8e0 100644 --- a/lua/lazy/manage/task/plugin.lua +++ b/lua/lazy/manage/task/plugin.lua @@ -21,14 +21,22 @@ function B.rockspec(task) ---@type table local env = {} + local luarocks = "luarocks" if Config.options.rocks.hererocks then - local hererocks = Config.options.rocks.root .. "/hererocks" - local sep = jit.os:find("Windows") and ";" or ":" + local is_win = jit.os:find("Windows") + local sep = is_win and ";" or ":" + local hererocks = Config.options.rocks.root .. "/hererocks/bin" + if is_win then + hererocks = hererocks:gsub("/", "\\") + end local path = vim.split(vim.env.PATH, sep) - table.insert(path, 1, hererocks .. "/bin") + table.insert(path, 1, hererocks) env = { PATH = table.concat(path, sep), } + if is_win then + luarocks = luarocks .. ".bat" + end local plugin = Config.plugins.hererocks -- hererocks is still building, so skip for now if plugin and plugin._.build then @@ -37,7 +45,7 @@ function B.rockspec(task) end local root = Config.options.rocks.root .. "/" .. task.plugin.name - task:spawn("luarocks", { + task:spawn(luarocks, { args = { "--tree", root, From 9005e8ede7ff9e6434818c32d99860d7154d0432 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 25 Jun 2024 06:48:06 +0000 Subject: [PATCH 097/342] chore(build): auto-generate docs --- doc/lazy.nvim.txt | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index 64dac25..e88747b 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -624,19 +624,17 @@ will be added to the plugin’s spec. pkg = { enabled = true, cache = vim.fn.stdpath("state") .. "/lazy/pkg-cache.lua", + versions = true, -- Honor versions in pkg sources -- the first package source that is found for a plugin will be used. sources = { "lazy", - "rockspec", -- will only be used when rocks.enabled is true + "rockspec", "packspec", }, }, rocks = { - enabled = true, root = vim.fn.stdpath("data") .. "/lazy-rocks", server = "https://nvim-neorocks.github.io/rocks-binaries/", - -- use hererocks to install luarocks. - hererocks = vim.fn.executable("luarocks") == 0, }, dev = { ---@type string | fun(plugin: LazyPlugin): string directory where you store your local plugin projects From 7d3f69104fb39d3e6e12f808204b3a7b38f86916 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Tue, 25 Jun 2024 13:23:25 +0200 Subject: [PATCH 098/342] fix(rocks): better errors / warnings when something goes wrong with luarocks --- lua/lazy/core/loader.lua | 4 +- lua/lazy/core/meta.lua | 8 -- lua/lazy/core/plugin.lua | 14 ++ lua/lazy/core/util.lua | 1 + lua/lazy/health.lua | 79 ++++++++++-- lua/lazy/manage/task/init.lua | 25 ++++ lua/lazy/manage/task/plugin.lua | 49 +------ lua/lazy/pkg/init.lua | 26 ---- lua/lazy/pkg/rockspec.lua | 218 +++++++++++++++++++++++++++----- lua/lazy/view/colors.lua | 15 ++- lua/lazy/view/render.lua | 38 +++++- 11 files changed, 336 insertions(+), 141 deletions(-) diff --git a/lua/lazy/core/loader.lua b/lua/lazy/core/loader.lua index 597933b..c5cdca2 100644 --- a/lua/lazy/core/loader.lua +++ b/lua/lazy/core/loader.lua @@ -464,10 +464,8 @@ function M.add_to_rtp(plugin) local rtp = vim.api.nvim_get_runtime_file("", true) local idx_dir, idx_after - local is_win = jit.os:find("Windows") - for i, path in ipairs(rtp) do - if is_win then + if Util.is_win then path = Util.norm(path) end if path == Config.me then diff --git a/lua/lazy/core/meta.lua b/lua/lazy/core/meta.lua index 6978d96..4645f1b 100644 --- a/lua/lazy/core/meta.lua +++ b/lua/lazy/core/meta.lua @@ -33,9 +33,7 @@ function M:load_pkgs() if not Config.options.pkg.enabled then return end - local have_rockspec = false for _, pkg in ipairs(Pkg.get()) do - have_rockspec = have_rockspec or pkg.source == "rockspec" local meta, fragment = self:add(pkg.spec) if meta and fragment then meta._.pkg = pkg @@ -48,12 +46,6 @@ function M:load_pkgs() self.pkgs[pkg.dir] = fragment.id end end - if have_rockspec then - local hererocks = Pkg.hererocks() - if hererocks then - self:add(hererocks) - end - end end --- Remove a plugin and all its fragments. diff --git a/lua/lazy/core/plugin.lua b/lua/lazy/core/plugin.lua index cfc7b62..8c746a9 100644 --- a/lua/lazy/core/plugin.lua +++ b/lua/lazy/core/plugin.lua @@ -335,6 +335,20 @@ function M.load() lazy._.loaded = {} end + -- add hererocks when enabled and needed + if Config.options.rocks.hererocks then + for _, plugin in pairs(Config.spec.plugins) do + if plugin.build == "rockspec" then + Config.spec.meta:add({ + "luarocks/hererocks", + build = "rockspec", + lazy = true, + }) + break + end + end + end + local existing = Config.plugins Config.plugins = Config.spec.plugins -- copy state. This wont do anything during startup diff --git a/lua/lazy/core/util.lua b/lua/lazy/core/util.lua index 9a65a85..f42cf6a 100644 --- a/lua/lazy/core/util.lua +++ b/lua/lazy/core/util.lua @@ -5,6 +5,7 @@ local M = {} ---@type LazyProfile[] M._profiles = { { name = "lazy" } } +M.is_win = jit.os:find("Windows") ---@param data (string|{[string]:string})? ---@param time number? diff --git a/lua/lazy/health.lua b/lua/lazy/health.lua index c0a8981..3199f75 100644 --- a/lua/lazy/health.lua +++ b/lua/lazy/health.lua @@ -8,23 +8,62 @@ local start = vim.health.start or vim.health.report_start local ok = vim.health.ok or vim.health.report_ok local warn = vim.health.warn or vim.health.report_warn local error = vim.health.error or vim.health.report_error +local info = vim.health.info or vim.health.report_info + +---@class LazyHealth +---@field error? fun(msg:string) +---@field warn? fun(msg:string) +---@field ok? fun(msg:string) + +---@class LazyHealthHave : LazyHealth +---@field version? string +---@field version_pattern? string +---@field optional? boolean + +---@param cmd string|string[] +---@param opts? LazyHealthHave +function M.have(cmd, opts) + opts = vim.tbl_extend("force", { + error = error, + warn = warn, + ok = ok, + version = "--version", + }, opts or {}) + + cmd = type(cmd) == "table" and cmd or { cmd } + ---@cast cmd string[] + ---@type string? + local found + for _, c in ipairs(cmd) do + if vim.fn.executable(c) == 1 then + local version = vim.fn.system(c .. " " .. opts.version) or "" + version = vim.trim(vim.split(version, "\n")[1]) + version = version:gsub("^%s*" .. vim.pesc(c) .. "%s*", "") + if opts.version_pattern and not version:find(opts.version_pattern, 1, true) then + opts.warn(("`%s` version `%s` needed, but found `%s`"):format(c, opts.version_pattern, version)) + else + found = ("{%s} `%s`"):format(c, version) + break + end + end + end + if found then + opts.ok(found) + return true + else + (opts.optional and opts.warn or opts.error)( + ("{%s} %snot installed"):format( + table.concat(cmd, "} or {"), + opts.version_pattern and "version `" .. opts.version_pattern .. "` " or "" + ) + ) + end +end function M.check() start("lazy.nvim") - if vim.fn.executable("git") == 1 then - ok("'git' installed") - else - error("'git' not installed?") - end - - if Config.options.rocks.enabled then - if vim.fn.executable("luarocks") == 1 then - ok("'luarocks' installed") - else - error("'luarocks' not installed. Either install it or set opts.rocks.enabled = false") - end - end + M.have("git") local sites = vim.opt.packpath:get() local default_site = vim.fn.stdpath("data") .. "/site" @@ -45,7 +84,7 @@ function M.check() ok("no existing packages found by other package managers") end - for _, name in ipairs({ "packer", "plugged", "paq" }) do + for _, name in ipairs({ "packer", "plugged", "paq", "pckr", "mini.deps" }) do for _, path in ipairs(vim.opt.rtp:get()) do if path:find(name, 1, true) then error("Found paths on the rtp from another plugin manager `" .. name .. "`") @@ -82,6 +121,18 @@ function M.check() end end end + + start("luarocks") + if Config.options.rocks.enabled then + if Config.options.rocks.hererocks then + info("checking `hererocks` installation") + else + info("checking `luarocks` installation") + end + require("lazy.pkg.rockspec").check({ error = error, warn = warn, ok = ok }) + else + ok("luarocks disabled") + end end ---@param plugin LazyPlugin diff --git a/lua/lazy/manage/task/init.lua b/lua/lazy/manage/task/init.lua index d86ef5f..df8e792 100644 --- a/lua/lazy/manage/task/init.lua +++ b/lua/lazy/manage/task/init.lua @@ -12,6 +12,7 @@ local Process = require("lazy.manage.process") ---@field output string ---@field status string ---@field error? string +---@field warn? string ---@field private _task fun(task:LazyTask) ---@field private _running LazyPluginState[] ---@field private _started? number @@ -74,6 +75,30 @@ function Task:start() self:_check() end +---@param msg string|string[] +---@param severity? vim.diagnostic.Severity +function Task:notify(msg, severity) + local var = severity == vim.diagnostic.severity.ERROR and "error" + or severity == vim.diagnostic.severity.WARN and "warn" + or "output" + msg = type(msg) == "table" and table.concat(msg, "\n") or msg + ---@cast msg string + ---@diagnostic disable-next-line: no-unknown + self[var] = self[var] and (self[var] .. "\n" .. msg) or msg + self.status = msg + vim.api.nvim_exec_autocmds("User", { pattern = "LazyRender", modeline = false }) +end + +---@param msg string|string[] +function Task:notify_error(msg) + self:notify(msg, vim.diagnostic.severity.ERROR) +end + +---@param msg string|string[] +function Task:notify_warn(msg) + self:notify(msg, vim.diagnostic.severity.WARN) +end + ---@param fn async fun() function Task:async(fn) local co = coroutine.create(fn) diff --git a/lua/lazy/manage/task/plugin.lua b/lua/lazy/manage/task/plugin.lua index cfdf8e0..cb426ec 100644 --- a/lua/lazy/manage/task/plugin.lua +++ b/lua/lazy/manage/task/plugin.lua @@ -1,5 +1,6 @@ local Config = require("lazy.core.config") local Loader = require("lazy.core.loader") +local Rocks = require("lazy.pkg.rockspec") local Util = require("lazy.util") ---@type table @@ -16,52 +17,6 @@ end local B = {} ----@param task LazyTask -function B.rockspec(task) - ---@type table - local env = {} - - local luarocks = "luarocks" - if Config.options.rocks.hererocks then - local is_win = jit.os:find("Windows") - local sep = is_win and ";" or ":" - local hererocks = Config.options.rocks.root .. "/hererocks/bin" - if is_win then - hererocks = hererocks:gsub("/", "\\") - end - local path = vim.split(vim.env.PATH, sep) - table.insert(path, 1, hererocks) - env = { - PATH = table.concat(path, sep), - } - if is_win then - luarocks = luarocks .. ".bat" - end - local plugin = Config.plugins.hererocks - -- hererocks is still building, so skip for now - if plugin and plugin._.build then - return - end - end - - local root = Config.options.rocks.root .. "/" .. task.plugin.name - task:spawn(luarocks, { - args = { - "--tree", - root, - "--server", - Config.options.rocks.server, - "--dev", - "--lua-version", - "5.1", - "make", - "--force-fast", - }, - cwd = task.plugin.dir, - env = env, - }) -end - ---@param task LazyTask ---@param build string function B.cmd(task, build) @@ -114,7 +69,7 @@ M.build = { build(self.plugin) end) elseif build == "rockspec" then - B.rockspec(self) + Rocks.build(self) elseif build:sub(1, 1) == ":" then B.cmd(self, build) elseif build:match("%.lua$") then diff --git a/lua/lazy/pkg/init.lua b/lua/lazy/pkg/init.lua index 3a7dd4c..b9620ca 100644 --- a/lua/lazy/pkg/init.lua +++ b/lua/lazy/pkg/init.lua @@ -112,32 +112,6 @@ local function _load() Util.track() end ----@return LazyPluginSpec?, string? -function M.hererocks() - if not (Config.options.rocks.enabled and Config.options.rocks.hererocks) then - return - end - - local root = Config.options.rocks.root .. "/hererocks" - - local cmd = { - "python", - "hererocks.py", - "--verbose", - "-l", - "5.1", - "-r", - "latest", - root, - } - - return { - "luarocks/hererocks", - lazy = true, - build = table.concat(cmd, " "), - }, root -end - ---@param dir string ---@return LazyPkg? ---@overload fun():LazyPkg[] diff --git a/lua/lazy/pkg/rockspec.lua b/lua/lazy/pkg/rockspec.lua index 0eba34c..abbd0ba 100644 --- a/lua/lazy/pkg/rockspec.lua +++ b/lua/lazy/pkg/rockspec.lua @@ -1,31 +1,8 @@ --# selene:allow(incorrect_standard_library_use) local Config = require("lazy.core.config") +local Health = require("lazy.health") local Util = require("lazy.util") -local M = {} - -M.dev_suffix = "-1.rockspec" -M.skip = { "lua" } - -M.rewrites = { - ["plenary.nvim"] = { "nvim-lua/plenary.nvim", lazy = true }, -} - ----@param plugin LazyPlugin -function M.deps(plugin) - local root = Config.options.rocks.root .. "/" .. plugin.name - local manifest_file = root .. "/lib/luarocks/rocks-5.1/manifest" - local manifest = {} - pcall(function() - local load, err = loadfile(manifest_file, "t", manifest) - if not load then - error(err) - end - load() - end) - return vim.tbl_keys(manifest.repository or {}) -end - ---@class RockSpec ---@field rockspec_format string ---@field package string @@ -33,6 +10,190 @@ end ---@field dependencies string[] ---@field build? {build_type?: string, modules?: any[]} +---@class RockManifest +---@field repository table + +local M = {} + +M.dev_suffix = "-1.rockspec" +M.skip = { "lua" } +M.rewrites = { + ["plenary.nvim"] = { "nvim-lua/plenary.nvim", lazy = true }, +} +M.python = { "python3", "python" } + +---@class HereRocks +M.hererocks = {} + +---@param task LazyTask +function M.hererocks.build(task) + local root = Config.options.rocks.root .. "/hererocks" + + ---@param p string + local python = vim.tbl_filter(function(p) + return vim.fn.executable(p) == 1 + end, M.python)[1] + + task:spawn(python, { + args = { + "hererocks.py", + "--verbose", + "-l", + "5.1", + "-r", + "latest", + root, + }, + cwd = task.plugin.dir, + }) +end + +---@param bin string +function M.hererocks.bin(bin) + local hererocks = Config.options.rocks.root .. "/hererocks/bin" + if Util.is_win then + bin = bin .. ".bat" + end + return Util.norm(hererocks .. "/" .. bin) +end + +-- check if hererocks is building +---@return boolean? +function M.hererocks.building() + return vim.tbl_get(Config.plugins.hererocks or {}, "_", "build") +end + +---@param opts? LazyHealth +function M.check(opts) + opts = vim.tbl_extend("force", { + error = Util.error, + warn = Util.warn, + ok = function() end, + }, opts or {}) + + local ok = false + if Config.options.rocks.hererocks then + if M.hererocks.building() then + ok = true + else + ok = Health.have(M.python, opts) + ok = Health.have(M.hererocks.bin("luarocks")) and ok + ok = Health.have( + M.hererocks.bin("lua"), + vim.tbl_extend("force", opts, { + version = "-v", + version_pattern = "5.1", + }) + ) and ok + end + else + ok = Health.have("luarocks", opts) + ok = ( + Health.have( + { "lua5.1", "lua" }, + vim.tbl_extend("force", opts, { + version = "-v", + version_pattern = "5.1", + }) + ) + ) and ok + end + return ok +end + +---@param task LazyTask +function M.build(task) + if + not M.check({ + error = function(msg) + task:notify_error(msg:gsub("[{}]", "`")) + end, + warn = function(msg) + task:notify_warn(msg) + end, + ok = function(msg) end, + }) + then + task:notify_warn({ + "", + "This plugin requires `luarocks`. Try one of the following:", + " - fix your `luarocks` installation", + Config.options.rocks.hererocks and " - disable *hererocks* with `opts.rocks.hererocks = false`" + or " - enable `hererocks` with `opts.rocks.hererocks = true`", + " - disable `luarocks` support completely with `opts.rocks.enabled = false`", + }) + return + end + + if task.plugin.name == "hererocks" then + return M.hererocks.build(task) + end + + local env = {} + local luarocks = "luarocks" + if Config.options.rocks.hererocks then + -- hererocks is still building, so skip for now + -- a new build will happen in the next round + if M.hererocks.building() then + return + end + + local sep = Util.is_win and ";" or ":" + local hererocks = Config.options.rocks.root .. "/hererocks/bin" + if Util.is_win then + hererocks = hererocks:gsub("/", "\\") + end + local path = vim.split(vim.env.PATH, sep) + table.insert(path, 1, hererocks) + env = { + PATH = table.concat(path, sep), + } + if Util.is_win then + luarocks = luarocks .. ".bat" + end + end + + local root = Config.options.rocks.root .. "/" .. task.plugin.name + task:spawn(luarocks, { + args = { + "--tree", + root, + "--server", + Config.options.rocks.server, + "--dev", + "--lua-version", + "5.1", + "make", + "--force-fast", + }, + cwd = task.plugin.dir, + env = env, + }) +end + +---@param file string +---@return table? +function M.parse(file) + local ret = {} + return pcall(function() + loadfile(file, "t", ret)() + end) and ret or nil +end + +---@param plugin LazyPlugin +function M.deps(plugin) + local root = Config.options.rocks.root .. "/" .. plugin.name + ---@type RockManifest? + local manifest = M.parse(root .. "/lib/luarocks/rocks-5.1/manifest") + return manifest and vim.tbl_keys(manifest.repository or {}) +end + +---@param file string +---@return RockSpec? +function M.rockspec(file) + return M.parse(file) +end + ---@param plugin LazyPlugin ---@return LazyPkgSpec? function M.get(plugin) @@ -56,14 +217,7 @@ function M.get(plugin) return end - ---@type RockSpec? - ---@diagnostic disable-next-line: missing-fields - local rockspec = {} - local load, err = loadfile(rockspec_file, "t", rockspec) - if not load then - error(err) - end - load() + local rockspec = M.rockspec(rockspec_file) if not rockspec then return diff --git a/lua/lazy/view/colors.lua b/lua/lazy/view/colors.lua index 83269f9..e55c56b 100644 --- a/lua/lazy/view/colors.lua +++ b/lua/lazy/view/colors.lua @@ -31,18 +31,20 @@ M.colors = { ButtonActive = "Visual", TaskOutput = "MsgArea", -- task output TaskError = "ErrorMsg", -- task errors + TaskWarning = "WarningMsg", -- task errors Dir = "@markup.link", -- directory Url = "@markup.link", -- url + Bold = { bold = true }, + Italic = { italic = true }, } M.did_setup = false function M.set_hl() for hl_group, link in pairs(M.colors) do - vim.api.nvim_set_hl(0, "Lazy" .. hl_group, { - link = link, - default = true, - }) + local hl = type(link) == "table" and link or { link = link } + hl.default = true + vim.api.nvim_set_hl(0, "Lazy" .. hl_group, hl) end end @@ -54,6 +56,11 @@ function M.setup() M.did_setup = true M.set_hl() + vim.api.nvim_create_autocmd("VimEnter", { + callback = function() + M.set_hl() + end, + }) vim.api.nvim_create_autocmd("ColorScheme", { callback = function() M.set_hl() diff --git a/lua/lazy/view/render.lua b/lua/lazy/view/render.lua index 7d91dd8..61faca1 100644 --- a/lua/lazy/view/render.lua +++ b/lua/lazy/view/render.lua @@ -394,6 +394,11 @@ function M:diagnostics(plugin) message = task.name .. " failed", severity = vim.diagnostic.severity.ERROR, }) + elseif task.warn then + self:diagnostic({ + message = task.name .. " warning", + severity = vim.diagnostic.severity.WARN, + }) end end end @@ -434,6 +439,22 @@ function M:plugin(plugin) { name = plugin.name, from = plugin_start, to = self:row() - 1, kind = plugin._.kind } end +---@param str string +---@param hl? string|Extmark +---@param opts? {indent?: number, prefix?: string, wrap?: boolean} +function M:markdown(str, hl, opts) + local lines = vim.split(str, "\n") + for _, line in ipairs(lines) do + self:append(line, hl, opts):highlight({ + ["`.-`"] = "@markup.raw.markdown_inline", + ["%*.-%*"] = "LazyItalic", + ["%*%*.-%*%*"] = "LazyBold", + ["^%s*-"] = "Special", + }) + self:nl() + end +end + ---@param plugin LazyPlugin function M:tasks(plugin) for _, task in ipairs(plugin._.tasks or {}) do @@ -443,13 +464,16 @@ function M:tasks(plugin) self:nl() end if task.error then - self:append(vim.trim(task.error), "LazyTaskError", { indent = 6 }) - self:nl() - elseif task.name == "log" then + self:markdown(task.error, "LazyTaskError", { indent = 6 }) + end + if task.warn then + self:markdown(task.warn, "LazyTaskWarning", { indent = 6 }) + end + if not task.error and not task.warn and task.name == "log" then self:log(task) - elseif self.view:is_selected(plugin) and task.output ~= "" and task.output ~= task.error then - self:append(vim.trim(task.output), "LazyTaskOutput", { indent = 6 }) - self:nl() + end + if self.view:is_selected(plugin) or (task.error or task.warn) then + self:markdown(vim.trim(task.output), "LazyTaskOutput", { indent = 6 }) end end end @@ -512,7 +536,7 @@ function M:details(plugin) end end local rocks = require("lazy.pkg.rockspec").deps(plugin) - if not vim.tbl_isempty(rocks) then + if rocks then table.insert(props, { "rocks", vim.inspect(rocks) }) end From 4ca3e9aa51c03dda73b40ec9901deac5d4f11c69 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Tue, 25 Jun 2024 15:44:13 +0200 Subject: [PATCH 099/342] fix(rocks): windows --- lua/lazy/pkg/rockspec.lua | 3 --- 1 file changed, 3 deletions(-) diff --git a/lua/lazy/pkg/rockspec.lua b/lua/lazy/pkg/rockspec.lua index abbd0ba..325f22a 100644 --- a/lua/lazy/pkg/rockspec.lua +++ b/lua/lazy/pkg/rockspec.lua @@ -51,9 +51,6 @@ end ---@param bin string function M.hererocks.bin(bin) local hererocks = Config.options.rocks.root .. "/hererocks/bin" - if Util.is_win then - bin = bin .. ".bat" - end return Util.norm(hererocks .. "/" .. bin) end From 24c832213c505a0d7ca021c0e14bba43e0fef75c Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Tue, 25 Jun 2024 15:51:40 +0200 Subject: [PATCH 100/342] fix(meta): no need to check for old_dir when frags were not built yet. Fixes #1550 --- lua/lazy/core/meta.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/lazy/core/meta.lua b/lua/lazy/core/meta.lua index 4645f1b..ec3a5b4 100644 --- a/lua/lazy/core/meta.lua +++ b/lua/lazy/core/meta.lua @@ -89,7 +89,7 @@ function M:add(plugin) table.insert(meta._.frags, fragment.id) - if meta._ and meta._.rtp_loaded then + if meta._ and meta._.rtp_loaded and meta.dir then local old_dir = meta.dir self:_rebuild(meta.name) local new_dir = meta.dir From 2ca68f9979dca1a9911b0f7397550a06854ebb27 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 25 Jun 2024 16:21:15 +0200 Subject: [PATCH 101/342] chore(main): release 11.3.0 (#1543) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 16 ++++++++++++++++ lua/lazy/core/config.lua | 2 +- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index 60f4637..6d2ee11 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "11.2.1" + ".": "11.3.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index c19d070..028f5ab 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,21 @@ # Changelog +## [11.3.0](https://github.com/folke/lazy.nvim/compare/v11.2.1...v11.3.0) (2024-06-25) + + +### Features + +* **rocks:** use hererocks to install luarocks when luarocks is not found ([d87da76](https://github.com/folke/lazy.nvim/commit/d87da7667939deff2ed8b5a3c198d9ea2e03fee4)) + + +### Bug Fixes + +* **fragments:** check for empty plugin names ([dea1f68](https://github.com/folke/lazy.nvim/commit/dea1f687fe6e15eb3098557a69d44231ebcb6cf5)) +* **meta:** no need to check for old_dir when frags were not built yet. Fixes [#1550](https://github.com/folke/lazy.nvim/issues/1550) ([24c8322](https://github.com/folke/lazy.nvim/commit/24c832213c505a0d7ca021c0e14bba43e0fef75c)) +* **rocks:** better errors / warnings when something goes wrong with luarocks ([7d3f691](https://github.com/folke/lazy.nvim/commit/7d3f69104fb39d3e6e12f808204b3a7b38f86916)) +* **rocks:** hererocks paths on windows ([45cd8d3](https://github.com/folke/lazy.nvim/commit/45cd8d3f0fab197e6e0391cffa38879bdda4c2cd)) +* **rocks:** windows ([4ca3e9a](https://github.com/folke/lazy.nvim/commit/4ca3e9aa51c03dda73b40ec9901deac5d4f11c69)) + ## [11.2.1](https://github.com/folke/lazy.nvim/compare/v11.2.0...v11.2.1) (2024-06-24) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index a119737..6e23b21 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -197,7 +197,7 @@ M.defaults = { debug = false, } -M.version = "11.2.1" -- x-release-please-version +M.version = "11.3.0" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From b6eba0d02600b678959f90876bc678178b4dd4f6 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Tue, 25 Jun 2024 17:41:14 +0200 Subject: [PATCH 102/342] ci: auto-get rockspec mappings for rock name => github short url or url --- .github/workflows/ci.yml | 30 + .gitignore | 1 + lua/lazy/build.lua | 90 + lua/lazy/community/rocks.lua | 873 + lua/lazy/manage/semver.lua | 2 + lua/lazy/pkg/rockspec.lua | 3 +- manifest | 116407 ++++++++++++++++++++++++++++++++ 7 files changed, 117405 insertions(+), 1 deletion(-) create mode 100644 lua/lazy/build.lua create mode 100644 lua/lazy/community/rocks.lua create mode 100644 manifest diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 05b9111..e7c3dd2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,6 +26,36 @@ jobs: nvim --version [ ! -d tests ] && exit 0 nvim --headless -u tests/init.lua -c "PlenaryBustedDirectory tests/ {minimal_init = 'tests/init.lua', sequential = true}" + community: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Install Neovim + shell: bash + run: | + mkdir -p /tmp/nvim + wget -q https://github.com/neovim/neovim/releases/download/nightly/nvim.appimage -O /tmp/nvim/nvim.appimage + cd /tmp/nvim + chmod a+x ./nvim.appimage + ./nvim.appimage --appimage-extract + echo "/tmp/nvim/squashfs-root/usr/bin/" >> $GITHUB_PATH + - name: Rockspec Build + id: rockspec-build + uses: actions/cache@v4 + with: + path: build + key: rockspec-build + - name: Generate Rockspec + if: steps.rockspec-build.cache-hit != 'true' + run: | + nvim -l lua/lazy/build.lua + - name: Push changes + uses: stefanzweifel/git-auto-commit-action@v4 + with: + commit_message: "chore(build): auto-generate rockspec mappings" + commit_user_name: "github-actions[bot]" + commit_user_email: "github-actions[bot]@users.noreply.github.com" + commit_author: "github-actions[bot] " release: name: release if: ${{ github.ref == 'refs/heads/main' }} diff --git a/.gitignore b/.gitignore index cc5457a..7217496 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ debug foo.* *.log data +build diff --git a/lua/lazy/build.lua b/lua/lazy/build.lua new file mode 100644 index 0000000..83993aa --- /dev/null +++ b/lua/lazy/build.lua @@ -0,0 +1,90 @@ +vim.opt.rtp:append(".") +local Rocks = require("lazy.pkg.rockspec") +local Semver = require("lazy.manage.semver") +local Util = require("lazy.util") + +local M = {} + +function M.fetch(url, file, prefix) + if not vim.uv.fs_stat(file) then + print((prefix or "") .. "Fetching " .. url .. " to " .. file .. "\n") + vim.cmd.redraw() + local out = vim.fn.system("wget " .. url .. " -O " .. file) + if vim.v.shell_error ~= 0 then + pcall(vim.uv.fs_unlink, file) + error("Failed to fetch " .. url .. ":\n" .. out) + end + end +end + +---@return RockManifest? +function M.fetch_manifest() + local manifest_file = "build/manifest.lua" + M.fetch("https://luarocks.org/manifest", manifest_file) + return Rocks.parse(manifest_file) +end + +function M.fetch_rockspec(name, version, prefix) + version = version or "scm-1" + local url = "https://luarocks.org/" .. name .. "-" .. version .. ".rockspec" + M.fetch(url, "build/" .. name .. ".rockspec", prefix) +end + +function M.build() + vim.fn.mkdir("build", "p") + local manifest = M.fetch_manifest() or {} + ---@type {name:string, version:string, url:string}[] + local nvim_rocks = {} + for rock, vv in pairs(manifest.repository or {}) do + if rock:find("nvim", 1, true) then + local versions = vim.tbl_map(Semver.version, vim.tbl_keys(vv)) + versions = vim.tbl_filter(function(v) + return not not v + end, versions) + local last = Semver.last(versions) or next(vv) + last = type(last) == "table" and last.input or last + table.insert(nvim_rocks, { name = rock, version = last }) + end + end + table.sort(nvim_rocks, function(a, b) + return a.name < b.name + end) + + for r, rock in ipairs(nvim_rocks) do + local progress = string.format("[%d/%d] ", r, #nvim_rocks) + local ok, err = pcall(M.fetch_rockspec, rock.name, rock.version, progress) + if not ok then + err = vim.trim("Error: " .. err) + local lines = vim.split(err, "\n") + lines = vim.tbl_map(function(line) + return " " .. line + end, lines) + print(table.concat(lines, "\n") .. "\n") + end + end + + for _, rock in ipairs(nvim_rocks) do + local rockspec = Rocks.rockspec("build/" .. rock.name .. ".rockspec") + if rockspec then + local url = rockspec.source and rockspec.source.url + -- parse github short url + if url and url:find("^%a+://github.com/") then + url = url:gsub("^%a+://github.com/", "") + local parts = vim.split(url, "/") + url = parts[1] .. "/" .. parts[2] + end + if url then + rock.url = url + print(rock.name .. " " .. url) + else + print("Error: " .. rock.name .. " missing source url\n\n") + print(vim.inspect(rockspec) .. "\n") + end + end + end + Util.write_file("lua/lazy/community/rocks.lua", "return \n" .. vim.inspect(nvim_rocks)) +end + +M.build() + +return M diff --git a/lua/lazy/community/rocks.lua b/lua/lazy/community/rocks.lua new file mode 100644 index 0000000..1b7a361 --- /dev/null +++ b/lua/lazy/community/rocks.lua @@ -0,0 +1,873 @@ +return { + { + name = "15puzzle.nvim", + url = "NStefan002/15puzzle.nvim", + version = "1.4.1-1", + }, + { + name = "aerial.nvim", + url = "stevearc/aerial.nvim", + version = "1.7.0-1", + }, + { + name = "ai.nvim", + url = "S1M0N38/ai.nvim", + version = "0.1.0-1", + }, + { + name = "auto-hlsearch.nvim", + url = "asiryk/auto-hlsearch.nvim", + version = "1.1.0-1", + }, + { + name = "better-escape.nvim", + url = "max397574/better-escape.nvim", + version = "1.0.0-1", + }, + { + name = "bufferline.nvim", + url = "akinsho/bufferline.nvim", + version = "4.6.1-1", + }, + { + name = "ccc.nvim", + url = "uga-rosa/ccc.nvim", + version = "1.6.0-1", + }, + { + name = "ci-template.nvim", + url = "linrongbin16/ci-template.nvim", + version = "8.1.0-1", + }, + { + name = "colorbox.nvim", + url = "linrongbin16/colorbox.nvim", + version = "3.1.0-1", + }, + { + name = "colorbuddy.nvim", + url = "tjdevries/colorbuddy.nvim", + version = "1.0.0-1", + }, + { + name = "colortils.nvim", + url = "nvim-colortils/colortils.nvim", + version = "1.1.0-1", + }, + { + name = "commander.nvim", + url = "FeiyouG/commander.nvim", + version = "0.2.0-1", + }, + { + name = "comment-box.nvim", + url = "LudoPinelli/comment-box.nvim", + version = "1.0.2-1", + }, + { + name = "comment.nvim", + url = "numToStr/Comment.nvim", + version = "0.8.0-1", + }, + { + name = "commons.nvim", + url = "linrongbin16/commons.nvim", + version = "18.0.0-1", + }, + { + name = "conform.nvim", + url = "stevearc/conform.nvim", + version = "6.0.0-1", + }, + { + name = "cybu.nvim", + url = "ghillb/cybu.nvim", + version = "1.0-1", + }, + { + name = "daylight.nvim", + url = "NTBBloodbath/daylight.nvim", + version = "1.1.0-1", + }, + { + name = "deadcolumn.nvim", + url = "Bekaboo/deadcolumn.nvim", + version = "1.0.0-1", + }, + { + name = "decipher.nvim", + url = "MisanthropicBit/decipher.nvim", + version = "1.0.1-1", + }, + { + name = "detour.nvim", + url = "carbon-steel/detour.nvim", + version = "1.4.0-1", + }, + { + name = "dial.nvim", + url = "monaqa/dial.nvim", + version = "0.4.0-1", + }, + { + name = "distant.nvim", + url = "chipsenkbeil/distant.nvim", + version = "0.1.2-1", + }, + { + name = "donut.nvim", + url = "NStefan002/donut.nvim", + version = "2.1.0-1", + }, + { + name = "dressing.nvim", + url = "stevearc/dressing.nvim", + version = "2.2.2-1", + }, + { + name = "dropbar.nvim", + url = "Bekaboo/dropbar.nvim", + version = "8.4.0-1", + }, + { + name = "duck.nvim", + url = "tamton-aquib/duck.nvim", + version = "main-1", + }, + { + name = "easypick.nvim", + url = "axkirillov/easypick.nvim", + version = "0.6.0-1", + }, + { + name = "edgy.nvim", + url = "folke/edgy.nvim", + version = "1.9.1-1", + }, + { + name = "elixir-tools.nvim", + url = "elixir-tools/elixir-tools.nvim", + version = "0.14.3-1", + }, + { + name = "feline.nvim", + url = "freddiehaddad/feline.nvim", + version = "1.6.2-1", + }, + { + name = "fidget.nvim", + url = "j-hui/fidget.nvim", + version = "1.4.1-1", + }, + { + name = "flash.nvim", + url = "folke/flash.nvim", + version = "1.18.3-1", + }, + { + name = "flatten.nvim", + url = "willothy/flatten.nvim", + version = "0.5.1-1", + }, + { + name = "flutter-tools.nvim", + url = "akinsho/flutter-tools.nvim", + version = "1.10.0-1", + }, + { + name = "focus.nvim", + url = "nvim-focus/focus.nvim", + version = "1.0.2-1", + }, + { + name = "freeze-code.nvim", + url = "AlejandroSuero/freeze-code.nvim", + version = "0.2.0-1", + }, + { + name = "fugit2.nvim", + url = "SuperBo/fugit2.nvim", + version = "0.2.0-1", + }, + { + name = "funnyfiles.nvim", + url = "aikooo7/funnyfiles.nvim", + version = "1.0.1-1", + }, + { + name = "fzfx.nvim", + url = "linrongbin16/fzfx.nvim", + version = "6.4.0-1", + }, + { + name = "galileo.nvim", + url = "S1M0N38/galileo.nvim", + version = "0.0.2-1", + }, + { + name = "gentags.nvim", + url = "linrongbin16/gentags.nvim", + version = "3.0.2-1", + }, + { + name = "git-worktree.nvim", + url = "polarmutex/git-worktree.nvim", + version = "1.0.0-1", + }, + { + name = "github-nvim-theme", + url = "projekt0n/github-nvim-theme", + version = "1.0.2-1", + }, + { + name = "gitlinker.nvim", + url = "linrongbin16/gitlinker.nvim", + version = "4.13.1-1", + }, + { + name = "gitsigns.nvim", + url = "lewis6991/gitsigns.nvim", + version = "scm-1", + }, + { + name = "glow.nvim", + url = "ellisonleao/glow.nvim", + version = "0.2.0-1", + }, + { + name = "go.nvim", + url = "ray-x/go.nvim", + version = "0.2.1-1", + }, + { + name = "godo.nvim", + url = "arthuradolfo/godo.nvim", + version = "1.1.0-0", + }, + { + name = "grapple.nvim", + url = "cbochs/grapple.nvim", + version = "0.30.0-1", + }, + { + name = "gruvbox.nvim", + url = "ellisonleao/gruvbox.nvim", + version = "2.0.0-1", + }, + { + name = "haskell-snippets.nvim", + url = "mrcjkb/haskell-snippets.nvim", + version = "1.4.4-1", + }, + { + name = "haskell-tools.nvim", + url = "mrcjkb/haskell-tools.nvim", + version = "3.1.10-1", + }, + { + name = "headlines.nvim", + url = "lukas-reineke/headlines.nvim", + version = "4.0.1-1", + }, + { + name = "heirline.nvim", + url = "rebelot/heirline.nvim", + version = "1.0.6-1", + }, + { + name = "hlchunk.nvim", + url = "shellRaining/hlchunk.nvim", + version = "1.1.0-1", + }, + { + name = "hotpot.nvim", + url = "rktjmp/hotpot.nvim", + version = "0.12.1-1", + }, + { + name = "hydra.nvim", + url = "nvimtools/hydra.nvim", + version = "1.0.2-1", + }, + { + name = "image.nvim", + url = "3rd/image.nvim", + version = "1.3.0-1", + }, + { + name = "incline.nvim", + url = "b0o/incline.nvim", + version = "0.0.1-1", + }, + { + name = "indent-blankline.nvim", + url = "lukas-reineke/indent-blankline.nvim", + version = "3.6.3-1", + }, + { + name = "kai.nvim", + url = "Kamilcuk/kai.nvim", + version = "0.0.6-1", + }, + { + name = "lazy.nvim", + url = "folke/lazy.nvim", + version = "11.2.1-1", + }, + { + name = "leetcode.nvim", + url = "kawre/leetcode.nvim", + version = "0.2.0-1", + }, + { + name = "legendary.nvim", + url = "mrjones2014/legendary.nvim", + version = "2.13.11-1", + }, + { + name = "live-command.nvim", + url = "smjonas/live-command.nvim", + version = "1.2.1-1", + }, + { + name = "logging.nvim", + url = "NTBBloodbath/logging.nvim", + version = "1.1.0-1", + }, + { + name = "love2d.nvim", + url = "S1M0N38/love2d.nvim", + version = "0.2-1", + }, + { + name = "lsp-progress.nvim", + url = "linrongbin16/lsp-progress.nvim", + version = "1.0.12-1", + }, + { + name = "lsp_signature.nvim", + url = "ray-x/lsp_signature.nvim", + version = "0.3.1-1", + }, + { + name = "lua-obfuscator.nvim", + url = "git+ssh://git@github.com/kdssoftware/lua-obfuscator.nvim.git", + version = "1.0.1-1", + }, + { + name = "lua-utils.nvim", + url = "nvim-neorg/lua-utils.nvim", + version = "1.0.2-1", + }, + { + name = "mapx.nvim", + url = "b0o/mapx.nvim", + version = "0.2.1-1", + }, + { + name = "mason-lspconfig.nvim", + url = "williamboman/mason-lspconfig.nvim", + version = "1.29.0-1", + }, + { + name = "mason-nvim-dap.nvim", + url = "jay-babu/mason-nvim-dap.nvim", + version = "2.3.0-1", + }, + { + name = "mason.nvim", + url = "williamboman/mason.nvim", + version = "1.10.0-1", + }, + { + name = "mini.nvim", + url = "echasnovski/mini.nvim", + version = "0.9.0-1", + }, + { + name = "mkdnflow.nvim", + url = "jakewvincent/mkdnflow.nvim", + version = "1.2.0-1", + }, + { + name = "move.nvim", + url = "fedepujol/move.nvim", + version = "2.0.0-1", + }, + { + name = "multicursors.nvim", + url = "smoka7/multicursors.nvim", + version = "1.0.0-1", + }, + { + name = "my-awesome-plugin.nvim", + url = "S1M0N38/my-awesome-plugin.nvim", + version = "0.1.1-1", + }, + { + name = "navigator.nvim", + url = "numToStr/Navigator.nvim", + version = "0.6-1", + }, + { + name = "neo-tree.nvim", + url = "nvim-neo-tree/neo-tree.nvim", + version = "3.26-1", + }, + { + name = "neoconf.nvim", + url = "folke/neoconf.nvim", + version = "1.2.2-1", + }, + { + name = "neodev.nvim", + url = "folke/neodev.nvim", + version = "3.0.0-1", + }, + { + name = "neoscroll.nvim", + url = "karb94/neoscroll.nvim", + version = "0.2.0-1", + }, + { + name = "nightfox.nvim", + url = "EdenEast/nightfox.nvim", + version = "3.9.3-1", + }, + { + name = "no-neck-pain.nvim", + url = "shortcuts/no-neck-pain.nvim", + version = "1.14.0-1", + }, + { + name = "noice.nvim", + url = "folke/noice.nvim", + version = "4.3.0-1", + }, + { + name = "npackages.nvim", + url = "diegofigs/npackages.nvim", + version = "0.1.0-1", + }, + { + name = "nui-components.nvim", + url = "grapp-dev/nui-components.nvim", + version = "1.5.2-1", + }, + { + name = "nui.nvim", + url = "git+https://github.com/MunifTanjim/nui.nvim.git", + version = "0.3.0-1", + }, + { + name = "nvim-client", + url = "neovim/lua-client", + version = "0.2.4-1", + }, + { + name = "nvim-client-proxy", + url = "hjdivad/nvim-client-proxy", + version = "0.1.0-1", + }, + { + name = "nvim-cmp", + url = "hrsh7th/nvim-cmp", + version = "0.0.1-2", + }, + { + name = "nvim-cokeline", + url = "willothy/nvim-cokeline", + version = "0.4.0-1", + }, + { + name = "nvim-dap", + url = "mfussenegger/nvim-dap", + version = "0.8.0-1", + }, + { + name = "nvim-dap-ui", + url = "rcarriga/nvim-dap-ui", + version = "4.0.0-1", + }, + { + name = "nvim-dbee", + url = "kndndrj/nvim-dbee", + version = "0.1.6-1", + }, + { + name = "nvim-dev-container", + url = "esensar/nvim-dev-container", + version = "0.2.0-1", + }, + { + name = "nvim-java", + url = "nvim-java/nvim-java", + version = "1.0.0-1", + }, + { + name = "nvim-java-core", + url = "nvim-java/nvim-java-core", + version = "1.0.0-1", + }, + { + name = "nvim-java-dap", + url = "nvim-java/nvim-java-dap", + version = "1.0.0-1", + }, + { + name = "nvim-jdtls", + url = "mfussenegger/nvim-jdtls", + version = "0.2.0-1", + }, + { + name = "nvim-jqx", + url = "gennaro-tedesco/nvim-jqx", + version = "0.1.4-1", + }, + { + name = "nvim-lastplace", + url = "mrcjkb/nvim-lastplace", + version = "1.0.0-1", + }, + { + name = "nvim-lightbulb", + url = "kosayoda/nvim-lightbulb", + version = "1.0.0-1", + }, + { + name = "nvim-lspconfig", + url = "neovim/nvim-lspconfig", + version = "0.1.8-1", + }, + { + name = "nvim-metals", + url = "scalameta/nvim-metals", + version = "0.9.x-1", + }, + { + name = "nvim-nio", + url = "nvim-neotest/nvim-nio", + version = "1.9.4-1", + }, + { + name = "nvim-notify", + url = "rcarriga/nvim-notify", + version = "3.13.5-1", + }, + { + name = "nvim-parinfer", + url = "gpanders/nvim-parinfer", + version = "1.2.0-1", + }, + { + name = "nvim-peekup", + url = "gennaro-tedesco/nvim-peekup", + version = "0.1.1-1", + }, + { + name = "nvim-possession", + url = "gennaro-tedesco/nvim-possession", + version = "0.0.13-1", + }, + { + name = "nvim-scrollview", + url = "dstein64/nvim-scrollview", + version = "5.1.0-1", + }, + { + name = "nvim-smuggler", + url = "Klafyvel/nvim-smuggler", + version = "main-1", + }, + { + name = "nvim-snippy", + url = "dcampos/nvim-snippy", + version = "1.0.0-1", + }, + { + name = "nvim-surround", + url = "kylechui/nvim-surround", + version = "2.1.5-1", + }, + { + name = "nvim-tree.lua", + url = "nvim-tree/nvim-tree.lua", + version = "1.4.0-1", + }, + { + name = "nvim-treesitter-legacy-api", + url = "nvim-treesitter/nvim-treesitter", + version = "0.9.2-1", + }, + { + name = "nvim-ufo", + url = "kevinhwang91/nvim-ufo", + version = "1.4.0-1", + }, + { + name = "nvim-web-devicons", + url = "nvim-tree/nvim-web-devicons", + version = "0.100-1", + }, + { + name = "obsidian.nvim", + url = "epwalsh/obsidian.nvim", + version = "3.8.0-1", + }, + { + name = "oil.nvim", + url = "stevearc/oil.nvim", + version = "2.10.0-1", + }, + { + name = "onedarkpro.nvim", + url = "olimorris/onedarkpro.nvim", + version = "0.8.0-1", + }, + { + name = "onenord.nvim", + url = "rmehri01/onenord.nvim", + version = "0.7.0-1", + }, + { + name = "otter.nvim", + url = "jmbuhr/otter.nvim", + version = "1.15.1-1", + }, + { + name = "overseer.nvim", + url = "stevearc/overseer.nvim", + version = "1.4.0-1", + }, + { + name = "oz.nvim", + url = "luxluth/oz.nvim", + version = "0.0.3-1", + }, + { + name = "package-info.nvim", + url = "vuki656/package-info.nvim", + version = "2.0-1", + }, + { + name = "paperplanes.nvim", + url = "rktjmp/paperplanes.nvim", + version = "0.1.6-1", + }, + { + name = "papis.nvim", + url = "jghauser/papis.nvim", + version = "0.5.1-1", + }, + { + name = "paq-nvim", + url = "savq/paq-nvim", + version = "2.0.0-1", + }, + { + name = "pathlib.nvim", + url = "pysan3/pathlib.nvim", + version = "2.2.2-1", + }, + { + name = "persistence.nvim", + url = "folke/persistence.nvim", + version = "2.0.0-1", + }, + { + name = "plenary.nvim", + url = "nvim-lua/plenary.nvim", + version = "0.1.4-1", + }, + { + name = "pretty-fold.nvim", + url = "anuvyklack/pretty-fold.nvim", + version = "3.0-1", + }, + { + name = "rainbow-delimiters.nvim", + url = "HiPhish/rainbow-delimiters.nvim", + version = "0.4.0-1", + }, + { + name = "renamer.nvim", + url = "filipdutescu/renamer.nvim", + version = "5.1.0-1", + }, + { + name = "rest.nvim", + url = "rest-nvim/rest.nvim", + version = "2.0.1-1", + }, + { + name = "rocks-config.nvim", + url = "nvim-neorocks/rocks-config.nvim", + version = "2.0.1-1", + }, + { + name = "rocks-dev.nvim", + url = "nvim-neorocks/rocks-dev.nvim", + version = "1.2.3-1", + }, + { + name = "rocks-git.nvim", + url = "nvim-neorocks/rocks-git.nvim", + version = "1.5.1-1", + }, + { + name = "rocks.nvim", + url = "nvim-neorocks/rocks.nvim", + version = "2.32.0-1", + }, + { + name = "rtp.nvim", + url = "nvim-neorocks/rtp.nvim", + version = "1.0.0-1", + }, + { + name = "rustaceanvim", + url = "mrcjkb/rustaceanvim", + version = "4.25.1-1", + }, + { + name = "schemastore.nvim", + url = "b0o/SchemaStore.nvim", + version = "0.2.0-1", + }, + { + name = "screenkey.nvim", + url = "NStefan002/screenkey.nvim", + version = "2.1.0-1", + }, + { + name = "scrollbar.nvim", + url = "Xuyuanp/scrollbar.nvim", + version = "0.4.0-1", + }, + { + name = "session.nvim", + url = "Kibadda/session.nvim", + version = "2.0.0-1", + }, + { + name = "sg.nvim", + url = "sourcegraph/sg.nvim", + version = "1.1.0-1", + }, + { + name = "smart-splits.nvim", + url = "mrjones2014/smart-splits.nvim", + version = "1.5.0-1", + }, + { + name = "squirrel.nvim", + url = "xiaoshihou514/squirrel.nvim", + version = "1.0.0-1", + }, + { + name = "storm-mode.nvim", + url = "HoppenR/storm-mode.nvim", + version = "1.2.0-1", + }, + { + name = "structlog.nvim", + url = "git+ssh://git@github.com/Tastyep/structlog.nvim.git", + version = "0.1-1", + }, + { + name = "substitute.nvim", + url = "gbprod/substitute.nvim", + version = "2.0.0-1", + }, + { + name = "sweetie.nvim", + url = "NTBBloodbath/sweetie.nvim", + version = "3.1.1-1", + }, + { + name = "tabby.nvim", + url = "nanozuki/tabby.nvim", + version = "2.5.1-1", + }, + { + name = "telescope-zf-native.nvim", + url = "natecraddock/telescope-zf-native.nvim", + version = "1.0.0-1", + }, + { + name = "telescope.nvim", + url = "nvim-telescope/telescope.nvim", + version = "0.1.8-1", + }, + { + name = "todo-comments.nvim", + url = "folke/todo-comments.nvim", + version = "1.2.0-1", + }, + { + name = "toggleterm.nvim", + url = "akinsho/toggleterm.nvim", + version = "2.11.0-1", + }, + { + name = "tokyonight.nvim", + url = "folke/tokyonight.nvim", + version = "3.0.1-1", + }, + { + name = "trouble.nvim", + url = "folke/trouble.nvim", + version = "3.4.3-1", + }, + { + name = "tsc.nvim", + url = "dmmulroy/tsc.nvim", + version = "2.3.0-1", + }, + { + name = "twilight.nvim", + url = "folke/twilight.nvim", + version = "1.0.0-1", + }, + { + name = "unimpaired.nvim", + url = "tummetott/unimpaired.nvim", + version = "0.2.0-1", + }, + { + name = "vgit.nvim", + url = "tanvirtin/vgit.nvim", + version = "0.2.2-1", + }, + { + name = "which-key.nvim", + url = "folke/which-key.nvim", + version = "2.1.0-1", + }, + { + name = "windline.nvim", + url = "windwp/windline.nvim", + version = "1.1.0-1", + }, + { + name = "yanky.nvim", + url = "gbprod/yanky.nvim", + version = "2.0.0-1", + }, + { + name = "yazi.nvim", + url = "mikavilpas/yazi.nvim", + version = "master-1", + }, + { + name = "zen-mode.nvim", + url = "folke/zen-mode.nvim", + version = "1.3.0-1", + }, + { + name = "zk-nvim", + url = "zk-org/zk-nvim", + version = "0.1.0-1", + }, +} + diff --git a/lua/lazy/manage/semver.lua b/lua/lazy/manage/semver.lua index 4e58881..e0a1037 100644 --- a/lua/lazy/manage/semver.lua +++ b/lua/lazy/manage/semver.lua @@ -9,6 +9,7 @@ local M = {} ---@field patch number ---@field prerelease? string ---@field build? string +---@field input? string local Semver = {} Semver.__index = Semver @@ -90,6 +91,7 @@ function M.version(version) patch = patch == "" and 0 or tonumber(patch), prerelease = prerelease ~= "" and prerelease or nil, build = build ~= "" and build or nil, + input = version, }, Semver) end end diff --git a/lua/lazy/pkg/rockspec.lua b/lua/lazy/pkg/rockspec.lua index 325f22a..ef6d804 100644 --- a/lua/lazy/pkg/rockspec.lua +++ b/lua/lazy/pkg/rockspec.lua @@ -9,9 +9,10 @@ local Util = require("lazy.util") ---@field version string ---@field dependencies string[] ---@field build? {build_type?: string, modules?: any[]} +---@field source? {url?: string} ---@class RockManifest ----@field repository table +---@field repository table> local M = {} diff --git a/manifest b/manifest new file mode 100644 index 0000000..ec30b4b --- /dev/null +++ b/manifest @@ -0,0 +1,116407 @@ +commands = {} +modules = {} +repository = { + ['15puzzle.nvim'] = { + ['1.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['main-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['2048.nvim'] = { + ['2.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.6.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.7.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.8.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.8.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.8.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['main-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['30log'] = { + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-2'] = { + { + arch = "rockspec" + } + }, + ['0.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-0'] = { + { + arch = "rockspec" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['3rd-party-oauth'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['ab-microsensor'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + } + } + }, + abelhas = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + abletonlink = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + abstk = { + ['1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['release-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['ac-clientoutput'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['ac-luaserver'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['access-token-introspection'] = { + ['1.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + access_file_data = { + ['1.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.1-2'] = { + { + arch = "rockspec" + } + } + }, + accessor = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + act = { + ['0.10.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.11.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.11.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.12.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.12.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.13.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.15.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.16.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.9.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.9.2-1'] = { + { + arch = "rockspec" + } + } + }, + ['activelua-learningtool'] = { + ['1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + } + } + }, + ['adal-lua'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + add = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['adopure.nvim'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ads1015 = { + ['0.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['adt.lua'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + adxl345 = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['aerial.nvim'] = { + ['1.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + aes_everywhere = { + ['1.1.3-6'] = { + { + arch = "rockspec" + } + }, + ['1.1.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + aesfileencrypt = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['afl-lua'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + aghpb = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['ai.nvim'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + aka = { + ['1.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + } + } + }, + alfons = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.10-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.5.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.5.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['nil-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['alfons-dev'] = { + ['5.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['alib.eventbus'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + alien = { + ['0.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + }, { + arch = "win32-x86" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + }, { + arch = "win32-x86" + } + }, + ['0.5.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + }, { + arch = "win32-x86" + } + }, + ['0.6.1-1'] = { + { + arch = "rockspec" + }, { + arch = "win32-x86" + } + }, + ['0.7.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + alive = { + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.1rc3-1'] = { + { + arch = "rockspec" + } + }, + ['0.1rc4-1'] = { + { + arch = "rockspec" + } + } + }, + allonet = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + alnbox = { + ['1.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + alogger = { + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['alt-getopt'] = { + ['0.7.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + altdoc = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + amalg = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['amalg-redis'] = { + ['0.1.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['amber-apigw'] = { + ['2.14.1-0'] = { + { + arch = "rockspec" + } + } + }, + amqp = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['amqp-client'] = { + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['amqp-client-52plus'] = { + ['1.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['amqp-client-rpc'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + anim8 = { + ['v2.3.1-1'] = { + { + arch = "rockspec" + } + } + }, + annotate = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ansicolors = { + ['1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ansicolorsx = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.3-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ansikit = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ao = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['api-gateway-request-validation'] = { + ['1.3.12-1'] = { + { + arch = "rockspec" + } + } + }, + ['api7-dkjson'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['api7-lua-protobuf'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['api7-lua-resty-dns-client'] = { + ['7.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['api7-lua-resty-http'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['api7-lua-resty-jwt'] = { + ['0.2.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['api7-lua-tinyyaml'] = { + ['0.2.0-0'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-0'] = { + { + arch = "rockspec" + } + }, + ['0.4.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['api7-skywalking-nginx-lua'] = { + ['1.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['api7-snowflake'] = { + ['2.0-1'] = { + { + arch = "rockspec" + } + } + }, + apicast = { + ['scm-1'] = { + { + arch = "rockspec" + } + } + }, + ['apicast-cli'] = { + ['scm-1'] = { + { + arch = "rockspec" + } + } + }, + apidemo = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + apioak = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + apisix = { + ['0.4-0'] = { + { + arch = "rockspec" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.5-0'] = { + { + arch = "rockspec" + } + }, + ['0.6-0'] = { + { + arch = "rockspec" + } + }, + ['0.7-0'] = { + { + arch = "rockspec" + } + }, + ['0.8-0'] = { + { + arch = "rockspec" + } + }, + ['0.9-0'] = { + { + arch = "rockspec" + } + }, + ['1.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.1-0'] = { + { + arch = "rockspec" + } + }, + ['1.2-0'] = { + { + arch = "rockspec" + } + }, + ['1.3-0'] = { + { + arch = "rockspec" + } + }, + ['1.4-0'] = { + { + arch = "rockspec" + } + }, + ['1.4.1-0'] = { + { + arch = "rockspec" + } + }, + ['1.5-0'] = { + { + arch = "rockspec" + } + }, + ['2.0-0'] = { + { + arch = "rockspec" + } + }, + ['2.1-0'] = { + { + arch = "rockspec" + } + }, + ['2.2-0'] = { + { + arch = "rockspec" + } + }, + ['2.3-0'] = { + { + arch = "rockspec" + } + }, + ['2.4-0'] = { + { + arch = "rockspec" + } + } + }, + app_scheduler = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + apply_patch_failed = { + ['1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + arbiter = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + arc4random = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + argexpected = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + } + }, + argmatcher = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + argon2 = { + ['1.0.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.1.1-0'] = { + { + arch = "rockspec" + } + }, + ['1.2.0-0'] = { + { + arch = "rockspec" + } + }, + ['2.0.0-0'] = { + { + arch = "rockspec" + } + }, + ['3.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['3.0.1-1'] = { + { + arch = "rockspec" + } + } + }, + ['argon2-ffi'] = { + ['0.0.1-0'] = { + { + arch = "rockspec" + } + }, + ['1.0.0-0'] = { + { + arch = "rockspec" + } + }, + ['3.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['3.0.1-1'] = { + { + arch = "rockspec" + } + } + }, + argparse = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.0-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + }, + ['0.7.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + argv = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + } + } + }, + arluqtools = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + array = { + ['1.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.6-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.7-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.8-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.6-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + arrr = { + ['1.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + arweave = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-10'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-11'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-12'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-13'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-7'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-8'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-9'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['asciicursor-lua'] = { + ['0.1-2'] = { + { + arch = "rockspec" + } + } + }, + asklua = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + } + } + }, + aspect = { + ['1.10-0'] = { + { + arch = "rockspec" + } + }, + ['1.11-0'] = { + { + arch = "rockspec" + } + }, + ['1.12-0'] = { + { + arch = "rockspec" + } + }, + ['1.13-0'] = { + { + arch = "rockspec" + } + }, + ['1.14-0'] = { + { + arch = "rockspec" + } + }, + ['1.9-0'] = { + { + arch = "rockspec" + } + }, + ['2.0-0'] = { + { + arch = "rockspec" + } + }, + ['2.2-0'] = { + { + arch = "rockspec" + } + }, + ['2.3-0'] = { + { + arch = "rockspec" + } + } + }, + assert = { + ['0.3.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.5.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.5.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.6.0-1'] = { + { + arch = "rockspec" + } + } + }, + assertex = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + } + } + }, + astar = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + async = { + ['1.1-1'] = { + { + arch = "rockspec" + } + } + }, + ['async-framework'] = { + ['1.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['async-utils'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['async.lua'] = { + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + } + } + }, + asyncio = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + atlas = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + atpath = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + audiodataload = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['audit-log'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + auproc = { + ['0.0.1-1'] = { + { + arch = "rockspec" + } + } + }, + aurora = { + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + } + } + }, + ['auth-plugin-configr'] = { + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['auth0-nginx'] = { + ['1.0.1-0'] = { + { + arch = "rockspec" + } + }, + ['1.1.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.3.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.3.1-0'] = { + { + arch = "rockspec" + } + }, + ['1.3.2-0'] = { + { + arch = "rockspec" + } + }, + ['1.3.3-0'] = { + { + arch = "rockspec" + } + }, + ['1.3.4-0'] = { + { + arch = "rockspec" + } + }, + ['1.4.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.4.1-0'] = { + { + arch = "rockspec" + } + }, + ['1.4.2-0'] = { + { + arch = "rockspec" + } + }, + ['1.5.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['authy-lua'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['auto-hlsearch.nvim'] = { + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['auto-session'] = { + ['2.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + autoblock = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + away = { + ['0.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['away-dataqueue'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['away-luv'] = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['awesome-audiowheel'] = { + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['awesome-autostart'] = { + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['awesome-dovetail'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['devel-1'] = { + { + arch = "rockspec" + } + } + }, + ['awesome-ez'] = { + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['devel-1'] = { + { + arch = "rockspec" + } + }, + ['devel-2'] = { + { + arch = "rockspec" + } + } + }, + ['awesome-freedesktop'] = { + git = { + { + arch = "rockspec" + } + } + }, + ['awesome-handy'] = { + ['0.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['awesome-launch'] = { + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['devel-1'] = { + { + arch = "rockspec" + } + } + }, + ['awesome-pulseaudio-widget'] = { + ['0.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['awesome-scratchpad'] = { + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['awesome-viewport'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['devel-1'] = { + { + arch = "rockspec" + } + } + }, + ['awesomewm-autostart'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + awestore = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + babel = { + ['1.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-0'] = { + { + arch = "rockspec" + } + } + }, + backup = { + ['0.2-1'] = { + { + arch = "rockspec" + } + } + }, + bakalang = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['balance-tree'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['barcodes.sile'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + base = { + ['1.0-0'] = { + { + arch = "rockspec" + } + }, + ['2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + base2base = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + base45 = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + base58 = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + base64 = { + ['1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + base64mix = { + ['1.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + } + } + }, + based = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + basedir = { + ['0.3.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.5.1-1'] = { + { + arch = "rockspec" + } + } + }, + basename = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + basexx = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['basic-auth'] = { + ['0.0-1'] = { + { + arch = "rockspec" + } + } + }, + basicauth = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + basics = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + battery_status = { + ['1.0-7'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-0'] = { + { + arch = "rockspec" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + } + } + }, + bawesome = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + bbcode = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + bcrypt = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['bcrypt-ffi'] = { + ['1.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + beemovie = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + behaviour_tree = { + ['0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['benchmark-ips'] = { + ['0.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + benchmarker = { + ['0.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + benchy = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + bencode = { + ['1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['2.2.0-2'] = { + { + arch = "rockspec" + } + } + }, + ber = { + ['0.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['better-escape.nvim'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['bgcrypto-aes'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['bgcrypto-hmac'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['bgcrypto-lmd5'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['bgcrypto-pbkdf2'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['bgcrypto-sha'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + bigint = { + ['1.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.3-2'] = { + { + arch = "rockspec" + } + } + }, + bin = { + ['5.0-0'] = { + { + arch = "rockspec" + } + }, + ['5.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.0-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.0-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.1-0'] = { + { + arch = "rockspec" + } + } + }, + binaryheap = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + binarystream = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + binarytree = { + ['0.0.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.0.2-0'] = { + { + arch = "rockspec" + } + } + }, + binser = { + ['0.0-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0-7'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0-8'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + bint = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + bintrees = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-7'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-8'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + biohazardcore = { + ['1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + } + } + }, + biolua = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.15-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + bit32 = { + ['5.2.0alpha.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.2.1.52-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.3.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.3.5.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + bitarray = { + ['1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + } + }, + ['1.5-1'] = { + { + arch = "rockspec" + } + } + }, + bitlib = { + ['23-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + bitness = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['bitop-lua'] = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['bitsy-format'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + bitvec = { + ['2.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['2.0.2-1'] = { + { + arch = "rockspec" + } + }, + ['2.0.3-1'] = { + { + arch = "rockspec" + } + } + }, + ['bk-tree'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + bkopenssl = { + ['0.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + blackjack = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.0-2'] = { + { + arch = "rockspec" + } + } + }, + blowfish = { + ['0.1-1'] = { + { + arch = "rockspec" + } + } + }, + bme280 = { + ['0.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + bolt = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['botbye-openresty'] = { + ['0.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.6-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.7-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.8-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.9-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['botway-lua'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + brain = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + brieflz = { + ['0.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + brightness = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + brigid = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.11-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.12-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.13-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.14-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.15-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.16-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['brigid-mbedtls'] = { + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['brigid-pcre2'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + brocatel = { + ['0.3.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['brotli-ffi'] = { + ['0.2-2'] = { + { + arch = "rockspec" + } + }, + ['0.3-0'] = { + { + arch = "rockspec" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + } + } + }, + ['bufferline.nvim'] = { + ['4.5.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.5.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.6.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + bufio = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.6.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.6.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.7.0-1'] = { + { + arch = "rockspec" + } + } + }, + bump = { + ['3.1.5-1'] = { + { + arch = "rockspec" + } + }, + ['3.1.6-1'] = { + { + arch = "rockspec" + } + }, + ['3.1.6-2'] = { + { + arch = "rockspec" + } + }, + ['3.1.7-1'] = { + { + arch = "rockspec" + } + } + }, + ['bump-3dpd'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + busted = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.10.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.10.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.11.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.11.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.11.1-2'] = { + { + arch = "rockspec" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8-0'] = { + { + arch = "rockspec" + } + }, + ['1.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-0'] = { + { + arch = "rockspec" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['2.0.rc0-0'] = { + { + arch = "rockspec" + } + }, + ['2.0.rc1-0'] = { + { + arch = "rockspec" + } + }, + ['2.0.rc10-0'] = { + { + arch = "rockspec" + } + }, + ['2.0.rc10-1'] = { + { + arch = "rockspec" + } + }, + ['2.0.rc11-0'] = { + { + arch = "rockspec" + } + }, + ['2.0.rc12-1'] = { + { + arch = "rockspec" + } + }, + ['2.0.rc13-0'] = { + { + arch = "rockspec" + } + }, + ['2.0.rc2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.rc3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.rc4-0'] = { + { + arch = "rockspec" + } + }, + ['2.0.rc5-0'] = { + { + arch = "rockspec" + } + }, + ['2.0.rc6-0'] = { + { + arch = "rockspec" + } + }, + ['2.0.rc7-0'] = { + { + arch = "rockspec" + } + }, + ['2.0.rc8-0'] = { + { + arch = "rockspec" + } + }, + ['2.0.rc9-0'] = { + { + arch = "rockspec" + } + }, + ['2.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.2-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['busted-codewars'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['busted-ffi'] = { + ['2.0.rc12-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['busted-flaky'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['busted-hjtest'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.1-2'] = { + { + arch = "rockspec" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + } + } + }, + ['busted-htest'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['busted-jsonl'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['busted-stable'] = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + busted_resty = { + ['0.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + bustez = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + butter = { + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['c-lua-package'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + c3 = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-15'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-17'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-19'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-20'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-21'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-23'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-34'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-37'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-39'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-40'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-42'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + caas = { + ['1.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + cache = { + ['1.3.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['cache-mdbx'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['cache-redis'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + cake = { + ['0.1.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + call = { + ['2024.3.4.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2024.3.6.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2024.3.6.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2024.3.6.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2024.3.6.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + callbag = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + canary = { + ['1.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.3-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.4-1'] = { + { + arch = "rockspec" + } + } + }, + ['canary-oss'] = { + ['1.0.5-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.6-1'] = { + { + arch = "rockspec" + } + } + }, + candran = { + ['0.14.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['canny-redis'] = { + ['0.1-1'] = { + { + arch = "rockspec" + } + } + }, + caribay = { + ['1.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + } + }, + ['2.0-1'] = { + { + arch = "rockspec" + } + }, + ['2.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['2.1-1'] = { + { + arch = "rockspec" + } + }, + ['2.2-1'] = { + { + arch = "rockspec" + } + }, + ['3.0-1'] = { + { + arch = "rockspec" + } + }, + ['3.1-1'] = { + { + arch = "rockspec" + } + }, + ['3.2-1'] = { + { + arch = "rockspec" + } + }, + ['3.2.1-1'] = { + { + arch = "rockspec" + } + }, + ['3.2.2-1'] = { + { + arch = "rockspec" + } + } + }, + carray = { + ['0.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + } + } + }, + carrot = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + cartesix = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + casbin = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.24.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.24.2-1'] = { + { + arch = "rockspec" + } + }, + ['1.25.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.25.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.26.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.27.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.28.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.29.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.30.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.31.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.32.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.32.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.33.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.34.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.34.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.35.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.35.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.36.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.37.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.38.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.39.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.40.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.40.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.41.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.41.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.41.2-1'] = { + { + arch = "rockspec" + } + }, + ['1.41.3-1'] = { + { + arch = "rockspec" + } + }, + ['1.41.4-1'] = { + { + arch = "rockspec" + } + }, + ['1.41.5-1'] = { + { + arch = "rockspec" + } + }, + ['1.41.6-1'] = { + { + arch = "rockspec" + } + }, + ['1.41.7-1'] = { + { + arch = "rockspec" + } + }, + ['1.41.8-1'] = { + { + arch = "rockspec" + } + } + }, + ['casbin-adapter'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + } + } + }, + cascproxy = { + ['scm-0'] = { + { + arch = "rockspec" + } + } + }, + cassandra = { + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.5-1'] = { + { + arch = "rockspec" + } + }, + ['0.5-2'] = { + { + arch = "rockspec" + } + }, + ['0.5-3'] = { + { + arch = "rockspec" + } + }, + ['0.5-4'] = { + { + arch = "rockspec" + } + }, + ['0.5-5'] = { + { + arch = "rockspec" + } + }, + ['0.5-6'] = { + { + arch = "rockspec" + } + }, + ['0.5-7'] = { + { + arch = "rockspec" + } + } + }, + cassowary = { + ['1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + catchify = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + catppuccin = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + catpuccin = { + ['1.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + cbuf = { + ['0.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.1-2'] = { + { + arch = "rockspec" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + } + } + }, + ['ccc.nvim'] = { + ['1.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ccrunx = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['ccrunx-compose'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['ccrunx-image'] = { + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + cctea = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + cdata_table = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + cdb = { + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['centreon-stream-connectors-lib'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.5.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.6.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.7.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + centrilua = { + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + cfadmin = { + ['beta-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['cffi-lua'] = { + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + cfg = { + ['1.2-1'] = { + { + arch = "rockspec" + } + } + }, + cgi = { + ['1.0.0-1'] = { + { + arch = "rockspec" + } + } + }, + cgilua = { + ['5.1.2-2'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + }, + ['5.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + }, + ['5.1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + }, { + arch = "win32-x86" + } + }, + ['5.1.4-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['cgilua-cli'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + chaboksms = { + ['1.0.0-1'] = { + { + arch = "rockspec" + } + } + }, + chacha = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + chain = { + ['1.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + chalk = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + chameleon = { + ['1.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + chance = { + ['1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['chandra-toml'] = { + ['2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + charm = { + ['0.0-1'] = { + { + arch = "rockspec" + } + } + }, + chars = { + ['0.0.0'] = { + { + arch = "rockspec" + } + }, + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + chatter = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + chdir = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + } + }, + checks = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['chess-fen'] = { + ['1.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + chroma = { + ['0.1.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['chrome-devtools-client'] = { + ['0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.5-1'] = { + { + arch = "rockspec" + } + }, + ['0.6-1'] = { + { + arch = "rockspec" + } + }, + ['0.7-1'] = { + { + arch = "rockspec" + } + }, + ['0.8-1'] = { + { + arch = "rockspec" + } + } + }, + chronos = { + ['0.1-4'] = { + { + arch = "rockspec" + } + }, + ['0.1-5'] = { + { + arch = "rockspec" + } + }, + ['0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['ci-template.nvim'] = { + ['4.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['7.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['8.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['8.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['8.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + cincau = { + ['0.10.20220813-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.10.20220924-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.11.20230708-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.20210701-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.20210905-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.20210912-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.20210923-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.20211002-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.20211108-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.20211212-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.20220511-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.20220807-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['cipher-log'] = { + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['cirru-parser'] = { + ['0.1-1'] = { + { + arch = "rockspec" + } + } + }, + ['citeproc-lua'] = { + ['0.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + civ = { + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + civix = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-7'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-8'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + civtest = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + cl = { + ['20100607-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['claims-handler'] = { + ['0.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['3.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['4.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['4.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['4.0.10-1'] = { + { + arch = "rockspec" + } + }, + ['4.0.11-1'] = { + { + arch = "rockspec" + } + }, + ['4.0.12-1'] = { + { + arch = "rockspec" + } + }, + ['4.0.12-2'] = { + { + arch = "rockspec" + } + }, + ['4.0.2-1'] = { + { + arch = "rockspec" + } + }, + ['4.0.3-1'] = { + { + arch = "rockspec" + } + }, + ['4.0.4-1'] = { + { + arch = "rockspec" + } + }, + ['4.0.5-1'] = { + { + arch = "rockspec" + } + }, + ['4.0.6-1'] = { + { + arch = "rockspec" + } + }, + ['4.0.7-1'] = { + { + arch = "rockspec" + } + }, + ['4.0.8-1'] = { + { + arch = "rockspec" + } + }, + ['4.0.9-1'] = { + { + arch = "rockspec" + } + }, + ['4.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['4.1.0-2'] = { + { + arch = "rockspec" + } + }, + ['4.1.1-10'] = { + { + arch = "rockspec" + } + }, + ['4.1.1-11'] = { + { + arch = "rockspec" + } + }, + ['4.1.1-13'] = { + { + arch = "rockspec" + } + }, + ['4.1.1-3'] = { + { + arch = "rockspec" + } + }, + ['4.1.1-4'] = { + { + arch = "rockspec" + } + }, + ['4.1.1-5'] = { + { + arch = "rockspec" + } + } + }, + class = { + ['0.7-1'] = { + { + arch = "rockspec" + } + } + }, + classic = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + classy = { + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + classyng = { + ['0.3-1'] = { + { + arch = "rockspec" + } + } + }, + cldr = { + ['0.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + cli = { + ['1.0.2-1'] = { + { + arch = "rockspec" + } + } + }, + ['cli-app-base'] = { + ['0.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + clock = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + cloud_storage = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + cluacov = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + clutch = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['cm-lua-resty-kafka'] = { + ['0.20-1'] = { + { + arch = "rockspec" + } + } + }, + cmark = { + ['0.23.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.23.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.23.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.23.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.24.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.24.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.24.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.25.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.26.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.27.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.28.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.28.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.29.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.30.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + cmath = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + cmd4lua = { + ['0.6.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + cmdbuild = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['cmft-base-kong'] = { + ['1.1.0'] = { + { + arch = "rockspec" + } + }, + ['1.2.0'] = { + { + arch = "rockspec" + } + } + }, + ['cmft-kong'] = { + ['1.1.1-0'] = { + { + arch = "rockspec" + } + }, + ['1.1.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.2.1-0'] = { + { + arch = "rockspec" + } + } + }, + ['cmp-rg'] = { + ['1.3.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + cni = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + codec = { + ['1.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + cognitiologger = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.3-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.3-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.3-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + color = { + ['1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + } + } + }, + ['colorbox.nvim'] = { + ['1.13.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.13.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.13.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.13.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.13.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.13.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.13.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.14.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.14.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.14.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.11-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.12-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.13-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.14-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.15-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.16-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.17-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['colorbuddy.nvim'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + colorise = { + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + colormap = { + ['1.1-0'] = { + { + arch = "rockspec" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.1-2'] = { + { + arch = "rockspec" + } + } + }, + colors = { + ['8.05.26-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + colorswatches = { + ['0.9.3-1'] = { + { + arch = "rockspec" + } + } + }, + ['colortils.nvim'] = { + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + colyseus = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-10'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-7'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-8'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-9'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.3-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.3-3'] = { + { + arch = "rockspec" + } + }, + ['0.1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['com.logiceditor.fork.crc32'] = { + ['1.1.5.g84430b6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['com.logiceditor.fork.lxsh'] = { + ['0.8.7.7.g1df4485-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + combine = { + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['commander.nvim'] = { + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + commandlineui = { + ['1.69-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.70-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.71-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.72-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.73-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.74-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.75-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.76-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.77-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.78-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['comment-box.nvim'] = { + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['comment.nvim'] = { + ['0.8.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + commonmark = { + ['0.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['commons.nvim'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['10.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['10.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['10.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['10.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['10.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['11.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['11.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['11.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['11.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['11.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['11.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['12.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['12.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['14.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['15.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['15.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['15.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['16.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['17.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['17.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['18.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.4.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.4.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.4.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.5.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.5.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.5.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.6.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.6.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.7.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.7.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.7.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.7.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['7.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['7.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['7.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['8.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['8.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['8.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['8.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['8.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['9.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['9.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['9.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + compat52 = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + compat53 = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.11-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.12-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.13-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['comvita-kong-oidc'] = { + ['1.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + concurrentlua = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + config = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['config-by-env'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + configer = { + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + configh = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + } + }, + configparser = { + ['1.1-1'] = { + { + arch = "rockspec" + } + } + }, + ['conform.nvim'] = { + ['5.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.7.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.8.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + conjure = { + ['4.51.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.52.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.52.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + connman_dbus = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + connman_widget = { + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + context = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + } + }, + contract = { + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + cookie = { + ['1.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + } + } + }, + copas = { + ['1.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + }, + ['1.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + }, + ['1.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + }, + ['1.1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + }, + ['1.1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.7.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.7.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['copas-async'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['copas-ev'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['copas-sse'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + copastimer = { + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + corenlp = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['coro-http-luv'] = { + ['1.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + coronalog = { + ['1.0-0'] = { + { + arch = "rockspec" + } + } + }, + coronastd = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + coronest = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-11'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-12'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-13'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-14'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-16'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-31'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-35'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-36'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-37'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-40'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + corowatch = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + cosmo = { + ['10.03.31-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + } + }, + ['10.04.06-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + } + }, + ['13.01.30-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['14.03.04-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + }, + ['16.06.04-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['8.02.18-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + }, { + arch = "win32-x86" + } + }, + ['8.04.04-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + }, + ['8.04.14-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + }, + ['9.09.22-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + } + } + }, + cosock = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + cosrun = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['cosy-client'] = { + ['0.1-1'] = { + { + arch = "rockspec" + } + } + }, + ['cosy-instance'] = { + ['0.0-2'] = { + { + arch = "rockspec" + } + } + }, + coutil = { + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['couyards.sile'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + } + } + }, + coxpcall = { + ['1.11.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.12.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.13.0-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + }, + ['1.14.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.14.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.15.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.16.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.17.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['cpml-ci'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['cpp-compiler-pretty-output'] = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + cppjwt = { + ['0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + cprint = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['cpu-widget'] = { + ['0.1-1'] = { + { + arch = "rockspec" + } + } + }, + cputime = { + ['0.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + cqueues = { + ['20150119.51-0'] = { + { + arch = "rockspec" + }, { + arch = "linux-x86_64" + }, { + arch = "macosx-x86_64" + }, { + arch = "src" + } + }, + ['20150119.51-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20150119.52-0'] = { + { + arch = "rockspec" + }, { + arch = "linux-x86_64" + }, { + arch = "macosx-x86_64" + }, { + arch = "src" + } + }, + ['20150119.52-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20150119.53-0'] = { + { + arch = "rockspec" + } + }, + ['20150119.53-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20150907.51-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20150907.52-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20150907.53-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20160316.51-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20160316.52-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20160316.53-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20160808.51-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20160808.52-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20160808.53-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20160812.51-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20160812.51-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20160812.52-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20160812.52-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20160812.53-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20160812.53-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20161018.51-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20161018.52-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20161018.53-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20161214.51-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20161214.52-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20161214.53-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20161215.51-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20161215.52-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20161215.53-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20171014.51-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20171014.52-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20171014.53-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20190731.51-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20190731.52-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20190731.53-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20190813.51-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20190813.52-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20190813.53-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20200603.51-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20200603.52-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20200603.53-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20200726.51-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20200726.52-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20200726.53-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20200726.54-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['cqueues-pgsql'] = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + } + }, + crater = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + crayon = { + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + crc32 = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + createtable = { + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + crescent = { + ['0.3.0-1'] = { + { + arch = "rockspec" + } + } + }, + crimp = { + ['1.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + croissant = { + ['0.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.1-2'] = { + { + arch = "rockspec" + } + }, + ['0.0.1-3'] = { + { + arch = "rockspec" + } + }, + ['0.0.1-4'] = { + { + arch = "rockspec" + } + }, + ['0.0.1-5'] = { + { + arch = "rockspec" + } + }, + ['0.0.1-6'] = { + { + arch = "rockspec" + } + } + }, + csn7 = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + csplit = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + csv = { + ['1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + csv2tensor = { + ['0.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + } + }, + ['0.1-3'] = { + { + arch = "rockspec" + } + }, + ['0.2-0'] = { + { + arch = "rockspec" + } + } + }, + ctc = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ctrim = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['ctrl-oidc-transformer'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + cue = { + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + cuid = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + cw = { + ['2.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['cwnu-drcom'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + } + }, + ['2.0-0'] = { + { + arch = "rockspec" + } + }, + ['3.0-0'] = { + { + arch = "rockspec" + } + }, + ['3.1-0'] = { + { + arch = "rockspec" + } + }, + ['3.2-0'] = { + { + arch = "rockspec" + } + } + }, + cwtest = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + } + }, + ['2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['cx-gumbo'] = { + ['0.4-1'] = { + { + arch = "rockspec" + } + } + }, + cxt = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + cyan = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['cybu.nvim'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + cyrussasl = { + ['1.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.1.0-3'] = { + { + arch = "rockspec" + } + } + }, + dado = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + }, + ['1.4.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.7.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.8.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8.2-1'] = { + { + arch = "rockspec" + } + }, + ['1.8.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-3'] = { + { + arch = "rockspec" + } + }, + ['2.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['2.2.0-1'] = { + { + arch = "rockspec" + } + } + }, + daemonparts = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['dag-to-lua'] = { + ['1.0-0'] = { + { + arch = "rockspec" + } + } + }, + danetool = { + ['4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['8-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + darksidesync = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + darwin = { + ['1.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + } + } + }, + data2string = { + ['1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + } + }, + ['1.3-2'] = { + { + arch = "rockspec" + } + } + }, + ['datadome-openresty'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + datadumper = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + datafile = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + dataframe = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + date = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.2-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['daylight.nvim'] = { + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['dbhys-openresty-skywalking'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + dbus_proxy = { + ['0.10.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.10.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.10.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.10.3-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.7.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.8.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.8.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.8.5-1'] = { + { + arch = "rockspec" + } + }, + ['0.9.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['dd-lua-tester'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ddt = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['deadcolumn.nvim'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['debug.lua'] = { + ['0.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.11-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + debugger = { + ['scm-1'] = { + { + arch = "rockspec" + } + } + }, + debugkit = { + ['1.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['debugkit-extra'] = { + ['2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + decasify = { + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['decipher.nvim'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + dedlit = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + deimos = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + delaunay = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + denque = { + ['0.5.1-1'] = { + { + arch = "rockspec" + } + } + }, + densearrays = { + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + depgraph = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + deq = { + ['0.4.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.4-1'] = { + { + arch = "rockspec" + } + } + }, + deque = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['detour.nvim'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['dev-roshangeorge-ljsonschema'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + deviant = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['dial.nvim'] = { + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + dialplan = { + ['0.0-3'] = { + { + arch = "rockspec" + } + } + }, + ['dickens7-snowflake'] = { + ['1.0-1'] = { + { + arch = "rockspec" + } + }, + ['2.0-1'] = { + { + arch = "rockspec" + } + }, + ['2.1-1'] = { + { + arch = "rockspec" + } + } + }, + diff = { + ['8.06.15-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['8.06.15-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + digestif = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['digifi-lua-resty-session'] = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['digiprime-jwt'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.10-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.11-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.12-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.6-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.7-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.8-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.9-1'] = { + { + arch = "rockspec" + } + } + }, + digitalfilter = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + dirname = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + discount = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + } + } + }, + diskop = { + ['1.21.07.29-1'] = { + { + arch = "rockspec" + } + }, + ['1.21.08.13-1'] = { + { + arch = "rockspec" + } + } + }, + diskqueue = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + dislua = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['distant.nvim'] = { + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + djot = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + dkjson = { + ['2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.5-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.5-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + dns = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + } + } + }, + doc = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + doccotest = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + docker = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + docopt = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "all" + } + } + }, + docroc = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['dogma-core'] = { + ['1.0.alpha1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.alpha1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.alpha10-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.alpha11-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.alpha2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.alpha3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.alpha4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.alpha5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.alpha6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.alpha7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.alpha8-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.alpha9-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta10-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta11-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta11-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta11-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta12-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta13-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta13-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta13-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta14-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta14-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta14-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta14-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta15-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta15-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta16-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta16-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta16-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta16-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta17-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta17-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta17-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta17-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta17-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta18-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta18-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta19-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta20-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta21-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta21-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta21-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta22-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta23-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta23-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta24-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta25-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta25-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta25-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta25-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta26-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta26-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta27-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta27-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta28-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta29-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta30-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta31-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta31-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta32-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta33-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta34-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta5-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta6-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta6-10'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta6-11'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta6-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta6-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta6-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta6-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta6-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta6-7'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta6-8'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta6-9'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta7-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta7-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta8-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta9-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc10-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc10-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc11-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc12-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc12-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc12-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc12-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc12-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc12-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc12-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc13-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc13-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc14-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc15-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc16-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc17-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc17-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc18-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc18-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc18-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc18-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc18-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc3-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc6-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc7-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc8-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc8-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc8-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc9-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + dogmac = { + ['1.0.alpha1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.alpha1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.alpha1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.alpha1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.alpha10-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.alpha11-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.alpha2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.alpha2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.alpha3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.alpha4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.alpha5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.alpha6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.alpha7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.alpha8-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.alpha9-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta10-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta11-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta12-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta13-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta14-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta15-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta16-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta17-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta18-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta18-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta19-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta20-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta21-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta22-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta23-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta23-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta24-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta25-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta26-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta27-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta28-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta29-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta30-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta31-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta31-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta32-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta33-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta34-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta6-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta7-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta8-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta9-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.beta9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc10-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc11-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc11-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc12-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc13-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc14-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc15-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc16-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc17-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc18-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc6-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc7-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc8-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.rc9-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + domotest = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['donut.nvim'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + dotenv = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + dprint = { + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['dr.msgpuck'] = { + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['dr.tap'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-10'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-11'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-12'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-13'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-14'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-15'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-16'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-7'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-8'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-9'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['dressing.nvim'] = { + ['2.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['dromozoa-amalgamate'] = { + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['dromozoa-calendar'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.11-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.12-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.13-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['dromozoa-chunk'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['dromozoa-commons'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.11-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.12-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.13-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.14-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.15-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.16-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.17-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.18-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.19-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.20-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.21-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.22-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.23-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.24-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.25-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.26-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.27-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.28-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.29-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.30-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.31-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.32-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.33-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.34-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.35-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.36-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.37-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.38-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.39-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.40-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.41-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.42-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.43-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.44-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.45-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.46-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.47-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.48-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.49-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.50-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.51-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.52-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.53-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.54-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.55-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.56-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.57-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.58-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.59-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.60-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.61-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.63-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.64-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['dromozoa-compiler'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['dromozoa-curl'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.11-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.12-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.13-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.14-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.15-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.16-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.17-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.18-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['dromozoa-dom'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['dromozoa-dyld'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.11-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.12-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.13-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.14-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['dromozoa-fuse'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.11-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.12-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.13-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.14-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.15-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.16-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.17-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.18-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.19-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['dromozoa-future'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['dromozoa-graph'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.11-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.12-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.14-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.15-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.16-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.17-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.18-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.19-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.20-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.21-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.22-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.23-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.24-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.25-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.26-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.27-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.28-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.29-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.30-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.31-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.32-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.33-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.34-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.35-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.36-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.37-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.38-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.39-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.40-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.41-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['dromozoa-http'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.11-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.12-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['dromozoa-image'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['dromozoa-jpeg'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['dromozoa-json'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['dromozoa-lambda'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['dromozoa-multi'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.11-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.12-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.13-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.14-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.15-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['dromozoa-parser'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.11-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.12-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.13-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.14-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.15-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.16-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.17-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.18-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.19-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.20-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['dromozoa-png'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['dromozoa-primitives'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['dromozoa-prl'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['dromozoa-regexp'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['dromozoa-serializer'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['dromozoa-shlex'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['dromozoa-socks'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['dromozoa-sqlite3'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.11-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.12-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.13-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.14-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.15-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.16-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.17-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.18-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.19-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.20-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.21-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.22-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.23-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.24-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.25-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['dromozoa-tree'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.11-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.12-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.13-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['dromozoa-ubench'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['dromozoa-unix'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.12-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.13-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.14-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.15-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.16-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.17-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.18-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.19-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.20-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.21-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.22-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.23-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.24-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.25-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.26-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.27-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.28-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.29-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.30-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.31-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.32-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.33-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.34-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.35-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.36-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.37-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.38-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.39-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.40-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.41-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.42-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.43-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.44-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.45-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.46-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.47-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.48-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.49-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.50-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.51-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.52-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.53-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.54-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.55-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.56-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.57-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.58-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.59-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.60-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.61-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.62-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.63-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.64-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.65-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.66-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.67-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.68-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.69-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.70-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.71-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.72-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['dromozoa-utf8'] = { + ['1.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.11-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.12-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.13-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.14-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.15-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.16-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.17-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.18-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['dromozoa-vecmath'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.11-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.12-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.13-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.14-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.15-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.16-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.17-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['dromozoa-xml'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['dromozoa-zmq'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.11-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.12-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.13-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.14-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.15-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.16-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.17-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.18-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.19-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.20-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.21-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.22-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['dropbar.nvim'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['7.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['7.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['7.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['7.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['7.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['8.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['8.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['8.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['8.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['8.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['8.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['8.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['8.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + drylib = { + ['0.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ds = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-10'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-11'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-7'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-8'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + dtracing = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['du-bundler'] = { + ['1.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['du-mocks'] = { + ['0.24.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.24.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.24.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.25.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.26.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.26.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.28.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.29.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.29.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + dub = { + ['2.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + dublang = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['duck.nvim'] = { + ['main-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + dumbluaparser = { + ['2.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['dummy.lua'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + dump = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + } + } + }, + dumper = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + dyana = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['eagle-lua-package'] = { + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + eansi = { + ['1.1-0'] = { + { + arch = "rockspec" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.2-0'] = { + { + arch = "rockspec" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + } + } + }, + ['easy-http'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['easyjevko.lua'] = { + ['0.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['easypick.nvim'] = { + ['0.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['eaw-abstraction-layer'] = { + ['0.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + } + }, + ['0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ecasound = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + eccles = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + eclass = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + edge = { + ['0.0.1-10'] = { + { + arch = "rockspec" + } + }, + ['0.0.1-11'] = { + { + arch = "rockspec" + } + }, + ['0.0.1-12'] = { + { + arch = "rockspec" + } + }, + ['0.0.1-13'] = { + { + arch = "rockspec" + } + }, + ['0.0.1-4'] = { + { + arch = "rockspec" + } + }, + ['0.0.1-5'] = { + { + arch = "rockspec" + } + }, + ['0.0.1-6'] = { + { + arch = "rockspec" + } + }, + ['0.0.1-7'] = { + { + arch = "rockspec" + } + }, + ['0.0.1-8'] = { + { + arch = "rockspec" + } + }, + ['0.0.1-9'] = { + { + arch = "rockspec" + } + } + }, + ['edgy.nvim'] = { + ['1.8.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['editorconfig-core'] = { + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + } + } + }, + eff = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-10'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-11'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-7'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-8'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-9'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + effil = { + ['1.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + eja = { + ['1-0'] = { + { + arch = "rockspec" + } + } + }, + elasticsearch = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['elasticsearch-lua'] = { + ['1.0.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.11-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ele = { + ['0.1-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + elementslib = { + ['0.2-0'] = { + { + arch = "rockspec" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + elfmap = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-10'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-11'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-12'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-7'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-8'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-9'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + elfs = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + elfutils = { + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + } + } + }, + ['elixir-tools.nvim'] = { + ['0.13.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.14.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.14.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.14.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + elprofiler = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + elscheduler = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['embedders.sile'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + emdcriterion = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + emitter = { + ['0.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + emma = { + ['1.0-0'] = { + { + arch = "rockspec" + } + } + }, + emoji = { + ['1.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['emoji-clock'] = { + ['scm-1'] = { + { + arch = "rockspec" + } + } + }, + emojify = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['empty-params-blocker'] = { + ['0.1-2'] = { + { + arch = "rockspec" + } + }, + ['0.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-4'] = { + { + arch = "rockspec" + } + }, + ['0.1-5'] = { + { + arch = "rockspec" + } + }, + ['0.1-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-7'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-8'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-9'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ena = { + ['0.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.2-2'] = { + { + arch = "rockspec" + } + } + }, + ['enapter-sma'] = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['enapter-ucm'] = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.7-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.8-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['endel-struct'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + enet = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + enum = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + env = { + ['0.1-0'] = { + { + arch = "rockspec" + } + }, + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + environ = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + epoll = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + } + } + }, + erde = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['erento-lua-rfc-4122-uuid-generator'] = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ergonomic_seed = { + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + errno = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.0-2'] = { + { + arch = "rockspec" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + } + } + }, + error = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.10.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.11.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.12.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.13.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.6.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.6.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.6.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.6.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.7.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.8.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.9.0-1'] = { + { + arch = "rockspec" + } + } + }, + escher = { + ['0.1-8'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-9'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-10'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-11'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-12'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-13'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-15'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-16'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-17'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-7'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-8'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-9'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['esk-lua-resty-auto-ssl'] = { + ['0.13.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + espeon = { + ['0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.3-0'] = { + { + arch = "rockspec" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.4-0'] = { + { + arch = "rockspec" + } + }, + ['0.5-0'] = { + { + arch = "rockspec" + } + }, + ['0.6-0'] = { + { + arch = "rockspec" + } + }, + ['0.7-0'] = { + { + arch = "rockspec" + } + }, + ['0.7-1'] = { + { + arch = "rockspec" + } + }, + ['0.8-0'] = { + { + arch = "rockspec" + } + }, + ['0.8-1'] = { + { + arch = "rockspec" + } + }, + ['0.9-0'] = { + { + arch = "rockspec" + } + }, + ['1.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.1-0'] = { + { + arch = "rockspec" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.10-0'] = { + { + arch = "rockspec" + } + }, + ['1.11-0'] = { + { + arch = "rockspec" + } + }, + ['1.12-0'] = { + { + arch = "rockspec" + } + }, + ['1.3-0'] = { + { + arch = "rockspec" + } + }, + ['1.4-0'] = { + { + arch = "rockspec" + } + }, + ['1.5-0'] = { + { + arch = "rockspec" + } + }, + ['1.6-0'] = { + { + arch = "rockspec" + } + }, + ['1.7-0'] = { + { + arch = "rockspec" + } + }, + ['1.8-0'] = { + { + arch = "rockspec" + } + }, + ['1.9-0'] = { + { + arch = "rockspec" + } + } + }, + etcd = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + etf = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + etlua = { + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + evdev = { + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + eventbus = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + eventemitter = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + evm = { + ['0.10.0-1'] = { + { + arch = "rockspec" + } + } + }, + exaerror = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['2.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['2.0.2-1'] = { + { + arch = "rockspec" + } + }, + ['2.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['exasol-virtual-schema-common-lua'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['exasol-virtual-schema-lua'] = { + ['0.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + exec = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.5.1-1'] = { + { + arch = "rockspec" + } + } + }, + exists = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + exit = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + } + }, + expadom = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + expect = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['expect-promise'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['expect-spy'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['ext-plugin-proto'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + }, + ['0.1.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['extend.sile'] = { + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['external-auth'] = { + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['external-oauth'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['external-oauth2'] = { + ['1.2-6'] = { + { + arch = "rockspec" + } + } + }, + ['external-oauth3'] = { + ['1.1-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['external-oid'] = { + ['1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + extname = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ezenv = { + ['1.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.1-0'] = { + { + arch = "rockspec" + } + }, + ['1.2-0'] = { + { + arch = "rockspec" + } + } + }, + ezserv = { + ['1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + } + } + }, + f = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['f-strings'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['f.lua'] = { + ['1.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['fa-icons-4'] = { + ['1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + faker = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + fakeredis = { + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + faketorio = { + ['0.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + families = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['fancytoc.sile'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + } + } + }, + fat_error = { + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + fauxo = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + fbclient = { + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + fcgi = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + fd = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-7'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + feedparser = { + ['0.71-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.71-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.71-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['feline.nvim'] = { + ['1.5.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + fennel = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.10.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.1-3'] = { + { + arch = "rockspec" + } + }, + ['0.4.1-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['fennel-ls'] = { + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + fennel_rblx = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + fenster = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ff = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['ff-lua'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['fffonion-busted'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['fffonion-lua-resty-kafka'] = { + ['0.15-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.15-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.15-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['ffi-bzlib'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['ffi-hyperparser'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.4-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ffiex = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-8'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + fhirformats = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + } + } + }, + ['fi-luajit'] = { + ['1.0'] = { + { + arch = "rockspec" + } + } + }, + fiber = { + ['0.1-2'] = { + { + arch = "rockspec" + } + }, + ['0.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-7'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-8'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['fidget.nvim'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + fifo = { + ['0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + } + }, + filament = { + ['v1.0-1'] = { + { + arch = "rockspec" + } + }, + ['v1.1-1'] = { + { + arch = "rockspec" + } + } + }, + filekit = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + finally = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + finita = { + ['1.0-0'] = { + { + arch = "rockspec" + } + } + }, + fir = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + firebase = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['flash.nvim'] = { + ['1.18.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.18.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['flatbuffers-lib'] = { + ['2.0.0-5'] = { + { + arch = "rockspec" + } + } + }, + flatfile = { + ['1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['flatten.nvim'] = { + ['0.5.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + flirt = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['flomesh-kong-plugin-session'] = { + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.3-1'] = { + { + arch = "rockspec" + } + }, + ['2.1.2-1'] = { + { + arch = "rockspec" + } + } + }, + ['flomesh-lua-resty-healthcheck'] = { + ['0.6.2-1'] = { + { + arch = "rockspec" + } + } + }, + ['flomesh-lua-resty-kafka'] = { + ['0.01-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.01-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.01-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.01-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.01-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + flos = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + flot = { + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + fltk4lua = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + flu = { + ['20101020-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20121106-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20121212-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20150331-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20181218-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + fluent = { + ['0.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + fluidsynth = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['flutter-tools.nvim'] = { + ['1.10.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['fly-bgcrypto-pbkdf2'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['fly-bgcrypto-sha'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + flyzip = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + fmtstr = { + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['focus.nvim'] = { + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + fontproof = { + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.11-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + fork = { + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['fork3-sc-lua-resty-auto-ssl'] = { + ['0.12.0-1'] = { + { + arch = "rockspec" + } + } + }, + form = { + ['0.3.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['form-multipart'] = { + ['0.3.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['form-urlencoded'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + } + }, + forma = { + ['0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + formatter = { + ['0.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + formatterfiveone = { + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + fp = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + fr = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + freetype = { + ['20140717-1'] = { + { + arch = "rockspec" + } + }, + ['20160824-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['freeze-code.nvim'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['fs-utils'] = { + ['1.0.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + fsm = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + fsoutcall = { + ['1.0.1-8'] = { + { + arch = "rockspec" + } + } + }, + fsrouter = { + ['0.4.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.6.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.7.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.7.1-1'] = { + { + arch = "rockspec" + } + } + }, + fss = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + fstat = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.2-1'] = { + { + arch = "rockspec" + } + } + }, + ftcsv = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['fugit2.nvim'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['fullscript-kong-oidc'] = { + ['1.2.3-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + fun = { + ['0.1.3-1'] = { + { + arch = "rockspec" + } + } + }, + ['fun-alloyed'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['function.lua'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + functional = { + ['0.10-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.11-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9-2'] = { + { + arch = "rockspec" + } + }, + ['0.9-3'] = { + { + arch = "rockspec" + } + }, + ['0.9-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + functorflow = { + ['0'] = { + { + arch = "rockspec" + } + } + }, + ['funnyfiles.nvim'] = { + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + fusionscript = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['fzf-lua'] = { + ['0.0.1000-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1003-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1005-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1007-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1009-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1011-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1013-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1017-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1019-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1021-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1023-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1024-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1026-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1027-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1028-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1031-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1033-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1035-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1037-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1039-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1040-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1046-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1048-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1049-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1052-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1053-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1055-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1058-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1059-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1061-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1064-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1065-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1066-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1067-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1068-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1070-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1071-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1072-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1075-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1076-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1079-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1080-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1084-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1085-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1090-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1091-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1093-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1095-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1097-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1098-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1099-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1100-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1102-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1103-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1106-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1107-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1110-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1111-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1112-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1114-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1117-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1118-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1121-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1131-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1132-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1134-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1136-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1141-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1144-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1147-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1151-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1155-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1161-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1166-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1170-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1171-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1172-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1175-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1179-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1181-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1184-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1186-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1187-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1190-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1191-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1192-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1194-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1195-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1196-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1202-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1207-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1211-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1213-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1216-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1219-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1220-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1221-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1222-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1225-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1226-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1229-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1231-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1232-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1243-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1246-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1253-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1255-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1261-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1264-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1265-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1266-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1268-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1269-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1273-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1274-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1277-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1278-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1283-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1286-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1287-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1288-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1289-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1291-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1294-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1296-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1298-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1301-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1302-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1304-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1309-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1313-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1318-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1320-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1323-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1334-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1337-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1338-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1340-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1341-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1342-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1349-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1350-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.769-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.771-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.776-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.777-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.778-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.780-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.783-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.785-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.788-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.789-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.790-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.794-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.795-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.797-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.798-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.799-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.800-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.804-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.807-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.809-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.810-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.811-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.814-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.815-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.817-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.821-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.823-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.825-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.827-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.831-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.832-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.834-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.837-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.839-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.844-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.847-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.850-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.851-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.853-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.854-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.855-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.856-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.858-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.860-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.863-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.865-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.872-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.874-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.875-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.877-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.878-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.886-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.887-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.888-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.896-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.897-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.898-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.903-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.906-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.912-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.916-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.918-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.921-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.924-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.928-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.929-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.931-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.936-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.939-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.940-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.942-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.943-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.949-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.951-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.954-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.955-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.956-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.958-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.960-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.961-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.964-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.965-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.967-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.968-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.970-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.974-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.975-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.977-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.978-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.981-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.983-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.984-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.986-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.990-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.993-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.996-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['fzfx.nvim'] = { + ['3.7.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.4.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.5.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.6.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.7.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.7.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.7.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.7.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + fzy = { + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['main-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + galconmodslib = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['galileo.nvim'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + gambiarra = { + ['0.4.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['game-tools'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-2'] = { + { + arch = "rockspec" + } + }, + ['0.4.0-3'] = { + { + arch = "rockspec" + } + } + }, + gamecake = { + ['18-005'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['18-006'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['22-001'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + gauge = { + ['1.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + gbk = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + gcfn = { + ['0.2.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + } + } + }, + gear = { + ['0.01-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.02-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.03-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + geezifylua = { + ['0.1.3-2'] = { + { + arch = "rockspec" + } + } + }, + ['genesi-password'] = { + ['1.1-0'] = { + { + arch = "rockspec" + } + }, + ['1.1.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.1.1-0'] = { + { + arch = "rockspec" + } + } + }, + genny = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['gentags.nvim'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + geo = { + ['1.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + geoip2 = { + ['1.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + gerar_cpf_cnpj = { + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + getcwd = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + } + }, + getenv = { + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + } + } + }, + getopt = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-2'] = { + { + arch = "rockspec" + } + } + }, + getopts = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + getpid = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + getsize = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ggram = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['gh-md-toc'] = { + ['1.3-0'] = { + { + arch = "rockspec" + } + }, + ['1.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['ghl-lua-auto-ssl'] = { + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['ghl-lua-resty-auto-ssl'] = { + ['0.13.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + giflib = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['gimlet-cocktail'] = { + ['0.1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['gimlet-render'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + gimple = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + gin = { + ['0.2.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + girvel = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['git-worktree.nvim'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + github = { + ['0.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + } + } + }, + ['github-nvim-theme'] = { + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['gitlinker.nvim'] = { + ['4.10.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.11.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.12.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.12.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.12.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.12.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.13.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.13.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.8.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.8.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.8.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.9.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['gitsigns.nvim'] = { + ['scm-1'] = { + { + arch = "rockspec" + } + } + }, + giturlparser = { + ['1.0.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + glass = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + glfw = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['globals-lua'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['glow.nvim'] = { + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + glum = { + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['gluu-oauth2-client-auth'] = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['gluu-oauth2-rs'] = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + glyphify = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + gmi = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + gntp = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + gnucrypt = { + ['0.0.1-0'] = { + { + arch = "rockspec" + } + } + }, + ['go.nvim'] = { + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['gobo-awesome'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['gobo-awesome-alttab'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['gobo-awesome-battery'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['gobo-awesome-bluetooth'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['gobo-awesome-gobonet'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['gobo-awesome-light'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['gobo-awesome-screenlock'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['gobo-awesome-sound'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['godo.nvim'] = { + ['1.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + golflike = { + ['0.6b-1'] = { + { + arch = "rockspec" + } + } + }, + gomaxmagick = { + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['gonapps-cookie'] = { + ['1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.1-2'] = { + { + arch = "rockspec" + } + }, + ['1.1-3'] = { + { + arch = "rockspec" + } + } + }, + ['gonapps-jwt'] = { + ['1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + } + }, + ['1.0-3'] = { + { + arch = "rockspec" + } + } + }, + ['gonapps-url-decoder'] = { + ['1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.1-2'] = { + { + arch = "rockspec" + } + }, + ['1.1-3'] = { + { + arch = "rockspec" + } + }, + ['1.1-4'] = { + { + arch = "rockspec" + } + } + }, + ['gonapps-url-encoder'] = { + ['1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + } + }, + ['1.0-3'] = { + { + arch = "rockspec" + } + } + }, + ['gonapps-url-query-parser'] = { + ['1.0-2'] = { + { + arch = "rockspec" + } + }, + ['1.0-3'] = { + { + arch = "rockspec" + } + }, + ['1.0-4'] = { + { + arch = "rockspec" + } + } + }, + ['gonapps-url-router'] = { + ['1.1-2'] = { + { + arch = "rockspec" + } + }, + ['1.1-3'] = { + { + arch = "rockspec" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + } + } + }, + gpoll = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.6.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.7.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.8.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.9.0-1'] = { + { + arch = "rockspec" + } + } + }, + grapheme = { + ['master-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + graphql = { + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['graphql-parser'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + graphviz = { + ['v1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['v1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['grapple.nvim'] = { + ['0.17.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.18.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.18.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.19.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.20.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.22.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.23.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.24.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.24.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.25.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.26.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.27.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.28.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.28.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.28.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.28.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.29.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.30.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + grasp = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + grid = { + ['1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['grpc-client-nginx-module'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['gruvbox-baby'] = { + ['0.1.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['gruvbox.nvim'] = { + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['gt-mp-prometheus-plugin'] = { + ['1.3.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.3.1-1'] = { + { + arch = "rockspec" + } + } + }, + guard = { + ['0.0.1-1'] = { + { + arch = "rockspec" + } + } + }, + guardia = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + gumbo = { + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.4-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + gversion = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['gwa-kong-endpoint'] = { + ['1.2.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.2-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['gxid-bearer'] = { + ['0.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.3.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.3.2-1'] = { + { + arch = "rockspec" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['2.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['3.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['4.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['4.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['4.0.2-1'] = { + { + arch = "rockspec" + } + }, + ['4.0.3-1'] = { + { + arch = "rockspec" + } + }, + ['4.0.4-1'] = { + { + arch = "rockspec" + } + }, + ['4.0.5-1'] = { + { + arch = "rockspec" + } + }, + ['4.0.6-1'] = { + { + arch = "rockspec" + } + }, + ['4.0.7-1'] = { + { + arch = "rockspec" + } + }, + ['4.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['4.1.1-1'] = { + { + arch = "rockspec" + } + }, + ['4.1.2-1'] = { + { + arch = "rockspec" + } + }, + ['4.1.2-2'] = { + { + arch = "rockspec" + } + }, + ['4.1.2-60'] = { + { + arch = "rockspec" + } + }, + ['4.1.3-61'] = { + { + arch = "rockspec" + } + }, + ['4.1.3-62'] = { + { + arch = "rockspec" + } + }, + ['4.1.3-63'] = { + { + arch = "rockspec" + } + }, + ['4.1.3-64'] = { + { + arch = "rockspec" + } + }, + ['4.1.3-65'] = { + { + arch = "rockspec" + } + }, + ['4.1.3-72'] = { + { + arch = "rockspec" + } + } + }, + ['gxid-param'] = { + ['1.0.0-2'] = { + { + arch = "rockspec" + } + } + }, + ['gxs-auth'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.1.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.1.2-1'] = { + { + arch = "rockspec" + } + }, + ['1.1.3-1'] = { + { + arch = "rockspec" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['2.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['2.0.1-2'] = { + { + arch = "rockspec" + } + }, + ['2.0.1-3'] = { + { + arch = "rockspec" + } + }, + ['2.0.2-10'] = { + { + arch = "rockspec" + } + }, + ['2.0.2-4'] = { + { + arch = "rockspec" + } + }, + ['2.0.2-5'] = { + { + arch = "rockspec" + } + }, + ['2.0.2-6'] = { + { + arch = "rockspec" + } + }, + ['2.0.2-7'] = { + { + arch = "rockspec" + } + }, + ['2.0.3-11'] = { + { + arch = "rockspec" + } + }, + ['2.0.3-12'] = { + { + arch = "rockspec" + } + } + }, + h5tk = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + halo = { + ['1.1.8-1'] = { + { + arch = "rockspec" + } + }, + ['1.1.9-1'] = { + { + arch = "rockspec" + } + } + }, + ['haproxy-lua-acme'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['haproxy-lua-http'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + haricot = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + harpseal = { + ['1.0.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.0.1-0'] = { + { + arch = "rockspec" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.3-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.4-1'] = { + { + arch = "rockspec" + } + } + }, + harryplotter = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + hash = { + ['1.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['hash-code'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + hasher = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + hashids = { + ['1.0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['haskell-snippets.nvim'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['haskell-tools.nvim'] = { + ['1.10.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.10.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.10.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.11.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.11.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.11.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.11.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.1.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.1.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.1.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.1.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['haxe-deps'] = { + ['0.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-5'] = { + { + arch = "rockspec" + } + }, + ['0.0.1-6'] = { + { + arch = "rockspec" + } + } + }, + hc = { + ['0.1-1'] = { + { + arch = "rockspec" + } + } + }, + hdf5 = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + hdrhistogram = { + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['header-transfer'] = { + ['0.0.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['headlines.nvim'] = { + ['4.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + heaps = { + ['1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['hectorm-fork-http'] = { + ['0.3.1-0'] = { + { + arch = "rockspec" + } + } + }, + ['heirline.nvim'] = { + ['1.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + heka_mock = { + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + } + } + }, + helloluarocks = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + helloworld = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['heroku-openresty'] = { + ['1.2.8.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + hex = { + ['1.0.2-1'] = { + { + arch = "rockspec" + } + } + }, + hexterm = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + hfun = { + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['master-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['master-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + hglib = { + ['0.8-1'] = { + { + arch = "rockspec" + } + } + }, + ['hires-time'] = { + ['0.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['hjson-lua'] = { + ['0.1.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.5-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['hlchunk.nvim'] = { + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + hmac = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['hmac-auth-okadoc'] = { + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + homie = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + hook_nt_create_file = { + ['0.1-1'] = { + { + arch = "rockspec" + } + } + }, + horchata = { + ['0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + host = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['host-interpolate-by-header'] = { + ['1.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + hotfix = { + ['0.1-1'] = { + { + arch = "rockspec" + } + } + }, + ['hotfix-gen'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['hotpot.nvim'] = { + ['0.12.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.12.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + hotswap = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['hotswap-ev'] = { + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['hotswap-hash'] = { + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['hotswap-http'] = { + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['hotswap-lfs'] = { + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + howl = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + hprose = { + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + } + }, + ['1.0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "all" + } + }, + ['1.0.1-3'] = { + { + arch = "rockspec" + }, { + arch = "all" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + hsluv = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + hsm_statechart = { + ['0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ht16k33 = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + htk = { + ['3.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.4.0-2'] = { + { + arch = "rockspec" + } + }, + ['3.5-1'] = { + { + arch = "rockspec" + } + } + }, + ['html-entities'] = { + ['1.0.2-0'] = { + { + arch = "rockspec" + } + }, + ['1.1.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.1.1-0'] = { + { + arch = "rockspec" + } + }, + ['1.2.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.3.1-0'] = { + { + arch = "rockspec" + } + } + }, + ['html-tags'] = { + ['0.1.20210829-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.20210909-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.20211012-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + htmlparser = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.4-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + httoolsp = { + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + http = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + }, + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-0'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + } + }, + ['http-digest'] = { + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + httpclient = { + ['0.1.0-3'] = { + { + arch = "rockspec" + } + }, + ['0.1.0-4'] = { + { + arch = "rockspec" + } + }, + ['0.1.0-5'] = { + { + arch = "rockspec" + } + }, + ['0.1.0-6'] = { + { + arch = "rockspec" + } + }, + ['0.1.0-7'] = { + { + arch = "rockspec" + } + }, + ['0.1.0-8'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + httprequestparser = { + ['ver-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['ver-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['ver-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + hump = { + ['0.4-2'] = { + { + arch = "rockspec" + } + } + }, + hungarian = { + ['1.0-0'] = { + { + arch = "rockspec" + } + } + }, + huntable = { + ['0.9-1'] = { + { + arch = "rockspec" + } + } + }, + hurdy = { + ['0.1.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.4-1'] = { + { + arch = "rockspec" + } + } + }, + husl = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + hussar = { + ['0.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['hx-lua-simdjson'] = { + ['0.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-1'] = { + { + arch = "rockspec" + } + } + }, + ['hydra.nvim'] = { + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['hylaa-im-auth'] = { + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['hyper-ecs'] = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + i18n = { + ['0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.9.2-1'] = { + { + arch = "rockspec" + } + } + }, + iame = { + ['master-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + icecream = { + ['0.5.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['icecream-lua'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + icu = { + ['0.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + idn2 = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + idna = { + ['1.0.0-1'] = { + { + arch = "rockspec" + } + } + }, + ihelp = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['image.nvim'] = { + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['master-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + image_handler = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + imagesize = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + imgui = { + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + immutable = { + ['1.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['imp-appsec-connector'] = { + ['1.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['incline.nvim'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['indent-blankline.nvim'] = { + ['3.5.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.5.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.6.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.6.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.6.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + indexedpng = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + inet = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['ingress-nginx-safeline'] = { + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + inifile = { + ['1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + inilazy = { + ['1.05-1'] = { + { + arch = "rockspec" + } + } + }, + injarg = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + }, + ['0.1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + inline = { + ['0.1-0'] = { + { + arch = "rockspec" + } + } + }, + inotify = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + inspect = { + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0-1'] = { + { + arch = "rockspec" + } + }, + ['3.0-2'] = { + { + arch = "rockspec" + } + }, + ['3.0-3'] = { + { + arch = "rockspec" + } + }, + ['3.0-4'] = { + { + arch = "rockspec" + } + }, + ['3.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['3.1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.1.2-0'] = { + { + arch = "rockspec" + } + }, + ['3.1.3-0'] = { + { + arch = "rockspec" + } + } + }, + intconvert = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['io-close'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['io-fileno'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['io-fopen'] = { + ['0.1.3-1'] = { + { + arch = "rockspec" + } + } + }, + ['io-isfile'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['io-reader'] = { + ['0.3.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['io-readn'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['io-tofile'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + } + } + }, + ['io-truncate'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['io-wait'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.1-1'] = { + { + arch = "rockspec" + } + } + }, + ['io-writer'] = { + ['0.3.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['io-writev'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ioex = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['ios-icons'] = { + ['1.1-1'] = { + { + arch = "rockspec" + } + } + }, + iovec = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.6.0-1'] = { + { + arch = "rockspec" + } + } + }, + ip2location = { + ['8.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['8.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['8.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['8.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['8.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['8.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['8.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['8.6.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['8.7.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ip2locationio = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ip2proxy = { + ['3.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ipdb = { + ['beta-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['beta-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ipipx = { + ['beta-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['ipqs-db-reader'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['irc-engine'] = { + ['5.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.0.0.pre5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['irc-formatter'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['irc-parser'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ircmess = { + ['0.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['iresty-nginx-lua-prometheus'] = { + ['0.20190917-0'] = { + { + arch = "rockspec" + } + } + }, + iris = { + ['0.1-1'] = { + { + arch = "rockspec" + } + } + }, + is = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + isa = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + } + } + }, + isodd = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + iter = { + ['0.0-0'] = { + { + arch = "rockspec" + } + }, + ['0.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + } + } + }, + itertools = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + itte = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + iwi = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + jeejah = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-2'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-3'] = { + { + arch = "rockspec" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-4'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-2'] = { + { + arch = "rockspec" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + jestronaut = { + ['0.2-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['jevko.lua'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + jmespath = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + jnet = { + ['1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + } + } + }, + ['johngrib.hammerspoon.caffein'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['johngrib.hammerspoon.winmove'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + jps = { + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + jsmin = { + ['0.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.1-2'] = { + { + arch = "rockspec" + } + } + }, + ['json-logic-lua'] = { + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['json-lua'] = { + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + } + }, + ['0.1-3'] = { + { + arch = "rockspec" + } + }, + ['0.1-4'] = { + { + arch = "rockspec" + } + } + }, + ['json-rock'] = { + ['2.0-4'] = { + { + arch = "rockspec" + } + } + }, + ['json-rpc'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['json-threat-protection'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['json.lua'] = { + ['0.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + json2lua = { + ['0.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.2-2'] = { + { + arch = "rockspec" + } + }, + ['0.3.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + json4lua = { + ['0.9.20-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.30-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + jsonnet = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + jsonpath = { + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + jsonrpc4lua = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + jsonschema = { + ['0.3-0'] = { + { + arch = "rockspec" + } + }, + ['0.4-0'] = { + { + arch = "rockspec" + } + }, + ['0.5-0'] = { + { + arch = "rockspec" + } + }, + ['0.6-0'] = { + { + arch = "rockspec" + } + }, + ['0.7-0'] = { + { + arch = "rockspec" + } + }, + ['0.8-0'] = { + { + arch = "rockspec" + } + }, + ['0.9-0'] = { + { + arch = "rockspec" + } + }, + ['0.9.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.9.2-0'] = { + { + arch = "rockspec" + } + }, + ['0.9.3-0'] = { + { + arch = "rockspec" + } + }, + ['0.9.4-0'] = { + { + arch = "rockspec" + } + }, + ['0.9.5-0'] = { + { + arch = "rockspec" + } + }, + ['0.9.6-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.7-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.8-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.9-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['jsonschema-gitless'] = { + ['0.9-0'] = { + { + arch = "rockspec" + } + } + }, + ['jsonschema-mocker'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + jsregexp = { + ['0.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['jumbleberry-auto-ssl'] = { + ['0.13.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['jumbleberry-dogstatsd'] = { + ['1.0.1-1'] = { + { + arch = "rockspec" + } + } + }, + ['jumbleberry-statsd'] = { + ['3.0.2-1'] = { + { + arch = "rockspec" + } + } + }, + jumper = { + ['1.6-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8.0'] = { + { + arch = "rockspec" + } + }, + ['1.8.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + jwks_aware_oauth_jwt_access_token_validator = { + ['0.1-1'] = { + { + arch = "rockspec" + } + } + }, + jwt = { + ['0.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + } + }, + ['0.1-3'] = { + { + arch = "rockspec" + } + }, + ['0.1-4'] = { + { + arch = "rockspec" + } + }, + ['0.1-5'] = { + { + arch = "rockspec" + } + }, + ['0.2-0'] = { + { + arch = "rockspec" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.3-0'] = { + { + arch = "rockspec" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.3-2'] = { + { + arch = "rockspec" + } + }, + ['0.4-0'] = { + { + arch = "rockspec" + } + }, + ['0.5-1'] = { + { + arch = "rockspec" + } + }, + ['0.5-2'] = { + { + arch = "rockspec" + } + } + }, + ['jwt-jitsi'] = { + ['0.6-2'] = { + { + arch = "rockspec" + } + } + }, + ['k-stream'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['k-sway'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + kafka = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kai.nvim'] = { + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + kcp = { + ['1.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7-7'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + kcp2 = { + ['2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kemi-test-suite'] = { + ['0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.2-2'] = { + { + arch = "rockspec" + } + }, + ['0.3-2'] = { + { + arch = "rockspec" + } + }, + ['0.3-4'] = { + { + arch = "rockspec" + } + }, + ['0.3-5'] = { + { + arch = "rockspec" + } + }, + ['0.3-6'] = { + { + arch = "rockspec" + } + }, + ['0.3-7'] = { + { + arch = "rockspec" + } + } + }, + keyauthvaluepass = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + } + }, + ['1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['keycloak-rbac'] = { + ['1.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + kikgit = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + kiwi = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + klib = { + ['1.0-0'] = { + { + arch = "rockspec" + } + } + }, + kong = { + ['0.1.0beta-3'] = { + { + arch = "rockspec" + } + }, + ['0.1.1beta-2'] = { + { + arch = "rockspec" + } + }, + ['0.10.0-0'] = { + { + arch = "rockspec" + } + }, + ['0.10.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.10.2-0'] = { + { + arch = "rockspec" + } + }, + ['0.10.3-0'] = { + { + arch = "rockspec" + } + }, + ['0.10.4-0'] = { + { + arch = "rockspec" + } + }, + ['0.11.0-0'] = { + { + arch = "rockspec" + } + }, + ['0.11.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.11.2-0'] = { + { + arch = "rockspec" + } + }, + ['0.12.0-0'] = { + { + arch = "rockspec" + } + }, + ['0.12.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.12.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.12.3-0'] = { + { + arch = "rockspec" + } + }, + ['0.13.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.13.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.14.0-0'] = { + { + arch = "rockspec" + } + }, + ['0.14.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-2'] = { + { + arch = "rockspec" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.5.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.5.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.5.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.6.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.6.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.7.0-0'] = { + { + arch = "rockspec" + } + }, + ['0.8.0-0'] = { + { + arch = "rockspec" + } + }, + ['0.8.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.8.2-0'] = { + { + arch = "rockspec" + } + }, + ['0.8.3-0'] = { + { + arch = "rockspec" + } + }, + ['0.9.0-0'] = { + { + arch = "rockspec" + } + }, + ['0.9.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.9.2-0'] = { + { + arch = "rockspec" + } + }, + ['0.9.3-0'] = { + { + arch = "rockspec" + } + }, + ['0.9.4-0'] = { + { + arch = "rockspec" + } + }, + ['0.9.5-0'] = { + { + arch = "rockspec" + } + }, + ['0.9.6-0'] = { + { + arch = "rockspec" + } + }, + ['0.9.7-0'] = { + { + arch = "rockspec" + } + }, + ['0.9.8-0'] = { + { + arch = "rockspec" + } + }, + ['0.9.9-0'] = { + { + arch = "rockspec" + } + }, + ['1.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-0'] = { + { + arch = "rockspec" + } + }, + ['1.0.3-0'] = { + { + arch = "rockspec" + } + }, + ['1.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0rc2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.4.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.4.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.5.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.6.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.6.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.7.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.7.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.7.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.8.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.8.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.2.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.3.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.4.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.4.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.4.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.5.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.6.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.6.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.7.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.7.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-advanced-router'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-aggregator'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + } + } + }, + ['kong-aliyun-http-filter'] = { + ['0.0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-api-composition'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-auth-key-jwt-server'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.0-10'] = { + { + arch = "rockspec" + } + }, + ['0.1.0-2'] = { + { + arch = "rockspec" + } + }, + ['0.1.0-3'] = { + { + arch = "rockspec" + } + }, + ['0.1.0-4'] = { + { + arch = "rockspec" + } + }, + ['0.1.0-5'] = { + { + arch = "rockspec" + } + }, + ['0.1.0-6'] = { + { + arch = "rockspec" + } + }, + ['0.1.0-7'] = { + { + arch = "rockspec" + } + }, + ['0.1.0-8'] = { + { + arch = "rockspec" + } + }, + ['0.1.0-9'] = { + { + arch = "rockspec" + } + } + }, + ['kong-auth-request'] = { + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.6-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.7-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-auth-request-trans'] = { + ['0.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-auth-signature'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.0-2'] = { + { + arch = "rockspec" + } + }, + ['0.1.0-3'] = { + { + arch = "rockspec" + } + }, + ['0.1.0-4'] = { + { + arch = "rockspec" + } + } + }, + ['kong-authz-proxy'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['kong-auto-https'] = { + ['0.0.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-7'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-cassandra'] = { + ['0.5-8'] = { + { + arch = "rockspec" + } + } + }, + ['kong-circuit-breaker'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-client'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-cluster-drain'] = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-consumer-rate-limiting'] = { + ['1.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-consumer-route'] = { + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-custom-error-handlers'] = { + ['0.3.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['kong-datadog-k8s'] = { + ['0.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.14.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-easter-eggs'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-enhanced-http-log'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-10'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-11'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-12'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-13'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-14'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-15'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-16'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-17'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-18'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-19'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-20'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-21'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-22'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-23'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-24'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-25'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-26'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-27'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-28'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-29'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-30'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-31'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-7'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-8'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-9'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-enhanced-oidc'] = { + ['1.0.0'] = { + { + arch = "rockspec" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-error-log'] = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-event-pub'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-event-pub-plugin'] = { + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-ext-auth'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['kong-external-auth'] = { + ['0.1-2'] = { + { + arch = "rockspec" + } + }, + ['0.1-3'] = { + { + arch = "rockspec" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + } + } + }, + ['kong-external-auth-plugin'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-external-oauth'] = { + ['1.1-10'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-11'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-12'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-13'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-14'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-15'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-16'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-17'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-7'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-8'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-9'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-file-log-exclusion'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-force-https'] = { + ['0.1.0-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-force-ssl'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-forward-proxy'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['kong-forwarded-user-auth'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['kong-header-access-control'] = { + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-http-to-https'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['kong-http-to-https-redirect'] = { + ['0.13.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-https-redirect'] = { + ['0.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-influxdb'] = { + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-ip-location'] = { + ['0.1-1'] = { + { + arch = "rockspec" + } + } + }, + ['kong-jwt-claim-headers'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-jwt-firebase'] = { + ['2.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['2.0.0-22'] = { + { + arch = "rockspec" + } + }, + ['2.0.0-23'] = { + { + arch = "rockspec" + } + }, + ['2.0.0-24'] = { + { + arch = "rockspec" + } + }, + ['2.0.0-8'] = { + { + arch = "rockspec" + } + } + }, + ['kong-jwt2header'] = { + ['1.0-3'] = { + { + arch = "rockspec" + } + } + }, + ['kong-jwt2header-raftx24'] = { + ['1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-kafka-custom-log'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-kafka-log'] = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-keycloak'] = { + ['1.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-7'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-8'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-9'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-lapis'] = { + ['1.14.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.14.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.14.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.16.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.7.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-lib-logger'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-log-google'] = { + ['1.4-6'] = { + { + arch = "rockspec" + } + } + }, + ['kong-lua-ffi-zlib'] = { + ['0.6-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-lua-resty-kafka'] = { + ['0.10-0'] = { + { + arch = "rockspec" + } + }, + ['0.11-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.12-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.13-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.14-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.15-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.16-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.17-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.18-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.19-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-lua-sandbox'] = { + ['1.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-luasec'] = { + ['1.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-mocking-advanced'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-mtls-validate'] = { + ['0.2.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['kong-o2b-ticketing'] = { + ['0.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-oauth-proxy'] = { + ['1.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['kong-oauth2-ext'] = { + ['0.0.1'] = { + { + arch = "rockspec" + } + }, + ['0.0.1-0'] = { + { + arch = "rockspec" + } + } + }, + ['kong-oidc'] = { + ['1.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-oidc-adfs'] = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-oidc-auth'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-oidc-auth-akshay'] = { + ['0.1-3'] = { + { + arch = "rockspec" + } + } + }, + ['kong-oidc-by-prashanth'] = { + ['1.0.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['kong-oidc-consumer'] = { + ['0.0.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-oidc-forward-host'] = { + ['1.1.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-oidc-google-groups'] = { + ['0.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.1-10'] = { + { + arch = "rockspec" + } + }, + ['0.1-11'] = { + { + arch = "rockspec" + } + }, + ['0.1-12'] = { + { + arch = "rockspec" + } + }, + ['0.1-13'] = { + { + arch = "rockspec" + } + }, + ['0.1-14'] = { + { + arch = "rockspec" + } + }, + ['0.1-15'] = { + { + arch = "rockspec" + } + }, + ['0.1-16'] = { + { + arch = "rockspec" + } + }, + ['0.1-17'] = { + { + arch = "rockspec" + } + }, + ['0.1-3'] = { + { + arch = "rockspec" + } + }, + ['0.1-4'] = { + { + arch = "rockspec" + } + }, + ['0.1-5'] = { + { + arch = "rockspec" + } + }, + ['0.1-6'] = { + { + arch = "rockspec" + } + }, + ['0.1-7'] = { + { + arch = "rockspec" + } + }, + ['0.1-8'] = { + { + arch = "rockspec" + } + }, + ['0.1-9'] = { + { + arch = "rockspec" + } + }, + ['0.2-0'] = { + { + arch = "rockspec" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.2-2'] = { + { + arch = "rockspec" + } + }, + ['0.3-0'] = { + { + arch = "rockspec" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.4-2'] = { + { + arch = "rockspec" + } + }, + ['1.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + } + }, + ['1.0-3'] = { + { + arch = "rockspec" + } + }, + ['1.0-5'] = { + { + arch = "rockspec" + } + } + }, + ['kong-oidc-ng'] = { + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.1-10'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-11'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-7'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-8'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-9'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-oidc-test'] = { + ['0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-oidc-v2'] = { + ['2.0.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['kong-oidc-v3'] = { + ['1.3.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-oidc-ws-rbac'] = { + ['0.0.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.0.2-0'] = { + { + arch = "rockspec" + } + } + }, + ['kong-opa'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-opa-plugin'] = { + ['0.0.1'] = { + { + arch = "rockspec" + } + }, + ['0.0.10-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.11-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.12-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.13-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.14-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.15-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.6-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.7-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.8-1'] = { + { + arch = "rockspec" + } + } + }, + ['kong-path-allow'] = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-path-based-routing'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-path-rewrite'] = { + ['0.0.1-0'] = { + { + arch = "rockspec" + } + } + }, + ['kong-path-whitelist'] = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-payload-size-limiting'] = { + ['0.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-pgmoon'] = { + ['1.16.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.16.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-phantom-token'] = { + ['1.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.1.1-1'] = { + { + arch = "rockspec" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['2.0.1-1'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-abac'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-abtesting'] = { + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-acl-keycloak'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-acme'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.11-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.12-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.13-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.14-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.15-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-acp'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + }, + ['1.0.0-4'] = { + { + arch = "rockspec" + }, { + arch = "all" + } + }, + ['1.0.0-5'] = { + { + arch = "rockspec" + }, { + arch = "all" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + } + } + }, + ['kong-plugin-add-header'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-add-header-to-request'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-add-headers'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-amqp'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-6'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-amqp-rpc'] = { + ['1.0.0-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-api-key-access-control'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-api-transformer'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-api-version'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-api-version-1'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-apikey-validator'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.10-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.11-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.12-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.13-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.5-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.6-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.7-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.8-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.9-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.5.1-1'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-auth-endpoint-config-ishare'] = { + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-authz'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-aws-api-gateway-auth'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-aws-kinesis'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-aws-lambda'] = { + ['3.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.5.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.5.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.5.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.5.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-aws-lambda-response-transformer'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.5-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.6-1'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-aws-lambda-status-code'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-azure-functions'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-bearer'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-cads-jwt-keycloak'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-cads-stash-body-in-ctx'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-check-permissions'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.2'] = { + { + arch = "rockspec" + } + }, + ['0.1.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.5-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.6-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.7-1'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-circuit-breaker'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-concurrent-connections-quota'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-connections-quota'] = { + ['0.1.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-consumer-cors'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-cookies-to-headers'] = { + ['1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + } + }, + ['1.1-0'] = { + { + arch = "rockspec" + } + }, + ['1.1-4'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-csp'] = { + ['0.1.0-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-custom'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-custom-rt'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-datadog-tags'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-datadome'] = { + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-dbless-reload'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-ddtrace'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-debug'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-detect-path'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-deviceuid'] = { + ['0.2.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-download-limiter'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-dynamic-route'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-endpoint-access-control'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-escher'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-escher-signer'] = { + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-extend-headers'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-file-log-advanced'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-file-log-extended'] = { + ['2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + } + }, + ['kong-plugin-first-plugin'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-flexible-rate-limit'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.11-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.12-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.13-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.14-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.15-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-geo-restriction'] = { + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-geoip'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-google-cloud-functions'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-google-logging'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-google-recaptcha'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-google-storage-adapter'] = { + ['1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.1.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.1.1-0'] = { + { + arch = "rockspec" + } + }, + ['1.1.10-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.11-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.12-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.2-0'] = { + { + arch = "rockspec" + } + }, + ['1.1.3-0'] = { + { + arch = "rockspec" + } + }, + ['1.1.4-0'] = { + { + arch = "rockspec" + } + }, + ['1.1.5-0'] = { + { + arch = "rockspec" + } + }, + ['1.1.6-0'] = { + { + arch = "rockspec" + } + }, + ['1.1.7-0'] = { + { + arch = "rockspec" + } + }, + ['1.1.8-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.9-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.6-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.7-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.8-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.9-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-grpc-gateway'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-grpc-web'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-gwa-ip-anonymity'] = { + ['1.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.6-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.7-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.6-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-hal'] = { + ['1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-7'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-header-based-rate-limiting'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-header-based-request-termination'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-header-translator'] = { + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-headercheck'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-headers-validation'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-hello'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-hello-world'] = { + ['0.1-1'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-hello-you'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-helloworld'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-html-replacer'] = { + ['0.1-0'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-http-log-multi-body'] = { + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-http-log-with-body'] = { + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-http-log-with-body-base64'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-http-mirror'] = { + ['1.0.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-http301https'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-ice-grpc-gateway'] = { + ['0.0.1'] = { + { + arch = "rockspec" + } + }, + ['0.0.2'] = { + { + arch = "rockspec" + } + }, + ['0.0.2-2'] = { + { + arch = "rockspec" + } + }, + ['0.0.3'] = { + { + arch = "rockspec" + } + }, + ['0.0.3-2'] = { + { + arch = "rockspec" + } + }, + ['0.0.3-3'] = { + { + arch = "rockspec" + } + }, + ['0.0.4-2'] = { + { + arch = "rockspec" + } + }, + ['0.0.5-2'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-ice-jaeger'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.6-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.7-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.8-1'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-idempotency'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-impart'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-inigo'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-jdy-signature'] = { + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-jq-transformer'] = { + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-json-threat-protection'] = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-jurnal-oauth2'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-jwt'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-jwt-auth'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-jwt-auth-rbac'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-jwt-auth-token-validate'] = { + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-0'] = { + { + arch = "rockspec" + } + }, + ['2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-jwt-blacklist'] = { + ['0.1.1-6'] = { + { + arch = "rockspec" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.2-2'] = { + { + arch = "rockspec" + } + }, + ['0.1.2-3'] = { + { + arch = "rockspec" + } + }, + ['0.1.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.4-2'] = { + { + arch = "rockspec" + } + }, + ['0.1.4-3'] = { + { + arch = "rockspec" + } + }, + ['0.1.4-4'] = { + { + arch = "rockspec" + } + }, + ['0.1.4-5'] = { + { + arch = "rockspec" + } + }, + ['0.1.5-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.6-2'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-jwt-claims-headers'] = { + ['1.0-2'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-jwt-claims-to-headers'] = { + ['0.2.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-jwt-claims-validate'] = { + ['1.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-jwt-crafter'] = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "all" + } + } + }, + ['kong-plugin-jwt-crafter-for-ee'] = { + ['1.1-0'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-jwt-fetcher'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-jwt-keycloak'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.3-1'] = { + { + arch = "rockspec" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-jwt-rbac'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + } + }, + ['0.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + } + } + }, + ['kong-plugin-jwt-up'] = { + ['1.5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-jwt-validation'] = { + ['1.2-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-7'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-8'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-9'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-jwt-verifier'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-kafka-log'] = { + ['0.0.1-0'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-key-auth-referer'] = { + ['2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-key-secret'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-keycloak-auth-request'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-kong-plugin-auth'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-kubernetes-sidecar-injector'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-log-extended'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-lua-resty-waf'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + } + }, + ['kong-plugin-maxmind-geoip2'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-mihelloworld'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-mithril'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.11-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.12-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.13-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.14-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.15-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.16-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.17-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.18-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.19-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.11-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.12-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.13-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.14-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.15-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.16-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.17-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-mitm'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.10.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.11.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-mm-rate-limiting'] = { + ['0.0.5-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-mongologger'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-mpay-jurnal'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-mtls-auth'] = { + ['1.0.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-mtls-validate'] = { + ['0.1.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-myplugin'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-myplugin1'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-myredirect'] = { + ['0.1-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-newrelic-insights'] = { + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-ngsi-ishare-policies'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-oasvalidator'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-oauth2-audience'] = { + ['0.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-oauth2-token-introspection-request'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-oidc'] = { + ['1.3.6-0'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-oidc-acl'] = { + ['1.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + } + }, + ['1.0-3'] = { + { + arch = "rockspec" + } + }, + ['1.0-4'] = { + { + arch = "rockspec" + } + }, + ['1.0-5'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-oidc-acl-fix'] = { + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-opa'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-opa2'] = { + ['0.1.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-openwhisk'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-optional-jwt'] = { + ['0.1.1-1'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-ory-kratos'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-param-transformer'] = { + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-paseto'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-path-prefix'] = { + ['0.1.0-2'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-path-replacer'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-perimeterx'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-ping-auth'] = { + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-pipeline'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-prometheus'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-proxy-cache'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-proxycache'] = { + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-queryparams-to-headers'] = { + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-ram'] = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-rate-limiting-quotas'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-rbac'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-redirect'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-redis-auth'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-referer'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-referer-blacklist'] = { + ['2.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-replace-url'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-request-firewall'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.11-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.12-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.13-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-request-response-logging'] = { + ['0.1.1-1'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-request-start'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-request-transformer'] = { + ['1.2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.6-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.7-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.8-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-request-validator'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-reroute-after'] = { + ['1.0.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-reroute-around'] = { + ['1.0.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-reroute-before'] = { + ['1.0.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-resource-transformer'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-respond-redirect'] = { + ['0.10.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.11.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-response-cache'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.3-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.3-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-response-transformer-tobase64'] = { + ['1.0-5'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-rewrite'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-route-by-cookie'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-route-by-jsonrpc-method'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-rule-based-header-transformer'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-sa-jwt-claims-validate'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-serverless-functions'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-0'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-session'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.4.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.4.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.4.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-shepherd'] = { + ['0.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.11-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-signalfx'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-skywalking'] = { + ['0.3.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-sliding-window-rate-limiting'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-soap-transform'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-soap4kong'] = { + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-soap4kong-generator'] = { + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-static-response'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-stdout-log'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-subdomain-as-header'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-sync-eureka'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-tag-executor'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-7'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-8'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-template'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-template-transformer'] = { + ['0.10.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.10.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.11.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.11.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.12.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.12.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.12.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.12.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.13.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.15.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.16.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.17.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.17.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-the-fuckman'] = { + ['1.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-the-middleman'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.5-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.5-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.5-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-tmim-forward-proxy'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-token-agent'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-token-to-header-extractor'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-traceable'] = { + ['1.0.13-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.14-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.15-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.16-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-universal-jwt'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.6-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.6-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-10'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-11'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-12'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-13'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-7'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-8'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-9'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.6-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-uoa-soap-to-rest'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-uppercase-response'] = { + ['0.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-upstream-auth-basic'] = { + ['1.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-upstream-basic-auth'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-upstream-environment'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-upstream-google-id-token'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-upstream-oauth2'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-upstream-redirect'] = { + ['0.0.1-0'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-upstream-selector'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-url-prefix'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-url-regex-rewriter'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.1-2'] = { + { + arch = "rockspec" + } + }, + ['0.1.1-3'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-url-replace'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-url-rewrite'] = { + ['0.3.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-usagelogger'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-user-profile-validation'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-wait'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-wayz-log'] = { + ['0.0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-wsse'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-xml-search'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['kong-plugin-xml-threat-protection'] = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugin-zipkin'] = { + ['0.0.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.0.2-0'] = { + { + arch = "rockspec" + } + }, + ['0.0.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.6-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-plugins-openidc'] = { + ['0.1.1-1'] = { + { + arch = "rockspec" + } + } + }, + ['kong-post-auth-hook'] = { + ['0.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.0-2'] = { + { + arch = "rockspec" + } + }, + ['0.0-3'] = { + { + arch = "rockspec" + } + }, + ['1.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + } + } + }, + ['kong-pre-auth-hook'] = { + ['0.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.0-3'] = { + { + arch = "rockspec" + } + }, + ['0.0-4'] = { + { + arch = "rockspec" + } + }, + ['1.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.1-0'] = { + { + arch = "rockspec" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.1-2'] = { + { + arch = "rockspec" + } + }, + ['1.1-3'] = { + { + arch = "rockspec" + } + }, + ['1.1-4'] = { + { + arch = "rockspec" + } + }, + ['1.1-5'] = { + { + arch = "rockspec" + } + }, + ['1.1-6'] = { + { + arch = "rockspec" + } + }, + ['1.1-7'] = { + { + arch = "rockspec" + } + } + }, + ['kong-prometheus-plugin'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + }, + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-2'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-2'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-2'] = { + { + arch = "rockspec" + } + }, + ['0.3.1-2'] = { + { + arch = "rockspec" + } + }, + ['0.3.2-2'] = { + { + arch = "rockspec" + } + }, + ['0.3.3-2'] = { + { + arch = "rockspec" + } + }, + ['0.3.4-2'] = { + { + arch = "rockspec" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.6.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.7.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.7.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-proxer'] = { + ['2.0-0'] = { + { + arch = "rockspec" + } + }, + ['2.0-1'] = { + { + arch = "rockspec" + } + }, + ['2.0-2'] = { + { + arch = "rockspec" + } + }, + ['2.0-3'] = { + { + arch = "rockspec" + } + }, + ['2.0-4'] = { + { + arch = "rockspec" + } + }, + ['2.0-5'] = { + { + arch = "rockspec" + } + }, + ['2.0-6'] = { + { + arch = "rockspec" + } + } + }, + ['kong-proxy-cache-plugin'] = { + ['1.2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.1-0'] = { + { + arch = "rockspec" + } + } + }, + ['kong-redis-cluster'] = { + ['1.1-0'] = { + { + arch = "rockspec" + } + }, + ['1.2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-request-allow'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['kong-request-header'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-request-intercept'] = { + ['0.1'] = { + { + arch = "rockspec" + } + } + }, + ['kong-request-jwt-header'] = { + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['kong-response-log'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-response-size-limiting'] = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-rhsso'] = { + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + } + }, + ['0.1-3'] = { + { + arch = "rockspec" + } + } + }, + ['kong-safeline'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-scalable-rate-limiter'] = { + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-segment-log'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-7'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-service-virtualization'] = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-signature-and-remove-attr'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['kong-simple-request-validator'] = { + ['0.0.4-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.4-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-siteminder-auth'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-skywalking'] = { + ['0.1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-slack-hmac'] = { + ['0.12.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-spec-expose'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-splunk-handler'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + } + } + }, + ['kong-splunk-log'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-7'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-8'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-9'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-9'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-7'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-8'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-9'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-splunk-log-customized'] = { + ['0.2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.9-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-startbid-oidc-acl'] = { + ['1.2-1'] = { + { + arch = "rockspec" + } + } + }, + ['kong-timechecking'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-3'] = { + { + arch = "rockspec" + } + }, + ['0.1.0-4'] = { + { + arch = "rockspec" + } + } + }, + ['kong-tx-debugger'] = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-uma-rs'] = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-upstream-hmac'] = { + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-upstream-jwt'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-7'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-upstream-jwt-extended'] = { + ['2.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['kong-user-agent-based-routing'] = { + ['0.1-0'] = { + { + arch = "rockspec" + } + } + }, + ['kong-virtual-endpoints'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + kong_injection = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + kong_plugin_salt_sensor = { + ['1.0.0-3'] = { + { + arch = "rockspec" + } + } + }, + kosmo = { + ['0.2-1'] = { + { + arch = "rockspec" + } + } + }, + kpgmoon = { + ['1.8.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + kqueue = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.6.0-1'] = { + { + arch = "rockspec" + } + } + }, + krpc = { + ['0.1.11-0'] = { + { + arch = "rockspec" + } + }, + ['0.1.12-0'] = { + { + arch = "rockspec" + } + }, + ['0.2.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.10-0'] = { + { + arch = "rockspec" + } + }, + ['0.3.11-0'] = { + { + arch = "rockspec" + } + }, + ['0.3.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.3-0'] = { + { + arch = "rockspec" + } + }, + ['0.3.4-0'] = { + { + arch = "rockspec" + } + }, + ['0.3.5-0'] = { + { + arch = "rockspec" + } + }, + ['0.3.6-0'] = { + { + arch = "rockspec" + } + }, + ['0.3.7-0'] = { + { + arch = "rockspec" + } + }, + ['0.3.8-0'] = { + { + arch = "rockspec" + } + }, + ['0.3.9-0'] = { + { + arch = "rockspec" + } + }, + ['0.4.0-0'] = { + { + arch = "rockspec" + } + }, + ['0.4.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.4.2-0'] = { + { + arch = "rockspec" + } + }, + ['0.4.3-0'] = { + { + arch = "rockspec" + } + }, + ['0.4.4-0'] = { + { + arch = "rockspec" + } + }, + ['0.4.5-0'] = { + { + arch = "rockspec" + } + }, + ['0.4.6-0'] = { + { + arch = "rockspec" + } + }, + ['0.4.7-0'] = { + { + arch = "rockspec" + } + }, + ['0.4.8-0'] = { + { + arch = "rockspec" + } + }, + ['0.5.0-0'] = { + { + arch = "rockspec" + } + }, + ['0.5.2-0'] = { + { + arch = "rockspec" + } + }, + ['0.5.4-0'] = { + { + arch = "rockspec" + } + } + }, + kvpairs = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['labelrefs.sile'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + lacord = { + ['1569435811-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1569631241-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1574559577-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1574559577-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1582301062-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1590965828-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1617477179-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1618833413-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1619975269-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1622157568-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1627995481-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1627995481.88199-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1629838555-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1637789515-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lacord-client'] = { + ['3174939966-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lain = { + ['scm-1'] = { + { + arch = "rockspec" + } + } + }, + lake = { + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lalarm = { + ['20061011-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20090501-1'] = { + { + arch = "rockspec" + } + }, + ['20090501-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20120503-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lambda = { + ['1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lamda = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + landlord = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lanes = { + ['2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-2'] = { + { + arch = "rockspec" + } + }, + ['2.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.3-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.1.6-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.10.0-1'] = { + { + arch = "rockspec" + } + }, + ['3.10.1-1'] = { + { + arch = "rockspec" + } + }, + ['3.11-1'] = { + { + arch = "rockspec" + } + }, + ['3.13.0-0'] = { + { + arch = "rockspec" + } + }, + ['3.13.0-1'] = { + { + arch = "rockspec" + } + }, + ['3.15.0-0'] = { + { + arch = "rockspec" + } + }, + ['3.15.1-0'] = { + { + arch = "rockspec" + } + }, + ['3.16.0-0'] = { + { + arch = "rockspec" + } + }, + ['3.16.1-0'] = { + { + arch = "rockspec" + } + }, + ['3.16.2-0'] = { + { + arch = "rockspec" + } + }, + ['3.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.5.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.6.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.6.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.7.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.7.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.8.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.9.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + language = { + ['1.0.0-0'] = { + { + arch = "rockspec" + } + } + }, + languagedetect = { + ['0.1-1'] = { + { + arch = "rockspec" + } + } + }, + lap = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lapis = { + ['1.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.10.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.11.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.11.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.12.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.13.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.13.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.14.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.15.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.16.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lapis-annotate'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lapis-bayes'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lapis-cache'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.1.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lapis-community'] = { + ['1.36.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.37.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.38.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.40.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.41.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.42.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.42.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.42.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.43.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.44.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.44.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.44.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.44.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lapis-console'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lapis-crud'] = { + ['0.1-1'] = { + { + arch = "rockspec" + } + } + }, + ['lapis-eswidget'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lapis-exceptions'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lapis-redis'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lapis-spec-screenshot'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lapis-systemd'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lapis_layout = { + ['0.1-1'] = { + { + arch = "rockspec" + } + } + }, + lascii85 = { + ['20070627-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + }, { + arch = "win32-x86" + } + }, + ['20100323-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20120927-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + latclient = { + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['launchdarkly-server-sdk'] = { + ['2.0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.6-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['launchdarkly-server-sdk-redis'] = { + ['2.0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.6-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lauxhlib = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.6.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.6.1-1'] = { + { + arch = "rockspec" + } + } + }, + laws = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + } + }, + layeredata = { + ['0.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.0-2'] = { + { + arch = "rockspec" + } + } + }, + ['lazy.nvim'] = { + ['10.17.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['10.18.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['10.19.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['10.20.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['10.20.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['10.20.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['10.20.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['10.20.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['10.21.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['10.21.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['10.21.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['10.22.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['10.22.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['10.22.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['10.23.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['10.24.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['10.24.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['10.24.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['10.24.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['11.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['11.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['11.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lazybag = { + ['1.0.0-0'] = { + { + arch = "rockspec" + } + } + }, + lbase64 = { + ['20070628-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + }, { + arch = "win32-x86" + } + }, + ['20100323-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20120807-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20120807-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20120820-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lbc = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20070627-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20090529-1'] = { + { + arch = "rockspec" + } + }, + ['20100404-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20120420-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20120430-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20180729-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lbci = { + ['20090306-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20130429-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20150629-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lbuffer = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + lbuilder = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lcf = { + ['5.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.3-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.3-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.3-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lcmark = { + ['0.23.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.24.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.25.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.26.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.27.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.28.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.29.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.29.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.29.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.29.0-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.30.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lcolorize = { + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + lcomplex = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20091103-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20100404-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20120430-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20180729-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lcrypt = { + ['0.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lcsv = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lcurses = { + ['6-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['9.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ldecnumber = { + ['2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ldoc = { + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.10-1'] = { + { + arch = "rockspec" + } + }, + ['1.3.11-1'] = { + { + arch = "rockspec" + } + }, + ['1.3.12-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.8-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.4-1'] = { + { + arch = "rockspec" + } + }, + ['1.4.5-1'] = { + { + arch = "rockspec" + } + }, + ['1.4.6-1'] = { + { + arch = "rockspec" + } + }, + ['1.4.6-2'] = { + { + arch = "rockspec" + } + }, + ['1.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lecho = { + ['1.0.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + leda = { + ['0.3.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ledge = { + ['1.26-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.26.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.27-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.27.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.27.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.28-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['leetcode.nvim'] = { + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lefthook = { + ['1.0-0'] = { + { + arch = "rockspec" + } + } + }, + leg = { + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + } + }, + ['legendary.nvim'] = { + ['2.13.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.13.11-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.13.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.13.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.13.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lerror = { + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + leste = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.3-1'] = { + { + arch = "rockspec" + } + } + }, + lester = { + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lffetch = { + ['1.0-2'] = { + { + arch = "rockspec" + } + }, + ['1.0-3'] = { + { + arch = "rockspec" + } + }, + ['1.0-4'] = { + { + arch = "rockspec" + } + } + }, + lfsampler = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.3-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.3-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lfunctimer = { + ['0.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + } + } + }, + lgdbm = { + ['20070628-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20100824-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20101030-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20130702-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20130702-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20130702.52-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20130702.52-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20150420.52-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20150421.52-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20211118.52-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lgetchar = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lgetopt = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.8-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lgi = { + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.9.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lgi-async-extra'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-2'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lglob = { + ['0.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lgmp = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lgsl = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + liba = { + ['0.1.13-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['libcidr-ffi'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + libdeflate = { + ['0.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + libmagic = { + ['5.41-1'] = { + { + arch = "rockspec" + } + }, + ['5.41.1-1'] = { + { + arch = "rockspec" + } + }, + ['5.41.2-1'] = { + { + arch = "rockspec" + } + }, + ['5.41.3-1'] = { + { + arch = "rockspec" + } + } + }, + libmdbx = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.11.13-2'] = { + { + arch = "rockspec" + } + } + }, + libphonenumber = { + ['1.0-2'] = { + { + arch = "rockspec" + } + } + }, + libpq = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + libqrpng = { + ['0.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.2-0'] = { + { + arch = "rockspec" + } + } + }, + libsodium = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + libssh = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + libssh2 = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + libtls = { + ['2.5.4-1'] = { + { + arch = "rockspec" + } + }, + ['2.7.3-1'] = { + { + arch = "rockspec" + } + }, + ['2.7.3-2'] = { + { + arch = "rockspec" + } + }, + ['2.7.4-1'] = { + { + arch = "rockspec" + } + }, + ['2.7.4-2'] = { + { + arch = "rockspec" + } + }, + ['2.7.4-3'] = { + { + arch = "rockspec" + } + }, + ['3.4.1-2'] = { + { + arch = "rockspec" + } + }, + ['3.4.1-3'] = { + { + arch = "rockspec" + } + }, + ['3.5.2-1'] = { + { + arch = "rockspec" + } + } + }, + libzmanim = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "kindlepw2" + } + } + }, + ['lice-lua'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lift = { + ['0.1.0-4'] = { + { + arch = "rockspec" + } + } + }, + lifter_puller = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + light = { + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-12'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-13'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-7'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-8'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-9'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lightdrop = { + ['1.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lightningmdb = { + ['0.9-1'] = { + { + arch = "rockspec" + } + }, + ['0.9.15-1'] = { + { + arch = "rockspec" + } + }, + ['0.9.16-1'] = { + { + arch = "rockspec" + } + }, + ['0.9.17-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.17.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.17.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.17.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.18.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.18.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.19.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.22.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lil = { + ['master-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + liluat = { + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + limath = { + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + linenoise = { + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7-1'] = { + { + arch = "rockspec" + } + }, + ['0.8-1'] = { + { + arch = "rockspec" + } + }, + ['0.9-1'] = { + { + arch = "rockspec" + } + } + }, + ['linenoise-windows'] = { + ['0.5-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lingy = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + lini = { + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + } + } + }, + ['linked-list'] = { + ['1.0.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + linkedlist = { + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lint64 = { + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20130805.51-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20130805.52-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20180730-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + linterval = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20120501-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20120509-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20180729-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + liquid = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + list = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lit = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + litcord = { + ['1.0.0-1'] = { + { + arch = "rockspec" + } + } + }, + literal = { + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['live-command.nvim'] = { + ['1.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lj2procfs = { + ['0.1-4'] = { + { + arch = "rockspec" + } + }, + ['0.1-5'] = { + { + arch = "rockspec" + } + }, + ['0.1-6'] = { + { + arch = "rockspec" + } + } + }, + ljack = { + ['0.0.1-1'] = { + { + arch = "rockspec" + } + } + }, + ljdns = { + ['0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.2-2'] = { + { + arch = "rockspec" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.4-0'] = { + { + arch = "rockspec" + } + }, + ['0.5-0'] = { + { + arch = "rockspec" + } + }, + ['2.4-0'] = { + { + arch = "rockspec" + } + } + }, + ljlinenoise = { + ['0.1.3-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ljndpi = { + ['0.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ljsonschema = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ljsyscall = { + ['0.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.10-2'] = { + { + arch = "rockspec" + } + }, + ['0.11-1'] = { + { + arch = "rockspec" + } + }, + ['0.12-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + llhttp = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + llix = { + ['v0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + llscheck = { + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + llsocket = { + ['0.10.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.11.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.11.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.12.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.12.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.13.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.14.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.15.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.15.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.15.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.16.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.6.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.7.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.8.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.9.0-1'] = { + { + arch = "rockspec" + } + } + }, + llui = { + ['0.1-1'] = { + { + arch = "rockspec" + } + } + }, + lluv = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.10-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lluv-curl'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lluv-ftp'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lluv-poll-zmq'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lluv-redis'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lluv-rs232'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lluv-ssl'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lmake = { + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + lmapm = { + ['20070628-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20090403-2'] = { + { + arch = "rockspec" + } + }, + ['20090403-3'] = { + { + arch = "rockspec" + } + }, + ['20100420-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20120501-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20120509-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lmathx = { + ['20080423-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20080903-1'] = { + { + arch = "rockspec" + } + }, + ['20090219-1'] = { + { + arch = "rockspec" + } + }, + ['20090808-1'] = { + { + arch = "rockspec" + } + }, + ['20100404-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20120430-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20120430.51-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20120430.52-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20140620-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20150505-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20150624-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lmd5 = { + ['20130228-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20130228-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lmpfr = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lmpfrlib = { + ['20170112-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20170112-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ln = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lnet = { + ['4.0-0'] = { + { + arch = "rockspec" + } + } + }, + lnodelist = { + ['0.0.1-1'] = { + { + arch = "rockspec" + } + } + }, + lnotify = { + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + loadchunk = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + } + } + }, + loadconf = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + loader = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + loadkit = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lobject = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + localexec = { + ['0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lockbox = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + locky = { + ['0.0.1-0'] = { + { + arch = "rockspec" + } + } + }, + lodash = { + ['0.02-0'] = { + { + arch = "rockspec" + } + } + }, + log = { + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['log-request-with-body'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['log.lua'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + log4l = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + log4lua = { + ['0.0.1'] = { + { + arch = "rockspec" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + } + } + }, + logface = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + loggedkv = { + ['0.1-2'] = { + { + arch = "rockspec" + } + }, + ['0.1-3'] = { + { + arch = "rockspec" + } + }, + ['0.1-4'] = { + { + arch = "rockspec" + } + } + }, + logger = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['logging.nvim'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + logit = { + ['0.1.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.5-0'] = { + { + arch = "rockspec" + } + }, + ['1.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + loglua = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + loldb = { + ['0.0.1-0'] = { + { + arch = "rockspec" + } + } + }, + long = { + ['2.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + loop = { + ['2.2alpha-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + }, + ['2.3beta-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + loopcollections = { + ['1.0beta-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + loopcomp = { + ['1.0beta-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + loopdebugging = { + ['1.0beta-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + loopobjects = { + ['1.0beta-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + loopparsing = { + ['1.0beta-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + loopserializing = { + ['1.0beta-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + loowy = { + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lor = { + ['0.0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.5-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.5-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.5-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + los = { + ['0.0.1'] = { + { + arch = "rockspec" + } + }, + ['0.0.2'] = { + { + arch = "rockspec" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.3-2'] = { + { + arch = "rockspec" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.6-1'] = { + { + arch = "rockspec" + } + } + }, + losc = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lotus = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lotus-api'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['love-imgui'] = { + ['0.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['love-ora'] = { + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['love-release'] = { + ['2.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.1-0'] = { + { + arch = "rockspec" + } + }, + ['2.0.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.11-1'] = { + { + arch = "rockspec" + } + }, + ['2.0.12-1'] = { + { + arch = "rockspec" + } + }, + ['2.0.12-2'] = { + { + arch = "rockspec" + } + }, + ['2.0.13-1'] = { + { + arch = "rockspec" + } + }, + ['2.0.13-2'] = { + { + arch = "rockspec" + } + }, + ['2.0.14-1'] = { + { + arch = "rockspec" + } + }, + ['2.0.15-1'] = { + { + arch = "rockspec" + } + }, + ['2.0.16-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.2-0'] = { + { + arch = "rockspec" + } + }, + ['2.0.3-1'] = { + { + arch = "rockspec" + } + }, + ['2.0.4-1'] = { + { + arch = "rockspec" + } + }, + ['2.0.5-1'] = { + { + arch = "rockspec" + } + }, + ['2.0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.7-1'] = { + { + arch = "rockspec" + } + }, + ['2.0.8-1'] = { + { + arch = "rockspec" + } + }, + ['2.0.9-1'] = { + { + arch = "rockspec" + } + } + }, + ['love2d.nvim'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lovebird = { + ['0.4-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + loveconsole = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.2-2'] = { + { + arch = "rockspec" + } + } + }, + loverboy = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + loverocks = { + ['0.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.4-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.6-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lovetoys = { + ['0.2.0'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lox = { + ['0.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lp = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lpack = { + ['20070629-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + }, { + arch = "win32-x86" + } + } + }, + lpatch = { + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + lpath = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lpc = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lpdf = { + ['20070717-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20070717-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20130627.51-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20130627.52-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20130702.51-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20130702.52-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lpeg = { + ['0.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + }, { + arch = "win32-x86" + } + }, + ['0.10-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.10.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.11-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.11-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.12-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.12.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.12.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + }, { + arch = "win32-x86" + } + }, + ['0.7-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + }, { + arch = "win32-x86" + } + }, + ['0.8.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + }, { + arch = "win32-x86" + } + }, + ['0.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + }, { + arch = "win32-x86" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lpeg_patterns = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + }, + ['0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + }, + ['0.3-0'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + }, + ['0.4-0'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + }, + ['0.5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lpeglabel = { + ['0.12.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.12.2-2'] = { + { + arch = "rockspec" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.6.2-1'] = { + { + arch = "rockspec" + } + } + }, + lpegrex = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lpm = { + ['0.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.0-2'] = { + { + arch = "rockspec" + } + }, + ['0.0-3'] = { + { + arch = "rockspec" + } + }, + ['0.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + } + }, + ['2.0-0'] = { + { + arch = "rockspec" + } + } + }, + lposix = { + ['20031107-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lpresence = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lpty = { + ['0.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lpugl = { + ['0.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + } + } + }, + lpugl_cairo = { + ['0.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + } + } + }, + lpugl_opengl = { + ['0.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + } + } + }, + lq = { + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lqd = { + ['20120420-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20120430-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lqmath = { + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lrand = { + ['1.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lrandom = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20070628-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + }, { + arch = "win32-x86" + } + }, + ['20090623-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20101118-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20120430.51-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20120430.52-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20180729-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lrbtree = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lrc = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lrdb = { + ['0.1.7-2'] = { + { + arch = "rockspec" + } + }, + ['0.1.8-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + } + } + }, + lredux = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['lrexlib-gnu'] = { + ['2.7.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.7.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.7.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.8.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.9.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.9.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lrexlib-oniguruma'] = { + ['2.7.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.7.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.7.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.8.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.9.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.9.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lrexlib-pcre'] = { + ['2.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.7.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.7.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.7.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.8.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.9.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.9.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lrexlib-pcre2'] = { + ['2.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.9.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.9.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lrexlib-posix'] = { + ['2.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.7.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.7.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.7.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.8.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.9.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.9.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lrexlib-tre'] = { + ['2.7.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.7.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.7.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.8.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.9.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.9.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lrexrepl = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.2-1'] = { + { + arch = "rockspec" + } + } + }, + lrt = { + ['1.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.1-0'] = { + { + arch = "rockspec" + } + }, + ['1.2-0'] = { + { + arch = "rockspec" + } + }, + ['1.3-0'] = { + { + arch = "rockspec" + } + }, + ['1.4-0'] = { + { + arch = "rockspec" + } + }, + ['1.5-0'] = { + { + arch = "rockspec" + } + } + }, + lrtaudio = { + ['0.0.1-1'] = { + { + arch = "rockspec" + } + } + }, + lrtmidi = { + ['0.0.1-1'] = { + { + arch = "rockspec" + } + } + }, + lrunkit = { + ['2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lsh = { + ['0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lsha2 = { + ['0.1-0'] = { + { + arch = "rockspec" + } + } + }, + lsleep = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lsm = { + ['0.4-13'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lsnes-timer'] = { + ['v0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['v0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lsocket = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lson = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lsp-progress.nvim'] = { + ['1.0.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.11-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.12-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lsp_signature.nvim'] = { + ['0.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lspec = { + ['0.0-1'] = { + { + arch = "rockspec" + } + } + }, + lsqlcipher = { + ['0.9.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.5-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.5-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lsqlite3 = { + ['0.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.2-2'] = { + { + arch = "rockspec" + } + }, + ['0.9.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.4-0'] = { + { + arch = "rockspec" + } + }, + ['0.9.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.9.4-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.6-1'] = { + { + arch = "rockspec" + } + } + }, + lsqlite3complete = { + ['0.9.4-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.6-1'] = { + { + arch = "rockspec" + } + } + }, + ltcltk = { + ['0.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ltdiff = { + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ltermbox = { + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ltest = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ltext = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ltl = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-0'] = { + { + arch = "rockspec" + } + }, + ['0.5-0'] = { + { + arch = "rockspec" + } + }, + ['0.5-1'] = { + { + arch = "rockspec" + } + } + }, + ltreesitter = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ltui = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.5-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.6-1'] = { + { + arch = "rockspec" + } + }, + ['2.7-1'] = { + { + arch = "rockspec" + } + }, + ['2.8-1'] = { + { + arch = "rockspec" + } + } + }, + ltype = { + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ltypekit = { + ['1.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['ltypekit-parser'] = { + ['7.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['7.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['7.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-acme'] = { + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-aho-corasick'] = { + ['1.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-amf3'] = { + ['2.0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-amqp'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-amqp-client'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + } + } + }, + ['lua-anki-connect'] = { + ['0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-api-gateway-aws'] = { + ['1.7.1-0'] = { + { + arch = "rockspec" + } + } + }, + ['lua-api-gateway-cachemanager'] = { + ['1.0.1-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-api-gateway-hmac'] = { + ['1.0.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['lua-aplicado'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-apr'] = { + ['0.18-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.18-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.20.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-arangodb'] = { + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-argparse'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.0-2'] = { + { + arch = "rockspec" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-askpass'] = { + ['1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-avro'] = { + ['1.0.1-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-basex'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-bcrypt'] = { + ['0.01-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-ber'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-bitcask'] = { + ['0.1.20210907-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.20210912-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.20210917-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.20210928-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-boolexpr'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-brotli'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-bsdiff'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-buffet'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-busmt-if'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-bz2'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-c3class'] = { + ['0.7-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-capnproto'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.0-2'] = { + { + arch = "rockspec" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.4-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.4-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.4-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.4-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-captcha'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-casclib'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-cassandra'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-0'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-0'] = { + { + arch = "rockspec" + } + }, + ['0.3.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.3.2-0'] = { + { + arch = "rockspec" + } + }, + ['0.3.3-0'] = { + { + arch = "rockspec" + } + }, + ['0.3.4-0'] = { + { + arch = "rockspec" + } + }, + ['0.3.5-0'] = { + { + arch = "rockspec" + } + }, + ['0.3.6-0'] = { + { + arch = "rockspec" + } + }, + ['0.4.0-0'] = { + { + arch = "rockspec" + } + }, + ['0.4.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.4.2-0'] = { + { + arch = "rockspec" + } + }, + ['0.5.0-0'] = { + { + arch = "rockspec" + } + }, + ['0.5.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.5.2-0'] = { + { + arch = "rockspec" + } + }, + ['0.5.3-0'] = { + { + arch = "rockspec" + } + }, + ['0.5.4-0'] = { + { + arch = "rockspec" + } + }, + ['0.5.5-0'] = { + { + arch = "rockspec" + } + }, + ['1.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.1.1-0'] = { + { + arch = "rockspec" + } + }, + ['1.2.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.2.1-0'] = { + { + arch = "rockspec" + } + }, + ['1.2.2-0'] = { + { + arch = "rockspec" + } + }, + ['1.2.3-0'] = { + { + arch = "rockspec" + } + }, + ['1.3.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.3.1-0'] = { + { + arch = "rockspec" + } + }, + ['1.3.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.2-0'] = { + { + arch = "rockspec" + } + }, + ['dev-0'] = { + { + arch = "rockspec" + } + } + }, + ['lua-cb0r'] = { + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-cbor'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-cc'] = { + ['1.2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-chan'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-channels'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-chartplot'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-circuit-breaker'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-cjson'] = { + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.0.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.0.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-cjson-219'] = { + ['2.1.0.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-cjson-ol'] = { + ['1.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-cjson2'] = { + ['2.1devel-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-class'] = { + ['3.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-cli'] = { + ['0.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-click'] = { + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.3-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-cmsgpack'] = { + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['lua-cn-cbor'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-coat'] = { + ['0.9.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-coatpersistent-lsqlite3'] = { + ['0.2.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-coatpersistent-luasql'] = { + ['0.2.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-codegen'] = { + ['0.3.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-color'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-colorlog'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-conciseserialization'] = { + ['0.2.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-conciseserialization-lua53'] = { + ['0.2.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-covid-data'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-crontab'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-crypt'] = { + ['1.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-csnappy'] = { + ['0.1.5-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-csv'] = { + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-curl'] = { + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.11-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.12-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.13-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.8-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-custom-test'] = { + ['0.0-51'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-dancing-links'] = { + ['0.2.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-dataclass'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-db'] = { + ['2.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-ddlt'] = { + ['2.3-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3-3'] = { + { + arch = "rockspec" + } + }, + ['2.4-0'] = { + { + arch = "rockspec" + } + }, + ['2.4-1'] = { + { + arch = "rockspec" + } + }, + ['2.5-0'] = { + { + arch = "rockspec" + } + }, + ['2.6-0'] = { + { + arch = "rockspec" + } + }, + ['2.7-0'] = { + { + arch = "rockspec" + } + }, + ['2.8-0'] = { + { + arch = "rockspec" + } + }, + ['2.8-1'] = { + { + arch = "rockspec" + } + }, + ['2.8-2'] = { + { + arch = "rockspec" + } + } + }, + ['lua-de'] = { + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-deresute'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-di'] = { + ['0.5-0'] = { + { + arch = "rockspec" + } + }, + ['0.6-0'] = { + { + arch = "rockspec" + } + }, + ['0.7-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-discount'] = { + ['1.2.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.10.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + }, { + arch = "win32-x86" + } + }, + ['1.2.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-docx'] = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-dog'] = { + ['1.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-dynamic-cors'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-easy-crypto'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-em'] = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-emoji'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-epoll'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-erento-hmac'] = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-erento-uuid'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-errhandler'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-espeak'] = { + ['1.36r1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-ev'] = { + ['v1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['v1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['v1.4-1'] = { + { + arch = "rockspec" + } + }, + ['v1.5-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-evdev'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-event-dispatcher'] = { + ['0.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.2-0'] = { + { + arch = "rockspec" + } + }, + ['0.3-0'] = { + { + arch = "rockspec" + } + } + }, + ['lua-express'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-express-middlewares'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-exprtk'] = { + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-extended'] = { + ['1.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-ezlib'] = { + ['1.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-fann'] = { + ['0.4-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-fastlz'] = { + ['0.5.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-fastutils'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-ffi-libinjection'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-ffi-zlib'] = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-filesize'] = { + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-fiware-lib'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.11-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.12-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.13-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-floyd-sampling'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-fort'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-fs-module'] = { + ['0.1-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-gainer-lib'] = { + ['1.1'] = { + { + arch = "rockspec" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-gd'] = { + ['1.0-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-geoip'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-getch'] = { + ['0.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-gl'] = { + ['1.15.05.99-01'] = { + { + arch = "rockspec" + } + } + }, + ['lua-glob-pattern'] = { + ['0.2.1.20120406-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-globals'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-gltf'] = { + ['1.0.0-2'] = { + { + arch = "rockspec" + } + }, + ['1.0.0-3'] = { + { + arch = "rockspec" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-gmod-lib'] = { + ['0.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-gnuplot'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-h3'] = { + ['4.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['4.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-hangul'] = { + ['1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['lua-hashings-and-nums'] = { + ['1.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-help'] = { + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-hiredis'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-hiredis-5.2-all-fixed'] = { + ['0.2.2-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-hiredis-cluster'] = { + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-hiredis-with-5.2-fix'] = { + ['0.2.2-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-http-parser'] = { + ['2.7-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-http2tcp'] = { + ['0.0.1-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-i18n'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-iconv'] = { + ['6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['7-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['7-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['7.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['7.0.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['7.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['r3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['r5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['r5-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-igt'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-imlib2'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-import'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-industrial-logger'] = { + ['1.1-0'] = { + { + arch = "rockspec" + } + } + }, + ['lua-ini'] = { + ['1.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-inih'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-input'] = { + ['0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-irc'] = { + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-jconv'] = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-jet'] = { + ['v0.10-1'] = { + { + arch = "rockspec" + } + }, + ['v0.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-jq'] = { + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-json'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-jsonpatch'] = { + ['0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0-7'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0-8'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0-9'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-jwc'] = { + ['0.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-jwk2pem'] = { + ['0.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-l10n'] = { + ['1.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-lace'] = { + ['1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-lander'] = { + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-laxjson'] = { + ['0.3.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-lcdproc'] = { + ['1.0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.8-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.8-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-leveldb'] = { + ['0.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-lhtmlr'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-libmodbus'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-linear'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-livr'] = { + ['0.2.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-livr-extra'] = { + ['0.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-ljson'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-llthreads'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-llthreads2'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-llthreads2-compat'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-log'] = { + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-log-r'] = { + ['1.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-logger'] = { + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-long-polling'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-louis'] = { + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-lru'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-lsp'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-lsw'] = { + ['0.0.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['lua-lswcli'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + }, + ['0.1.1-0'] = { + { + arch = "rockspec" + } + } + }, + ['lua-lz4'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-lzma'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-m6502'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-markdown-extra'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-marshal'] = { + ['1.0-1'] = { + { + arch = "rockspec" + } + }, + ['v1.0'] = { + { + arch = "rockspec" + } + } + }, + ['lua-mastodon'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-maxminddb'] = { + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-mbedtls'] = { + ['0.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-mc'] = { + ['1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-mcrypt'] = { + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + } + } + }, + ['lua-messagepack'] = { + ['0.5.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-messagepack-lua53'] = { + ['0.5.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-mikrotik'] = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-minittp'] = { + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.2-2'] = { + { + arch = "rockspec" + } + }, + ['0.2-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.3-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-mnemonic'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-mock'] = { + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-mongo'] = { + ['1.2.3-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-mongo-bson'] = { + ['1.2.3-2'] = { + { + arch = "rockspec" + } + } + }, + ['lua-mosquitto'] = { + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-mosquitto-v5'] = { + ['0.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-mqtt'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-mtrace'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-mud'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-multipart-parser'] = { + ['0.1.1-0'] = { + { + arch = "rockspec" + } + } + }, + ['lua-multipart-post'] = { + ['1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['lua-myallocator'] = { + ['0.02-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-nanoid'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-netudpif'] = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-newrelic-integration'] = { + ['0.01-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.01-5'] = { + { + arch = "rockspec" + } + }, + ['0.01-6'] = { + { + arch = "rockspec" + } + }, + ['0.01-7'] = { + { + arch = "rockspec" + } + } + }, + ['lua-nginx-logging'] = { + ['v1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-nng'] = { + ['master-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-nowplaying'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-nucleo'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-nuspell'] = { + ['0.1alpha-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2alpha-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3alpha-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4alpha-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5alpha-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-oast'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-obfuscator.nvim'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-object'] = { + ['1.0.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['lua-ocrspace'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.0-2'] = { + { + arch = "rockspec" + } + } + }, + ['lua-octave'] = { + ['1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-openai'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-opencage-geocoder'] = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-option'] = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-package'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-parser'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-path'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-payssion'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-periphery'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.5-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.4.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-pg-dmo'] = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-pie'] = { + ['1.0-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-promise'] = { + ['0.1-3'] = { + { + arch = "rockspec" + } + } + }, + ['lua-protobuf'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-protobuf-etcd'] = { + ['0.3.3.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.3.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.3.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.2-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-quickcheck'] = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-randombytes'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-rbtree'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-readline'] = { + ['0.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-recaptcha'] = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-rectangle'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-reql'] = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-0'] = { + { + arch = "rockspec" + } + }, + ['0.3-0'] = { + { + arch = "rockspec" + } + }, + ['0.4-0'] = { + { + arch = "rockspec" + } + }, + ['0.5-0'] = { + { + arch = "rockspec" + } + }, + ['0.5-1'] = { + { + arch = "rockspec" + } + }, + ['0.6-0'] = { + { + arch = "rockspec" + } + }, + ['0.6-1'] = { + { + arch = "rockspec" + } + }, + ['0.6-3'] = { + { + arch = "rockspec" + } + }, + ['0.6-4'] = { + { + arch = "rockspec" + } + }, + ['0.6-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6-6'] = { + { + arch = "rockspec" + } + }, + ['0.6-7'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-requests'] = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-requests-async'] = { + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resp'] = { + ['0.5.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-acme'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.10.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.10.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.11.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.12.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.13.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.14.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.11-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-agoradynamickey'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-aries'] = { + ['release-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-auto-ssl'] = { + ['0.10.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.10.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.10.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.10.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.10.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.10.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.10.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.11.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.11.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.12.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.13.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.13.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-auto-ssl-20200912'] = { + ['0.14.4-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-auto-ssl-de'] = { + ['0.11.1-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-auto-ssl-instrumented'] = { + ['0.11.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.11.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.11.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.11.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.11.0-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.11.0-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.11.0-7'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.11.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.11.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.11.1-10'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.11.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.11.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.11.1-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.11.1-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.11.1-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.11.1-7'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.11.1-8'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.11.1-9'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-auto-ssl-multiname'] = { + ['0.12.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.12.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-aws'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-aws-auth'] = { + ['0.01-0'] = { + { + arch = "rockspec" + } + }, + ['0.11-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.12-0'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-aws-email'] = { + ['0.01-0'] = { + { + arch = "rockspec" + } + }, + ['0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-aws-sdk'] = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-azure'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-balancer'] = { + ['0.02rc5-0'] = { + { + arch = "rockspec" + } + }, + ['0.04-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-beanstalkd'] = { + ['0.0-5'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-busted'] = { + ['0.0.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.0.1-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-busted2'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + }, + ['0.1.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.1.2-0'] = { + { + arch = "rockspec" + } + }, + ['0.1.3-0'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-0'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-0'] = { + { + arch = "rockspec" + } + }, + ['0.3.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.3.2-0'] = { + { + arch = "rockspec" + } + }, + ['0.3.3-0'] = { + { + arch = "rockspec" + } + }, + ['0.3.4-0'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-casbin'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-casbin-adapter'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-certificate-sso'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-checkups'] = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-configure'] = { + ['0.0.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.0.2-0'] = { + { + arch = "rockspec" + } + }, + ['0.0.3-0'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-console'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-consul'] = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-consul-0.3.2'] = { + ['0.3-2'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-consul-event'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + }, + ['0.1.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-cookie'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-core'] = { + ['0.1.17-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.17-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.17-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.17-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-cors'] = { + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-couchbase'] = { + ['0.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-couchdb'] = { + ['2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-counter'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-crypto'] = { + ['master-0'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-ctxdump'] = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-dns'] = { + ['0.21-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-dns-client'] = { + ['0.3.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.6.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.6.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.1.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-dogstatsd'] = { + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-dogstatsd-jb'] = { + ['1.0.1-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-duo-mobile'] = { + ['0.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.2-0'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-env'] = { + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-etcd'] = { + ['0.2-0'] = { + { + arch = "rockspec" + } + }, + ['0.3-0'] = { + { + arch = "rockspec" + } + }, + ['0.4-0'] = { + { + arch = "rockspec" + } + }, + ['0.5-0'] = { + { + arch = "rockspec" + } + }, + ['0.6-0'] = { + { + arch = "rockspec" + } + }, + ['0.7-0'] = { + { + arch = "rockspec" + } + }, + ['0.8-0'] = { + { + arch = "rockspec" + } + }, + ['0.9-0'] = { + { + arch = "rockspec" + } + }, + ['1.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.1-0'] = { + { + arch = "rockspec" + } + }, + ['1.10.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.10.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.10.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.10.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.10.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.10.5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.10.6-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-0'] = { + { + arch = "rockspec" + } + }, + ['1.3-0'] = { + { + arch = "rockspec" + } + }, + ['1.4-0'] = { + { + arch = "rockspec" + } + }, + ['1.4.1-0'] = { + { + arch = "rockspec" + } + }, + ['1.4.2-0'] = { + { + arch = "rockspec" + } + }, + ['1.4.3-0'] = { + { + arch = "rockspec" + } + }, + ['1.4.4-0'] = { + { + arch = "rockspec" + } + }, + ['1.5.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.5.2-0'] = { + { + arch = "rockspec" + } + }, + ['1.5.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-exec'] = { + ['1.0.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.1.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.1.1-0'] = { + { + arch = "rockspec" + } + }, + ['1.1.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.1.2-0'] = { + { + arch = "rockspec" + } + }, + ['1.1.3-0'] = { + { + arch = "rockspec" + } + }, + ['1.1.4-0'] = { + { + arch = "rockspec" + } + }, + ['1.2.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.2.1-0'] = { + { + arch = "rockspec" + } + }, + ['2.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-execvp'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-expr'] = { + ['1.0.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.1.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.2.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.3.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.3.1-0'] = { + { + arch = "rockspec" + } + }, + ['1.3.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-fastutils'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-feishu-auth'] = { + ['0.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-fernet'] = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-ffi'] = { + ['main-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-ffi-python'] = { + ['main-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-fileinfo'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-fluent-logger'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-fluentd'] = { + ['0.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-ga'] = { + ['1.1-0'] = { + { + arch = "rockspec" + } + }, + ['1.2-0'] = { + { + arch = "rockspec" + } + }, + ['1.3-0'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-gaze'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-gcp'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.11-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.12-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.13-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.9-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-github'] = { + ['v1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-global-throttle'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-grpc-gateway'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-hashids'] = { + ['1.0.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-healthcheck'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-healthcheck-alins'] = { + ['3.0.0-0'] = { + { + arch = "rockspec" + } + }, + ['3.0.1-0'] = { + { + arch = "rockspec" + } + }, + ['3.0.2-0'] = { + { + arch = "rockspec" + } + }, + ['3.1.0-0'] = { + { + arch = "rockspec" + } + }, + ['3.1.1-0'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-healthcheck-api7'] = { + ['2.2.0-0'] = { + { + arch = "rockspec" + } + }, + ['2.2.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-healthcheck-iresty'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.1-0'] = { + { + arch = "rockspec" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.1-2'] = { + { + arch = "rockspec" + } + }, + ['2.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-healthcheck-snz1'] = { + ['0.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-hipchat'] = { + ['v1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-hmac'] = { + ['v1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-hmac-ffi'] = { + ['0.05-0'] = { + { + arch = "rockspec" + } + }, + ['0.06-0'] = { + { + arch = "rockspec" + } + }, + ['0.06-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-hoedown'] = { + ['0.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-hs'] = { + ['0.0.1-0'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-hs-no-build'] = { + ['0.0.1-0'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-http'] = { + ['0.06-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.07-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.08-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.09-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.10-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.11-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.12-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.13-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.14-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.15-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.16-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.16.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.17.0.beta.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.17.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.17.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-http2'] = { + ['1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-httpipe'] = { + ['0.05-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-influx'] = { + ['0.2.1-0'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-influx-mufanh'] = { + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-influx-statistics'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-10'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-11'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-12'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-7'] = { + { + arch = "rockspec" + } + }, + ['0.0.1-8'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-9'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-info'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-injection'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-ipmatcher'] = { + ['0.2-0'] = { + { + arch = "rockspec" + } + }, + ['0.3-0'] = { + { + arch = "rockspec" + } + }, + ['0.4-0'] = { + { + arch = "rockspec" + } + }, + ['0.5-0'] = { + { + arch = "rockspec" + } + }, + ['0.6-0'] = { + { + arch = "rockspec" + } + }, + ['0.6.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-iputils'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-iyo-auth'] = { + ['0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-jit-uuid'] = { + ['0.0.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.0.2-0'] = { + { + arch = "rockspec" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.6-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.7-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.7-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-jq'] = { + ['0.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-jsonrpc-batch'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-jwt'] = { + ['0.1.10-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.11-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.6-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.7-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.8-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.9-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-jwt-48606'] = { + ['0.1.12-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-kafka'] = { + ['0.06-0'] = { + { + arch = "rockspec" + } + }, + ['0.07-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.08-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.09-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.20-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.22-0'] = { + { + arch = "rockspec" + } + }, + ['0.23-0'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-keycloak'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-latch'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-ldap'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-libcjson'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-libr3'] = { + ['0.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.2-0'] = { + { + arch = "rockspec" + } + }, + ['0.3-0'] = { + { + arch = "rockspec" + } + }, + ['0.4-0'] = { + { + arch = "rockspec" + } + }, + ['0.5-0'] = { + { + arch = "rockspec" + } + }, + ['0.6-0'] = { + { + arch = "rockspec" + } + }, + ['0.7-0'] = { + { + arch = "rockspec" + } + }, + ['0.8-0'] = { + { + arch = "rockspec" + } + }, + ['0.9-0'] = { + { + arch = "rockspec" + } + }, + ['1.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.1-0'] = { + { + arch = "rockspec" + } + }, + ['1.2-0'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-limit-rate'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-ljsonschema'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.6-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-ljusb'] = { + ['1.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-lock'] = { + ['0.07-0'] = { + { + arch = "rockspec" + } + }, + ['0.08-0'] = { + { + arch = "rockspec" + } + }, + ['0.08-1'] = { + { + arch = "rockspec" + } + }, + ['0.09-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-logger-socket'] = { + ['1.0-0'] = { + { + arch = "rockspec" + } + }, + ['2.0-0'] = { + { + arch = "rockspec" + } + }, + ['2.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-lrucache'] = { + ['0.09-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.09-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-luasocket'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-macaroons'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-mail'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-maxminddb'] = { + ['1.3.3-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.3-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-maxminddb-multi'] = { + ['1.3.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-mediador'] = { + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-memcached'] = { + ['0.13-0'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-mlcache'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['2.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['2.0.2-1'] = { + { + arch = "rockspec" + } + }, + ['2.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['2.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['2.2.1-1'] = { + { + arch = "rockspec" + } + }, + ['2.2.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.6.0-1'] = { + { + arch = "rockspec" + } + }, + ['2.6.0-2'] = { + { + arch = "rockspec" + } + }, + ['2.6.1-1'] = { + { + arch = "rockspec" + } + }, + ['2.7.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-mock'] = { + ['0.0.1-0'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-moesif'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.16-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.18-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.11-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-motan'] = { + ['0.1.5-11'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.5-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.5-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.5-7'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.5-8'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-mpd'] = { + ['1.0.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.0.1-0'] = { + { + arch = "rockspec" + } + }, + ['1.0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.0.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.0.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.0.5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.0.6-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.0.7-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.2.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.2.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.2.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-multiplexer'] = { + ['0.02-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-murmurhash2'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-murmurhash3'] = { + ['1.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-mutex'] = { + ['1.0.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-mysql'] = { + ['0.15-0'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-nanoid'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.1-2'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-nats'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-nettle'] = { + ['0.100-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.101-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.102-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.103-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.104-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.105-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.95-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.96-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.97-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.98-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.99-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-nghttp2'] = { + ['1.0.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-nghttp2-asio'] = { + ['1.2.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-ngxvar'] = { + ['0.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.2-0'] = { + { + arch = "rockspec" + } + }, + ['0.3-0'] = { + { + arch = "rockspec" + } + }, + ['0.4-0'] = { + { + arch = "rockspec" + } + }, + ['0.5-0'] = { + { + arch = "rockspec" + } + }, + ['0.5.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.5.2-0'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-ntlm'] = { + ['0.1-2'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-oakrouting'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-oauth-proxy'] = { + ['1.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-openidc'] = { + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7.6-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7.6-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-openssl'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.0rc0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.10-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.11-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.11-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.13-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.14-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.15-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.17-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.18-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.19-1'] = { + { + arch = "rockspec" + } + }, + ['0.8.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.20-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.21-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.22-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.23-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.24-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.25-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.26-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-passwdqc'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-paypal'] = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-perf'] = { + ['1.0.0'] = { + { + arch = "rockspec" + } + }, + ['1.0.1-0'] = { + { + arch = "rockspec" + } + }, + ['1.0.2-0'] = { + { + arch = "rockspec" + } + }, + ['1.0.4-0'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-phantom-token'] = { + ['1.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.1.1-1'] = { + { + arch = "rockspec" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['2.0.1-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-postgres'] = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-postgres-client'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-prettycjson'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-prometheus'] = { + ['1.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.1-0'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-pubsub'] = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-pushover'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + }, + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-qless'] = { + ['0.07-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.08-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.10-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.11-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.12-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-queue'] = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-r3'] = { + ['2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-rabbitmqstomp'] = { + ['0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-radixtree'] = { + ['0.3-0'] = { + { + arch = "rockspec" + } + }, + ['0.4-0'] = { + { + arch = "rockspec" + } + }, + ['0.5-0'] = { + { + arch = "rockspec" + } + }, + ['0.6-0'] = { + { + arch = "rockspec" + } + }, + ['0.7-0'] = { + { + arch = "rockspec" + } + }, + ['0.8-0'] = { + { + arch = "rockspec" + } + }, + ['0.9-0'] = { + { + arch = "rockspec" + } + }, + ['1.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.1-0'] = { + { + arch = "rockspec" + } + }, + ['1.2-0'] = { + { + arch = "rockspec" + } + }, + ['1.3-0'] = { + { + arch = "rockspec" + } + }, + ['1.4-0'] = { + { + arch = "rockspec" + } + }, + ['1.5-0'] = { + { + arch = "rockspec" + } + }, + ['1.6-0'] = { + { + arch = "rockspec" + } + }, + ['1.6-1'] = { + { + arch = "rockspec" + } + }, + ['1.7-0'] = { + { + arch = "rockspec" + } + }, + ['1.8-0'] = { + { + arch = "rockspec" + } + }, + ['1.9-0'] = { + { + arch = "rockspec" + } + }, + ['2.0-0'] = { + { + arch = "rockspec" + } + }, + ['2.1-0'] = { + { + arch = "rockspec" + } + }, + ['2.2-0'] = { + { + arch = "rockspec" + } + }, + ['2.3-0'] = { + { + arch = "rockspec" + } + }, + ['2.4-0'] = { + { + arch = "rockspec" + } + }, + ['2.5-0'] = { + { + arch = "rockspec" + } + }, + ['2.6-0'] = { + { + arch = "rockspec" + } + }, + ['2.6.1-0'] = { + { + arch = "rockspec" + } + }, + ['2.6.1-1'] = { + { + arch = "rockspec" + } + }, + ['2.7.0-0'] = { + { + arch = "rockspec" + } + }, + ['2.8.0-0'] = { + { + arch = "rockspec" + } + }, + ['2.8.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.8.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.8.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.9.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.9.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-readurl'] = { + ['v1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-redis'] = { + ['0.26-0'] = { + { + arch = "rockspec" + } + }, + ['0.27-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-redis-client'] = { + ['0.2.1-0'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-redis-cluster'] = { + ['1.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.1-0'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-redis-connector'] = { + ['0.02-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.03-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.04-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.05-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.06-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.07-0'] = { + { + arch = "rockspec" + } + }, + ['0.07-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.08-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.09-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.10-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.11.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-redis-util'] = { + ['0.07-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-repl'] = { + ['0.0.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.0.2-0'] = { + { + arch = "rockspec" + } + }, + ['0.0.3-0'] = { + { + arch = "rockspec" + } + }, + ['0.0.4-0'] = { + { + arch = "rockspec" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.6-0'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-reqargs'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-requests'] = { + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-resolver'] = { + ['0.05-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-rocketmq'] = { + ['0.2.0-0'] = { + { + arch = "rockspec" + } + }, + ['0.2.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.1-3'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-0'] = { + { + arch = "rockspec" + } + }, + ['0.3.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.4.0-0'] = { + { + arch = "rockspec" + } + }, + ['0.4.1-0'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-rollbar'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-rsa'] = { + ['0.04-0'] = { + { + arch = "rockspec" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-rsa-placeholder'] = { + ['0.05-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-s3'] = { + ['v1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-saml'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-scrypt'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-session'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.12-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.13-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.15-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.16-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.17-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.18-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.19-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.21-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.22-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.23-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.24-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.25-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.26-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.0.0.beta.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.0.0.beta.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.0.0.beta.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-session-zhulx'] = { + ['2.24-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-shcache'] = { + ['0.01-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-shell'] = { + ['0.03-0'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-signal'] = { + ['0.02-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-snappy'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-sniproxy'] = { + ['0.22-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-socket'] = { + ['0.0.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.0.3-0'] = { + { + arch = "rockspec" + } + }, + ['0.0.4-0'] = { + { + arch = "rockspec" + } + }, + ['0.0.5-0'] = { + { + arch = "rockspec" + } + }, + ['0.0.6-0'] = { + { + arch = "rockspec" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-sse'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-statsd'] = { + ['3.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-string'] = { + ['0.09-0'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-struct'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-t1k'] = { + ['1.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-t1k-main'] = { + ['0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-tags'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-tarpit'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-tasker'] = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-template'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-test'] = { + ['0.1-0'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-thread'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-0'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.0-0'] = { + { + arch = "rockspec" + } + }, + ['0.4.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.5.0-0'] = { + { + arch = "rockspec" + } + }, + ['0.6.0-0'] = { + { + arch = "rockspec" + } + }, + ['0.6.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.6.2-0'] = { + { + arch = "rockspec" + } + }, + ['0.6.3-0'] = { + { + arch = "rockspec" + } + }, + ['0.6.4-0'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-timer'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-timer-ng'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.5-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-tsort'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-txid'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-uh'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.6-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-upload'] = { + ['0.09-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-upstream'] = { + ['0.08-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-upstream-healthcheck-tls'] = { + ['1.0.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.0.1-0'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-upstream-worker'] = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-urandom'] = { + ['0.2-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-url'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-uuid'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-validation'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-vardump'] = { + ['1.0.2-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-waf'] = { + ['0.10.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.11.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.8.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.8.2-2'] = { + { + arch = "rockspec" + } + }, + ['0.9-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-weauth'] = { + ['0.0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-websocket'] = { + ['0.07-0'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-websocket-kong'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-websocket-proxy'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-whitelist'] = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-wirefilter'] = { + ['v1.0.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-resty-woothee'] = { + ['1.10.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.10.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.10.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.11.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.12.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-worker-events'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-xxhash'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-resty-xxhash-encode'] = { + ['1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['lua-rocks-app-project'] = { + ['1.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-rotas'] = { + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-rote'] = { + ['1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-rover'] = { + ['scm-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-rtmidi'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-rtoml'] = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-ryaml'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-s7iso'] = { + ['0.1-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-salt'] = { + ['0.0.1-0'] = { + { + arch = "rockspec" + } + } + }, + ['lua-schema-validation'] = { + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-sdl2'] = { + ['2.0.3.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.3.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.3.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.5.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-secureunionid'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-semver'] = { + ['1.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-series'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-shepi'] = { + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-shmem'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-silva'] = { + ['0.1.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-simdjson'] = { + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-simplelog'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-smtps'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-sort'] = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-spore'] = { + ['0.3.3-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-sqlite3'] = { + ['0.4.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-ssllabs'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-status'] = { + ['1.0.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-step'] = { + ['v1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-stormlib'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-string'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-string-template'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-string-test'] = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-struct'] = { + ['0.9.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.9.2-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-suncalc'] = { + ['0.1-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-7'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-switch'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-syntect'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-table-to-literal'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-telegram-api'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-template'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-term'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.5-1'] = { + { + arch = "rockspec" + } + }, + ['0.6-1'] = { + { + arch = "rockspec" + } + }, + ['0.7-1'] = { + { + arch = "rockspec" + } + }, + ['0.8-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-test'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-testassertion'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-testclass'] = { + ['0.01-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-testlongstring'] = { + ['0.2.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-testmore'] = { + ['0.3.5-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-timeago'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-tinycdb'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-tinyyaml'] = { + ['0.1-0'] = { + { + arch = "rockspec" + } + }, + ['1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['lua-tk'] = { + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-toml'] = { + ['1.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-tree-sitter'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-ttyrant'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-twilio'] = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-twitter'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-typeof'] = { + ['0.1-0'] = { + { + arch = "rockspec" + } + } + }, + ['lua-tz'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-ubjson'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-ucl'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-udev'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-uri'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-utility'] = { + ['0.2-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-utils'] = { + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.2-2'] = { + { + arch = "rockspec" + } + }, + ['0.2-3'] = { + { + arch = "rockspec" + } + }, + ['1.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-utils.nvim'] = { + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-value-browser'] = { + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-vcard'] = { + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-vips'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-10'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-11'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-7'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-8'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-9'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-vosk'] = { + ['1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + } + }, + ['1.3-2'] = { + { + arch = "rockspec" + } + }, + ['1.3-3'] = { + { + arch = "rockspec" + } + }, + ['1.3-4'] = { + { + arch = "rockspec" + } + }, + ['1.3-5'] = { + { + arch = "rockspec" + } + } + }, + ['lua-websockets'] = { + ['v1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['v2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['v2.1-1'] = { + { + arch = "rockspec" + } + }, + ['v2.2-1'] = { + { + arch = "rockspec" + } + } + }, + ['lua-webview'] = { + ['1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + } + }, + ['1.2-2'] = { + { + arch = "rockspec" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + } + }, + ['1.3-2'] = { + { + arch = "rockspec" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + } + }, + ['1.4-2'] = { + { + arch = "rockspec" + } + } + }, + ['lua-wolfram'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-xlib'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-xlsxwriter'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-xmlreader'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-xwiimote'] = { + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-xxtea'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-yajl'] = { + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-yaml'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-yottadb'] = { + ['2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-zabbix-sender'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-zip'] = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-zlib'] = { + ['0.3-0'] = { + { + arch = "rockspec" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.5-0'] = { + { + arch = "rockspec" + } + }, + ['1.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.1-0'] = { + { + arch = "rockspec" + } + }, + ['1.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + } + }, + ['1.2-2'] = { + { + arch = "rockspec" + } + } + }, + ['lua-zmq'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-zmq-threads'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua-zstd'] = { + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lua2json = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lua5.1.js-file-packer'] = { + ['0.9.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lua_bufflib = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lua_cliargs = { + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.5-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.5-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.5-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.5-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.rc-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lua_code_formatter = { + ['1.0.0-1'] = { + { + arch = "rockspec" + } + } + }, + lua_fun = { + ['0.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.4-3'] = { + { + arch = "rockspec" + } + }, + ['0.4.0'] = { + { + arch = "rockspec" + } + }, + ['0.4.0-2'] = { + { + arch = "rockspec" + } + }, + ['0.4.1-0'] = { + { + arch = "rockspec" + } + } + }, + lua_ip = { + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + } + } + }, + lua_json = { + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lua_ldap = { + ['1.0.2-0'] = { + { + arch = "rockspec" + } + } + }, + lua_pack = { + ['1.0.4-0'] = { + { + arch = "rockspec" + } + }, + ['1.0.5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lua_pack_cn = { + ['1.0.0-0'] = { + { + arch = "rockspec" + } + } + }, + lua_redis = { + ['1.0.0-1'] = { + { + arch = "rockspec" + } + } + }, + lua_resty_netacea = { + ['0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lua_signal = { + ['1.000-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lua_sysenv = { + ['0.1-0'] = { + { + arch = "rockspec" + } + } + }, + lua_system_constants = { + ['0.1-3'] = { + { + arch = "rockspec" + } + }, + ['0.1.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.1.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.3-0'] = { + { + arch = "rockspec" + } + }, + ['0.1.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lua_table = { + ['0.4'] = { + { + arch = "rockspec" + } + }, + ['0.4.1'] = { + { + arch = "rockspec" + } + }, + ['0.4.2'] = { + { + arch = "rockspec" + } + }, + ['0.4.3-0'] = { + { + arch = "rockspec" + } + } + }, + lua_to_html = { + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + lua_uuid = { + ['0.1-8'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-0'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-2'] = { + { + arch = "rockspec" + } + } + }, + luabase64 = { + ['0-7'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0-8'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0-9'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luabatteries = { + ['0.1'] = { + { + arch = "rockspec" + } + } + }, + luabc = { + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luabcd = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-12'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-7'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-8'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-9'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luabenchmark = { + ['0.10.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luabibtex = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.0-2'] = { + { + arch = "rockspec" + } + } + }, + luabidi = { + ['0.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luabins = { + ['0.1.1-2'] = { + { + arch = "rockspec" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luabitop = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-3'] = { + { + arch = "rockspec" + } + } + }, + ['luabitop-53plus'] = { + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luabox = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luacasc = { + ['1.14-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.15-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.16-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.16.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.17-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luacc = { + ['0.9-0'] = { + { + arch = "rockspec" + } + }, + ['0.9-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9-4'] = { + { + arch = "rockspec" + } + }, + ['0.9-5'] = { + { + arch = "rockspec" + } + } + }, + luacheck = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.10.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.11.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.11.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.12.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.13.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.14.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.15.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.15.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.16.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.16.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.16.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.16.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.17.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.17.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.18.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.19.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.19.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.20.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.21.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.21.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.21.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.22.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.22.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.23.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.24.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.24.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.25.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.26.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.26.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['luacheck-formatter-sonar'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['luacheck-formatter-sonarqube'] = { + ['0.3.1-1'] = { + { + arch = "rockspec" + } + } + }, + luachild = { + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + } + } + }, + luacio = { + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luaclass = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luaclasses = { + ['1.0-0'] = { + { + arch = "rockspec" + } + } + }, + luacoap = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luacom = { + ['1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + }, { + arch = "win32-x86" + } + } + }, + luacom_x86 = { + ['dev.unknown-1'] = { + { + arch = "rockspec" + } + }, + ['dev.unknown-2'] = { + { + arch = "rockspec" + } + } + }, + luaconfig = { + ['0.1.5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.7-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.8-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.9-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luacov = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + }, + ['0.10.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.11.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.12.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.13.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.14.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.14.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.15.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['luacov-cobertura'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['luacov-console'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-3'] = { + { + arch = "rockspec" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['luacov-coveralls'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['luacov-html'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['luacov-multiple'] = { + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.5-1'] = { + { + arch = "rockspec" + } + }, + ['0.6-1'] = { + { + arch = "rockspec" + } + } + }, + ['luacov-reporter-gcovr'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['luacov-reporter-lcov'] = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + } + }, + ['luacov-summary'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luacrc16 = { + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + luacrypto = { + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0.20120524-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['luacrypto-baikal'] = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luacrypto2 = { + ['0.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luacryptor = { + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + luacs = { + ['1.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luacsound = { + ['0.1-1'] = { + { + arch = "rockspec" + } + } + }, + luactx = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luacurl = { + ['1.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + }, { + arch = "win32-x86" + } + }, + ['1.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luacv = { + ['0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luacwrap = { + ['1.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.1-1'] = { + { + arch = "rockspec" + } + } + }, + luadaemon = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luadash = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luadate = { + ['2.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luadbc = { + ['1.12-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.13-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.14-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.14-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.15-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luadbd = { + ['0.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.2-0'] = { + { + arch = "rockspec" + } + }, + ['0.2.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.3-0'] = { + { + arch = "rockspec" + } + }, + ['0.3.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.3.2-0'] = { + { + arch = "rockspec" + } + }, + ['0.3.3-0'] = { + { + arch = "rockspec" + } + }, + ['0.4-0'] = { + { + arch = "rockspec" + } + }, + ['0.5-0'] = { + { + arch = "rockspec" + } + }, + ['0.6-0'] = { + { + arch = "rockspec" + } + } + }, + luadbg = { + ['0.1-1'] = { + { + arch = "rockspec" + } + } + }, + luadbi = { + ['0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7-1'] = { + { + arch = "rockspec" + } + }, + ['0.7.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['luadbi-mysql'] = { + ['0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7-1'] = { + { + arch = "rockspec" + } + }, + ['0.7.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['luadbi-postgresql'] = { + ['0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7-1'] = { + { + arch = "rockspec" + } + }, + ['0.7.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['luadbi-sqlite3'] = { + ['0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7-1'] = { + { + arch = "rockspec" + } + }, + ['0.7.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luadeepcl = { + ['5.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luademorock = { + ['v1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['luadist-hello'] = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luadist2 = { + ['0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.5-1'] = { + { + arch = "rockspec" + } + } + }, + luadns = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luadoc = { + ['3.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + } + }, + luadocumentor = { + ['0.1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luaec25519 = { + ['0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luaejdb = { + ['1.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.1.0-2'] = { + { + arch = "rockspec" + } + } + }, + luaepnf = { + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luaevent = { + ['0.4.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luaex = { + ['0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luaexif = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luaexpat = { + ['1.1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + }, { + arch = "win32-x86" + } + }, + ['1.1.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luafam = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luafan = { + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luafanlite = { + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luafanmicro = { + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luafcgi = { + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['luaffi-tkl'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luafft = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + } + } + }, + luafileno = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luafilesystem = { + ['1.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + }, { + arch = "win32-x86" + } + }, + ['1.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + }, { + arch = "win32-x86" + } + }, + ['1.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + }, { + arch = "win32-x86" + } + }, + ['1.4.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + }, { + arch = "win32-x86" + } + }, + ['1.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + }, { + arch = "win32-x86" + } + }, + ['1.5.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + }, { + arch = "win32-x86" + } + }, + ['1.6.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6.3-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['luafilesystem-ffi'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['scm-1'] = { + { + arch = "rockspec" + } + } + }, + luaflac = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luaflock = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luaflow = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luafn = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luafontmanager = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luafp = { + ['1.5-19'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5-20'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luafruits = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luafudge = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + } + }, + luagcrypt = { + ['0.2-1'] = { + { + arch = "rockspec" + } + } + }, + luagearman = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luagl = { + ['1.01-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luagq = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luagraph = { + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luagraphs = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luahaml = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luaharfbuzz = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.6-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.7-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luahelp = { + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luahtml = { + ['1.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + } + }, + luahue = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luai = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luaidl = { + ['0.8.9beta-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + } + }, + luainlua = { + ['0.1-0'] = { + { + arch = "rockspec" + } + } + }, + luaipc = { + ['c7b814e-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luaipfs = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luaircclient = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-7'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-8'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-9'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['luaish-windows'] = { + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luaiter = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['luajit-ahk'] = { + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['luajit-brotli'] = { + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['luajit-curl'] = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['luajit-dmon'] = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['luajit-ffi-loader'] = { + ['1.0.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['luajit-geoip'] = { + ['2.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['luajit-gumbo'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + } + } + }, + ['luajit-mail'] = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['luajit-rsync'] = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['luajit-tidy'] = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['luajit-woothee'] = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['luajit-xxhash'] = { + ['0.1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['luajit-zstd'] = { + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luajls = { + ['0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.5-1'] = { + { + arch = "rockspec" + } + }, + ['0.6-6'] = { + { + arch = "rockspec" + } + }, + ['0.7-3'] = { + { + arch = "rockspec" + } + } + }, + ['luajls-lfs'] = { + ['0.2-1'] = { + { + arch = "rockspec" + } + } + }, + ['luajls-luv'] = { + ['0.2-1'] = { + { + arch = "rockspec" + } + } + }, + luajson = { + ['0.10-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + }, + ['1.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + } + }, + ['1.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luajudo = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luajwt = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luajwtabcpen = { + ['2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luajwtjitsi = { + ['1.3-5'] = { + { + arch = "rockspec" + } + }, + ['1.3-6'] = { + { + arch = "rockspec" + } + }, + ['1.3-7'] = { + { + arch = "rockspec" + } + }, + ['2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['luajwtjitsi-petergood'] = { + ['1.3-7'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luajwtossl = { + ['1.3-7'] = { + { + arch = "rockspec" + } + } + }, + luakatsu = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luakiwis = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luakube = { + ['0.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0alpha-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luakuroshiro = { + ['0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lualame = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lualand = { + ['0.0-1'] = { + { + arch = "rockspec" + } + } + }, + lualdap = { + ['1.2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.4.rc1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lualgorithms = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-7'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-8'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lualibrarytemplate = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lualibusb = { + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lualife = { + ['1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + } + }, + ['1.5-1'] = { + { + arch = "rockspec" + } + }, + ['1.5.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.5.2-1'] = { + { + arch = "rockspec" + } + }, + ['1.5.3-1'] = { + { + arch = "rockspec" + } + }, + ['1.5.4-1'] = { + { + arch = "rockspec" + } + } + }, + lualines = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lualink = { + ['0.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lualinq = { + ['1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lualit = { + ['0.0.2-1'] = { + { + arch = "rockspec" + } + } + }, + lualog = { + ['0.1-3'] = { + { + arch = "rockspec" + } + } + }, + lualogging = { + ['1.1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lualol = { + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + } + }, + ['0.1-3'] = { + { + arch = "rockspec" + } + }, + ['0.1-4'] = { + { + arch = "rockspec" + } + } + }, + luals2dox = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lualsx = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lualua = { + ['scm-0'] = { + { + arch = "rockspec" + } + } + }, + lualvm = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lualzo = { + ['0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luamacro = { + ['2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.4-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.5.1-1'] = { + { + arch = "rockspec" + } + }, + ['2.5.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luamagick = { + ['6.q16-1'] = { + { + arch = "rockspec" + } + } + }, + luamark = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luamidi = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luamine = { + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + luaminify = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luamon = { + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luamqtt = { + ['1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.4.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.4.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.4.2-1'] = { + { + arch = "rockspec" + } + }, + ['1.4.3-1'] = { + { + arch = "rockspec" + } + }, + ['1.4.3-2'] = { + { + arch = "rockspec" + } + }, + ['1.4.3-3'] = { + { + arch = "rockspec" + } + }, + ['1.4.3-4'] = { + { + arch = "rockspec" + } + }, + ['1.4.5-1'] = { + { + arch = "rockspec" + } + }, + ['1.4.6-1'] = { + { + arch = "rockspec" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['3.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['3.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['3.1.0-2'] = { + { + arch = "rockspec" + } + }, + ['3.1.1-0'] = { + { + arch = "rockspec" + } + }, + ['3.1.2-0'] = { + { + arch = "rockspec" + } + }, + ['3.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['3.2.1-1'] = { + { + arch = "rockspec" + } + }, + ['3.3.1-1'] = { + { + arch = "rockspec" + } + }, + ['3.3.2-1'] = { + { + arch = "rockspec" + } + }, + ['3.4.1-1'] = { + { + arch = "rockspec" + } + }, + ['3.4.2-1'] = { + { + arch = "rockspec" + } + }, + ['3.4.2-2'] = { + { + arch = "rockspec" + } + }, + ['3.4.2-3'] = { + { + arch = "rockspec" + } + }, + ['3.4.2-4'] = { + { + arch = "rockspec" + } + }, + ['3.4.3-1'] = { + { + arch = "rockspec" + } + } + }, + luamqttc = { + ['0.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luamqttt = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luandarray = { + ['1.0.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luanet = { + ['1.1.2-0'] = { + { + arch = "rockspec" + } + } + }, + luanlp = { + ['0.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['luanosql-unqlite'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + } + } + }, + luanotify = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luanscol = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luaobject = { + ['0.1.1-5'] = { + { + arch = "rockspec" + } + } + }, + luaocc = { + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + } + } + }, + luaogg = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luaohook = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luaoop = { + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luaopus = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luaorm = { + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luaossl = { + ['20141028-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20150504-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20150504-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20150727-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20150727-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20151221-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20151221-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20161029-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20161101-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20161208-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20161209-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20161214-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20170901-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20170903-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20171028-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20180530-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20180708-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20181102-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20181207-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20190612-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20190731-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20200709-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20220711-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luapak = { + ['0.1.0.beta2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0.beta3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0.beta4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0.beta5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luapdu = { + ['0.1-1'] = { + { + arch = "rockspec" + } + } + }, + luapgsql = { + ['1.4.10-0'] = { + { + arch = "rockspec" + } + }, + ['1.4.2-0'] = { + { + arch = "rockspec" + } + }, + ['1.6.1-0'] = { + { + arch = "rockspec" + } + }, + ['1.6.1-1'] = { + { + arch = "rockspec" + } + } + }, + luaphonenumber = { + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + luapicohttpparser = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luaplot = { + ['1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + } + }, + ['1.2.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + } + } + }, + luapod = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + } + }, + luaposix = { + ['29-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['30-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['31-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['32-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['33.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['33.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['33.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['33.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['33.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['34.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['34.0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['34.0.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['34.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['34.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['34.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['34.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['34.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['35.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['35.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['36.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['36.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['36.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['36.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.1.12-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.1.14-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.1.15-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.1.18-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.1.19-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.1.20-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.1.20-2'] = { + { + arch = "rockspec" + } + }, + ['5.1.21-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.1.22-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.1.23-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.1.24-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.1.25-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.1.26-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.1.27-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.1.28-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.1.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.1.7-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.1.7-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luaprecomp = { + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luapreprocess = { + ['1.19.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.20.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.21.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luapress = { + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['2.0.2-1'] = { + { + arch = "rockspec" + } + }, + ['2.0.3-1'] = { + { + arch = "rockspec" + } + }, + ['2.0.4-1'] = { + { + arch = "rockspec" + } + }, + ['2.1.0-0'] = { + { + arch = "rockspec" + } + }, + ['2.1.1-0'] = { + { + arch = "rockspec" + } + }, + ['3.0-0'] = { + { + arch = "rockspec" + } + }, + ['3.1-0'] = { + { + arch = "rockspec" + } + }, + ['3.2-0'] = { + { + arch = "rockspec" + } + }, + ['3.3-0'] = { + { + arch = "rockspec" + } + }, + ['3.3.1-0'] = { + { + arch = "rockspec" + } + }, + ['3.4-0'] = { + { + arch = "rockspec" + } + }, + ['3.5-0'] = { + { + arch = "rockspec" + } + }, + ['3.5.1-0'] = { + { + arch = "rockspec" + } + }, + ['3.5.2-0'] = { + { + arch = "rockspec" + } + }, + ['4.0-0'] = { + { + arch = "rockspec" + } + }, + ['4.0.1-0'] = { + { + arch = "rockspec" + } + }, + ['4.1-0'] = { + { + arch = "rockspec" + } + }, + ['4.1.1-0'] = { + { + arch = "rockspec" + } + }, + ['4.1.2-0'] = { + { + arch = "rockspec" + } + } + }, + luaproc = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luaprofiler = { + ['2.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + }, { + arch = "win32-x86" + } + }, + ['2.0.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luaprompt = { + ['0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luaproxy = { + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.4-1'] = { + { + arch = "rockspec" + } + } + }, + luapsql = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luaqub = { + ['1.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + luarabbit = { + ['0.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luaredis = { + ['2.0.5-0'] = { + { + arch = "rockspec" + } + }, + ['2.0.5-1'] = { + { + arch = "rockspec" + } + }, + ['2.0.5-2'] = { + { + arch = "rockspec" + } + }, + ['2.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + luarepl = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.10-1'] = { + { + arch = "rockspec" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5-1'] = { + { + arch = "rockspec" + } + }, + ['0.6-1'] = { + { + arch = "rockspec" + } + }, + ['0.6-2'] = { + { + arch = "rockspec" + } + }, + ['0.7-1'] = { + { + arch = "rockspec" + } + }, + ['0.8-1'] = { + { + arch = "rockspec" + } + }, + ['0.9-1'] = { + { + arch = "rockspec" + } + } + }, + luarequest = { + ['0.1-1'] = { + { + arch = "rockspec" + } + } + }, + luarestructure = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luarestyredis = { + ['0.20-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luark = { + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + luarocks = { + ['2.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.4.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.4.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.4.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.10.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.11.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.11.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.7.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.8.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.9.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.9.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['luarocks-build-builtin-with-command'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['luarocks-build-cpp'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['luarocks-build-cyan'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['luarocks-build-extended'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + } + } + }, + ['luarocks-build-fennel'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['luarocks-build-lr-hooks'] = { + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['luarocks-build-lrocket'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['luarocks-build-lrocket-next'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['luarocks-build-rust'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['luarocks-build-rust-binary'] = { + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['luarocks-build-rust-mlua'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['luarocks-build-treesitter-parser'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['luarocks-build-xmake'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-10'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-11'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-12'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-13'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-14'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-15'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-16'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-17'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-18'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-19'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-20'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-21'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-22'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-23'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-24'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-25'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-26'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-27'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-28'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-7'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-8'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-9'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['luarocks-fetch-gitrec'] = { + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['luarocks-tag-release'] = { + ['5.10.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.11.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.11.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.11.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.12.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.13.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.13.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.14.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.14.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.2.39-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.2.40-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.2.41-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.2.42-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.2.43-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.2.44-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.2.45-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.2.46-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.2.47-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.2.48-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.2.49-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.2.50-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.2.51-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.2.52-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.3.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.3.11-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.3.12-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.3.13-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.3.14-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.3.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.3.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.3.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.3.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.3.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.3.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.3.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.7.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.8.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.9.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['7.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['7.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['7.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luarocks_helloworld = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luarray = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luars232 = { + ['1.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.3-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luarunner = { + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luascope = { + ['0.01-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luasec = { + ['0.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-2'] = { + { + arch = "rockspec" + } + }, + ['0.3.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.3-2'] = { + { + arch = "rockspec" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + }, { + arch = "win32-x86" + } + }, + ['0.4-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['luasec-fixed'] = { + ['0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luaselenium = { + ['1.0-0'] = { + { + arch = "rockspec" + } + } + }, + luaseq = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luaserial = { + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + } + } + }, + luaserialization = { + ['1.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + } + } + }, + luashell = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luasnip = { + ['2.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luasnmp = { + ['1.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + luasoap = { + ['2.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + }, + ['3.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['4.0.2-1'] = { + { + arch = "rockspec" + } + } + }, + luasock99 = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luasocket = { + ['2.0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + }, { + arch = "win32-x86" + } + }, + ['2.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + }, { + arch = "win32-x86" + } + }, + ['2.0.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.2-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + }, { + arch = "win32-x86" + } + }, + ['2.0.2-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.2-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.2-6'] = { + { + arch = "rockspec" + } + }, + ['3.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0rc1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0rc1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['luasocket-lanes'] = { + ['3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['luasocket-unix'] = { + ['2.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luasodium = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.11-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luasofia = { + ['0.1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luasolidstate = { + ['1.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + }, + ['1.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['luasql-exasol'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['luasql-firebird'] = { + ['2.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.5.0-1'] = { + { + arch = "rockspec" + } + }, + ['2.6.0-1'] = { + { + arch = "rockspec" + } + }, + ['2.6.0-2'] = { + { + arch = "rockspec" + } + }, + ['2.6.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['luasql-mysql'] = { + ['2.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3.5-1'] = { + { + arch = "rockspec" + } + }, + ['2.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.5.0-1'] = { + { + arch = "rockspec" + } + }, + ['2.6.0-1'] = { + { + arch = "rockspec" + } + }, + ['2.6.0-2'] = { + { + arch = "rockspec" + } + }, + ['2.6.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['luasql-oci8'] = { + ['2.3.0-1'] = { + { + arch = "rockspec" + } + }, + ['2.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.5.0-1'] = { + { + arch = "rockspec" + } + }, + ['2.6.0-1'] = { + { + arch = "rockspec" + } + }, + ['2.6.0-2'] = { + { + arch = "rockspec" + } + }, + ['2.6.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['luasql-odbc'] = { + ['2.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.5.0-1'] = { + { + arch = "rockspec" + } + }, + ['2.6.0-1'] = { + { + arch = "rockspec" + } + }, + ['2.6.0-2'] = { + { + arch = "rockspec" + } + }, + ['2.6.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['luasql-postgres'] = { + ['2.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3.1-1'] = { + { + arch = "rockspec" + } + }, + ['2.3.2-1'] = { + { + arch = "rockspec" + } + }, + ['2.3.3-1'] = { + { + arch = "rockspec" + } + }, + ['2.3.4-1'] = { + { + arch = "rockspec" + } + }, + ['2.3.5-1'] = { + { + arch = "rockspec" + } + }, + ['2.3.5-2'] = { + { + arch = "rockspec" + } + }, + ['2.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.5.0-1'] = { + { + arch = "rockspec" + } + }, + ['2.6.0-1'] = { + { + arch = "rockspec" + } + }, + ['2.6.0-2'] = { + { + arch = "rockspec" + } + }, + ['2.6.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['luasql-sqlite'] = { + ['2.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.5.0-1'] = { + { + arch = "rockspec" + } + }, + ['2.6.0-1'] = { + { + arch = "rockspec" + } + }, + ['2.6.0-2'] = { + { + arch = "rockspec" + } + }, + ['2.6.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['luasql-sqlite3'] = { + ['2.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + }, { + arch = "win32-x86" + } + }, + ['2.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3.5-1'] = { + { + arch = "rockspec" + } + }, + ['2.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.5.0-1'] = { + { + arch = "rockspec" + } + }, + ['2.6.0-1'] = { + { + arch = "rockspec" + } + }, + ['2.6.0-2'] = { + { + arch = "rockspec" + } + }, + ['2.6.1-3'] = { + { + arch = "rockspec" + } + } + }, + luasrcdiet = { + ['0.2.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luassert = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.7.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7.10-0'] = { + { + arch = "rockspec" + } + }, + ['1.7.11-0'] = { + { + arch = "rockspec" + } + }, + ['1.7.2-0'] = { + { + arch = "rockspec" + } + }, + ['1.7.3-0'] = { + { + arch = "rockspec" + } + }, + ['1.7.4-0'] = { + { + arch = "rockspec" + } + }, + ['1.7.5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7.6-0'] = { + { + arch = "rockspec" + } + }, + ['1.7.7-0'] = { + { + arch = "rockspec" + } + }, + ['1.7.8-0'] = { + { + arch = "rockspec" + } + }, + ['1.7.9-0'] = { + { + arch = "rockspec" + } + }, + ['1.8.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luastatic = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.11-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.12-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.6-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luastatsd = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luastepper = { + ['1.16.06.17-1'] = { + { + arch = "rockspec" + } + } + }, + luastrava = { + ['0.1.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + } + } + }, + luastream = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['@version@-1'] = { + { + arch = "rockspec" + } + } + }, + luastruct = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luasvc = { + ['0.9-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luasvn = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.6-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luasyslog = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luasystem = { + ['0.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luatabledump = { + ['1.0-0'] = { + { + arch = "rockspec" + } + } + }, + luatables = { + ['0.1.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luatbot = { + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.6-1'] = { + { + arch = "rockspec" + } + } + }, + luaterminal = { + ['1.16.06.16-1'] = { + { + arch = "rockspec" + } + }, + ['1.16.06.16-2'] = { + { + arch = "rockspec" + } + }, + ['1.16.06.16-3'] = { + { + arch = "rockspec" + } + }, + ['1.16.06.16-4'] = { + { + arch = "rockspec" + } + } + }, + luaterminalremote = { + ['1.14.09.10-1'] = { + { + arch = "rockspec" + } + } + }, + luatest = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luatext = { + ['0.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luatexts = { + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luatools = { + ['1.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luatoteal = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luatraverse = { + ['2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luatweetnacl = { + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5-1'] = { + { + arch = "rockspec" + } + } + }, + luatwit = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luatypechecks = { + ['1.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.3.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.3.2-1'] = { + { + arch = "rockspec" + } + }, + ['1.3.3-1'] = { + { + arch = "rockspec" + } + }, + ['1.3.4-1'] = { + { + arch = "rockspec" + } + } + }, + luatz = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + }, + ['0.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luaucdn = { + ['0.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.6-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luaunbound = { + ['0-1'] = { + { + arch = "rockspec" + } + }, + ['0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luaunit = { + ['2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.4-1'] = { + { + arch = "rockspec" + } + } + }, + luaunix = { + ['1.2.7-0'] = { + { + arch = "rockspec" + } + } + }, + luautf8 = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.5-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luautils = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luavel = { + ['0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0-3'] = { + { + arch = "rockspec" + } + } + }, + luavenster = { + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.0-1'] = { + { + arch = "rockspec" + } + } + }, + luawalker = { + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + luawav = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luawebsocket = { + ['1.0.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + } + } + }, + luawinapi = { + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + }, { + arch = "win32-x86" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.0-1'] = { + { + arch = "rockspec" + } + } + }, + luawt = { + ['0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luaxml = { + ['101012-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['101012-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['130610-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luaxmlgenerator = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luaxmlrpc = { + ['1.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luaxpath = { + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luaxpl = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luaxxhash = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luayaml = { + ['0.5.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luayue = { + ['0.14.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.14.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.14.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.14.0.bin-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.14.0.bin-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.14.0.bin-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.14.0.bin-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.14.0.bin-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.14.0.bin-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.14.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.14.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.14.1.bin-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.14.1.bin-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.14.1.bin-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.14.1.bin-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luazen = { + ['0.12-1'] = { + { + arch = "rockspec" + } + }, + ['0.15-1'] = { + { + arch = "rockspec" + } + }, + ['0.16-1'] = { + { + arch = "rockspec" + } + }, + ['0.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8-1'] = { + { + arch = "rockspec" + } + }, + ['0.8-2'] = { + { + arch = "rockspec" + } + }, + ['0.9-1'] = { + { + arch = "rockspec" + } + } + }, + luazip = { + ['1.2.4-1'] = { + { + arch = "rockspec" + } + }, + ['1.2.4-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.4-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.4-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lub = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lubs = { + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.3-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luchia = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + } + } + }, + ludent = { + ['v0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lugate = { + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luggage = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luix = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lulpeg = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luma = { + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lumber = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.0-3'] = { + { + arch = "rockspec" + } + } + }, + lume = { + ['2.3.0-0'] = { + { + arch = "rockspec" + } + } + }, + lumen = { + ['2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lummander = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.0-2'] = { + { + arch = "rockspec" + } + } + }, + luna = { + ['0.0.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.0.2-0'] = { + { + arch = "rockspec" + } + }, + ['0.1.0-0'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-0'] = { + { + arch = "rockspec" + } + } + }, + lunadoc = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lunajson = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lunamark = { + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.6.0-1'] = { + { + arch = "rockspec" + } + } + }, + lunaquery = { + ['0.9-1'] = { + { + arch = "rockspec" + } + }, + ['0.9-2'] = { + { + arch = "rockspec" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + lunar = { + ['0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lunary = { + ['20101009-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + } + }, + ['20121108-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20121212-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20181002-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lunary-core'] = { + ['20101009-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + } + }, + ['20121108-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20121212-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20181002-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lunary-optim'] = { + ['20101009-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20121108-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20121212-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20181002-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lunatest = { + ['0.9.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luncheon = { + ['0.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.0-10'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.0-11'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.0-12'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.0-13'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.0-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.0-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.0-7'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.0-8'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.0-9'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lundler = { + ['dev-26'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lunescript = { + ['main-1'] = { + { + arch = "rockspec" + } + } + }, + lunescript51 = { + ['main-1'] = { + { + arch = "rockspec" + } + } + }, + lunit = { + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + }, + ['0.5-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lunitx = { + ['0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8-0'] = { + { + arch = "rockspec" + } + }, + ['0.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lunix = { + ['20150923-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20161026-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20161026-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20170511-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20170920-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20170920-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20220331-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luno = { + ['20121129-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20130108-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20130304-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20141204-1'] = { + { + arch = "rockspec" + } + }, + ['20170303-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lupe = { + ['latest-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luq = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + } + } + }, + lure = { + ['0.1-1'] = { + { + arch = "rockspec" + } + } + }, + luring = { + ['0.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lurror = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lusc = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lusc_luv = { + ['1.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luse = { + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lust = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lustache = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.1-0'] = { + { + arch = "rockspec" + } + } + }, + ['lustache-lambdas'] = { + ['0.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lustaglue = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lustre = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lusty = { + ['0.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + } + }, + ['0.1-3'] = { + { + arch = "rockspec" + } + }, + ['0.1-4'] = { + { + arch = "rockspec" + } + }, + ['0.2-0'] = { + { + arch = "rockspec" + } + }, + ['0.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-0'] = { + { + arch = "rockspec" + } + }, + ['0.5-0'] = { + { + arch = "rockspec" + } + }, + ['0.7-0'] = { + { + arch = "rockspec" + } + }, + ['0.7-1'] = { + { + arch = "rockspec" + } + }, + ['0.7-2'] = { + { + arch = "rockspec" + } + }, + ['0.7-3'] = { + { + arch = "rockspec" + } + }, + ['0.7-4'] = { + { + arch = "rockspec" + } + }, + ['0.7-6'] = { + { + arch = "rockspec" + } + }, + ['0.7-7'] = { + { + arch = "rockspec" + } + }, + ['0.7-8'] = { + { + arch = "rockspec" + } + }, + ['0.8-0'] = { + { + arch = "rockspec" + } + }, + ['0.8-1'] = { + { + arch = "rockspec" + } + } + }, + ['lusty-config'] = { + ['0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-0'] = { + { + arch = "rockspec" + } + } + }, + ['lusty-error-status'] = { + ['0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + } + } + }, + ['lusty-form'] = { + ['0.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + } + }, + ['0.1-3'] = { + { + arch = "rockspec" + } + } + }, + ['lusty-html'] = { + ['0.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lusty-json'] = { + ['0.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.3-2'] = { + { + arch = "rockspec" + } + }, + ['0.3-3'] = { + { + arch = "rockspec" + } + }, + ['0.4-0'] = { + { + arch = "rockspec" + } + }, + ['0.5-0'] = { + { + arch = "rockspec" + } + } + }, + ['lusty-log'] = { + ['0.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lusty-log-console'] = { + ['0.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lusty-mustache'] = { + ['0.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lusty-nginx'] = { + ['0.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.4-0'] = { + { + arch = "rockspec" + } + } + }, + ['lusty-request-file'] = { + ['0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lusty-request-pattern'] = { + ['0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-0'] = { + { + arch = "rockspec" + } + } + }, + ['lusty-rewrite-param'] = { + ['0.2-0'] = { + { + arch = "rockspec" + } + }, + ['0.3-0'] = { + { + arch = "rockspec" + } + }, + ['0.4-0'] = { + { + arch = "rockspec" + } + } + }, + ['lusty-statsd'] = { + ['0.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lusty-store'] = { + ['0.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-0'] = { + { + arch = "rockspec" + } + }, + ['0.4-0'] = { + { + arch = "rockspec" + } + }, + ['0.5-0'] = { + { + arch = "rockspec" + } + }, + ['0.6-0'] = { + { + arch = "rockspec" + } + }, + ['0.7-0'] = { + { + arch = "rockspec" + } + } + }, + ['lusty-store-mongo'] = { + ['0.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.10-0'] = { + { + arch = "rockspec" + } + }, + ['0.11-0'] = { + { + arch = "rockspec" + } + }, + ['0.11-1'] = { + { + arch = "rockspec" + } + }, + ['0.11-2'] = { + { + arch = "rockspec" + } + }, + ['0.12-0'] = { + { + arch = "rockspec" + } + }, + ['0.12-1'] = { + { + arch = "rockspec" + } + }, + ['0.12-2'] = { + { + arch = "rockspec" + } + }, + ['0.13-0'] = { + { + arch = "rockspec" + } + }, + ['0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-0'] = { + { + arch = "rockspec" + } + }, + ['0.4-0'] = { + { + arch = "rockspec" + } + }, + ['0.5-0'] = { + { + arch = "rockspec" + } + }, + ['0.6-0'] = { + { + arch = "rockspec" + } + }, + ['0.6-1'] = { + { + arch = "rockspec" + } + }, + ['0.7-0'] = { + { + arch = "rockspec" + } + }, + ['0.7-1'] = { + { + arch = "rockspec" + } + }, + ['0.8-0'] = { + { + arch = "rockspec" + } + }, + ['0.9-0'] = { + { + arch = "rockspec" + } + }, + ['0.9-1'] = { + { + arch = "rockspec" + } + } + }, + ['lusty-store-mysql'] = { + ['0.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.3-2'] = { + { + arch = "rockspec" + } + }, + ['0.4-0'] = { + { + arch = "rockspec" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.4-2'] = { + { + arch = "rockspec" + } + }, + ['0.4-3'] = { + { + arch = "rockspec" + } + }, + ['0.4-4'] = { + { + arch = "rockspec" + } + }, + ['0.5-0'] = { + { + arch = "rockspec" + } + } + }, + ['lusty-template'] = { + ['0.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lut = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lutf8proc = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lutrace = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luuid = { + ['20070925-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20090429-1'] = { + { + arch = "rockspec" + } + }, + ['20100303-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20101118-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20120501-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20120501-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20120509-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20120509-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luv = { + ['1.22.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.22.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.25.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.26.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.27.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.28.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.28.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.29.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.29.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.29.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.29.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.30.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.30.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.30.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.32.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.34.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.34.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.34.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.34.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.36.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.2-1'] = { + { + arch = "rockspec" + } + }, + ['1.4.2-2'] = { + { + arch = "rockspec" + } + }, + ['1.40.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.41.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.41.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.42.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.42.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.43.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.44.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.44.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.45.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.47.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.48.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.48.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.6.1-2'] = { + { + arch = "rockspec" + } + }, + ['1.7.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7.4-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7.4-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7.4-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7.4-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9.0-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['v1.48.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['luv-updated'] = { + ['1.9.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lux = { + ['0.2.1-1'] = { + { + arch = "rockspec" + } + } + }, + luxure = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + luxure_static = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lxsh = { + ['0.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.6-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lyaml = { + ['1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.1.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.1.1-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.2.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.2.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.2.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.2.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lyretemplates = { + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['lz.n'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lzfse = { + ['1.0.0-1'] = { + { + arch = "rockspec" + } + } + }, + lzlib = { + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.1.53-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.1.53-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.1.53-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.1.53-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.work3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lzmq = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lzmq-auth'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lzmq-ffi'] = { + ['0.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lzmq-pool'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lzmq-timer'] = { + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lzmq-zmq'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['lzq-kong-oidc'] = { + ['1.2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + lzt = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + }, + ['0.1.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.1.2-0'] = { + { + arch = "rockspec" + } + }, + ['0.1.3-0'] = { + { + arch = "rockspec" + } + }, + ['0.1.4-0'] = { + { + arch = "rockspec" + } + } + }, + lzw = { + ['1.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['m3u-parser'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + mach = { + ['1.0-1'] = { + { + arch = "rockspec" + } + }, + ['2.0-0'] = { + { + arch = "rockspec" + } + }, + ['3.0-0'] = { + { + arch = "rockspec" + } + }, + ['3.0-1'] = { + { + arch = "rockspec" + } + }, + ['4.0-0'] = { + { + arch = "rockspec" + } + }, + ['4.1-0'] = { + { + arch = "rockspec" + } + }, + ['4.2-0'] = { + { + arch = "rockspec" + } + }, + ['4.3-0'] = { + { + arch = "rockspec" + } + }, + ['4.4-0'] = { + { + arch = "rockspec" + } + }, + ['4.4-1'] = { + { + arch = "rockspec" + } + }, + ['4.5-0'] = { + { + arch = "rockspec" + } + }, + ['4.6-0'] = { + { + arch = "rockspec" + } + }, + ['4.7-0'] = { + { + arch = "rockspec" + } + }, + ['4.8-0'] = { + { + arch = "rockspec" + } + }, + ['5.0-0'] = { + { + arch = "rockspec" + } + }, + ['5.1-0'] = { + { + arch = "rockspec" + } + } + }, + magic = { + ['5.25-1'] = { + { + arch = "rockspec" + } + } + }, + ['magic-apigw'] = { + ['magic-0'] = { + { + arch = "rockspec" + } + }, + ['master-0'] = { + { + arch = "rockspec" + } + } + }, + magick = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['magick-least'] = { + ['1.5.0-2'] = { + { + arch = "rockspec" + } + } + }, + mailgun = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + malvado = { + ['1.0.0-0'] = { + { + arch = "rockspec" + } + } + }, + many2one = { + ['1.14.09.19-1'] = { + { + arch = "rockspec" + } + }, + ['1.14.11.12-1'] = { + { + arch = "rockspec" + } + }, + ['1.14.11.12-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.14.11.12-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.14.11.12-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.17.3.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.20.08.23-1'] = { + { + arch = "rockspec" + } + }, + ['1.21.08.13-1'] = { + { + arch = "rockspec" + } + } + }, + map = { + ['1.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['mapx.nvim'] = { + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + marcusluatest = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + mare = { + ['0.0.1-1'] = { + { + arch = "rockspec" + } + } + }, + markdown = { + ['0.13-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + }, + ['0.26-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.27-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.30-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.31-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.32-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.32-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.33-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['markdown.sile'] = { + ['1.4.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.4.2-1'] = { + { + arch = "rockspec" + } + }, + ['1.5.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.5.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.5.2-1'] = { + { + arch = "rockspec" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + } + } + }, + markov = { + ['v1.0-1'] = { + { + arch = "rockspec" + } + }, + ['v1.1-1'] = { + { + arch = "rockspec" + } + } + }, + ['markov-text'] = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['mason-lspconfig.nvim'] = { + ['1.26.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.27.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.28.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.29.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['mason-nvim-dap.nvim'] = { + ['2.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['mason.nvim'] = { + ['1.10.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + matcher_combinators = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + matchext = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['math-evol'] = { + ['1.12-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + } + }, + ['1.12-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.13-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['math-rungekutta'] = { + ['1.07-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.07-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.08-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['math-walshtransform'] = { + ['1.17-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.17-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.18-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + mathparser = { + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + md = { + ['0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + md2html = { + ['0.0.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.0.1-1'] = { + { + arch = "rockspec" + } + } + }, + md5 = { + ['1.0.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + }, { + arch = "win32-x86" + } + }, + ['1.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + }, { + arch = "win32-x86" + } + }, + ['1.1.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + } + } + }, + mecab = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-7'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + media_player = { + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + mediator_lua = { + ['1.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.1-2'] = { + { + arch = "rockspec" + } + }, + ['1.1-3'] = { + { + arch = "rockspec" + } + }, + ['1.1.1-0'] = { + { + arch = "rockspec" + } + }, + ['1.1.2-0'] = { + { + arch = "rockspec" + } + } + }, + mediatypes = { + ['2.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['2.0.1-1'] = { + { + arch = "rockspec" + } + } + }, + megaqueue = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['meisocafe.hammerspoon.dkb'] = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + melipayamak = { + ['1.0.0-1'] = { + { + arch = "rockspec" + } + } + }, + memlimit = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + memo = { + ['1.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + memoize = { + ['2.0.0-0'] = { + { + arch = "rockspec" + } + } + }, + memory = { + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + memreader = { + ['1.0.0-1'] = { + { + arch = "rockspec" + } + } + }, + mendudu = { + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + } + } + }, + metaclass = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + metalua = { + ['0.7.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['metalua-compiler'] = { + ['0.7.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['metalua-parser'] = { + ['0.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.3-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + metamodule = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.1-2'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + } + } + }, + metaty = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-10'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-11'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-12'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-13'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-7'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-8'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-9'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + mexbt = { + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + mfr = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + microlight = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + microscope = { + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + microsoftsapi = { + ['1.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + } + } + }, + middleclass = { + ['3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.1-0'] = { + { + arch = "rockspec" + } + }, + ['3.2-0'] = { + { + arch = "rockspec" + } + }, + ['4.0-0'] = { + { + arch = "rockspec" + } + }, + ['4.1-0'] = { + { + arch = "rockspec" + } + }, + ['4.1.1-0'] = { + { + arch = "rockspec" + } + } + }, + ['middleclass-mixin-singleton'] = { + ['0.01-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + middleman = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + middleware = { + ['0.0.10-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + } + }, + ['1.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + } + }, + ['1.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + } + }, + ['1.0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + } + }, + ['1.0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + } + }, + ['1.0.7-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + } + }, + ['1.0.8-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + } + } + }, + midi = { + ['4.1-0'] = { + { + arch = "rockspec" + }, { + arch = "all" + } + }, + ['4.2-0'] = { + { + arch = "rockspec" + }, { + arch = "all" + } + }, + ['4.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.4-0'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + }, + ['5.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.6-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.7-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.8-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.9-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + midialsa = { + ['1.00-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.02-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.03-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.04-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.06-0'] = { + { + arch = "rockspec" + } + }, + ['1.09-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.11-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.12-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.14-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.15-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.16-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.17-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.18-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.19-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.20-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.21-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.22-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.23-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.24-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.25-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + millheat = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + milua = { + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.2-2'] = { + { + arch = "rockspec" + } + } + }, + mimetypes = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + minctest = { + ['0.1.1-1'] = { + { + arch = "rockspec" + } + } + }, + minheap = { + ['0.1.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['mini.ai'] = { + ['0.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['mini.align'] = { + ['0.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['mini.animate'] = { + ['0.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['mini.base16'] = { + ['0.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['mini.basics'] = { + ['0.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['mini.bracketed'] = { + ['0.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['mini.bufremove'] = { + ['0.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['mini.clue'] = { + ['0.12.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.13.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['mini.colors'] = { + ['0.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['mini.comment'] = { + ['0.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['mini.completion'] = { + ['0.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['mini.cursorword'] = { + ['0.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['mini.deps'] = { + ['0.12.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.13.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['mini.diff'] = { + ['0.13.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['mini.doc'] = { + ['0.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['mini.extra'] = { + ['0.12.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.13.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['mini.files'] = { + ['0.12.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.13.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['mini.fuzzy'] = { + ['0.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['mini.hipatterns'] = { + ['0.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['mini.hues'] = { + ['0.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['mini.indentscope'] = { + ['0.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['mini.jump'] = { + ['0.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['mini.jump2d'] = { + ['0.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['mini.map'] = { + ['0.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['mini.misc'] = { + ['0.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['mini.move'] = { + ['0.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['mini.notify'] = { + ['0.12.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.13.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['mini.nvim'] = { + ['0.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['mini.operators'] = { + ['0.12.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.13.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['mini.pairs'] = { + ['0.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['mini.pick'] = { + ['0.12.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.13.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['mini.sessions'] = { + ['0.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['mini.splitjoin'] = { + ['0.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['mini.starter'] = { + ['0.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['mini.statusline'] = { + ['0.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['mini.surround'] = { + ['0.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['mini.tabline'] = { + ['0.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['mini.test'] = { + ['0.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['mini.trailspace'] = { + ['0.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['mini.visits'] = { + ['0.12.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.13.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + miniblooms = { + ['0.5-1'] = { + { + arch = "rockspec" + } + } + }, + minicurses = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + miniflac = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + minifs = { + ['1.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + mirrorfs = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['missinglink-sdk'] = { + ['0.11-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.12-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.17-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.18-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.19-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.20-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.21-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.22-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.23-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.24-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.25-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.26-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.27-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.28-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.29-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.31-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.32-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.33-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.34-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.35-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.36-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.37-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.38-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.39-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.40-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.41-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.42-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.43-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.44-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.45-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.51-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.52-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.53-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.54-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + mixlua = { + ['0.2.7-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.7-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['mjolnir.7bits.mjomatic'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + } + } + }, + ['mjolnir._asm'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + }, { + arch = "src" + } + } + }, + ['mjolnir._asm.applistener'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + }, { + arch = "src" + } + } + }, + ['mjolnir._asm.compat_51'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + } + }, + ['0.2-2'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + }, { + arch = "src" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + }, { + arch = "src" + } + } + }, + ['mjolnir._asm.data'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + }, { + arch = "src" + } + } + }, + ['mjolnir._asm.data.base64'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + }, { + arch = "src" + } + } + }, + ['mjolnir._asm.data.json'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + }, { + arch = "src" + } + } + }, + ['mjolnir._asm.data.pasteboard'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + }, { + arch = "src" + } + } + }, + ['mjolnir._asm.eventtap'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + }, { + arch = "src" + } + } + }, + ['mjolnir._asm.eventtap.event'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + }, { + arch = "src" + } + } + }, + ['mjolnir._asm.hydra'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + }, { + arch = "src" + } + } + }, + ['mjolnir._asm.hydra.applescript'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + }, { + arch = "src" + } + } + }, + ['mjolnir._asm.hydra.dockicon'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + }, { + arch = "src" + } + } + }, + ['mjolnir._asm.hydra.undocumented'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + }, { + arch = "src" + } + } + }, + ['mjolnir._asm.ipc'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + }, { + arch = "src" + } + } + }, + ['mjolnir._asm.ipc.cli'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['mjolnir._asm.modal_hotkey'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + } + }, + ['mjolnir._asm.modules'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + } + }, + ['0.3-2'] = { + { + arch = "rockspec" + }, { + arch = "all" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + } + }, + ['mjolnir._asm.notify'] = { + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + }, { + arch = "src" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + }, { + arch = "src" + } + } + }, + ['mjolnir._asm.pathwatcher'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + }, { + arch = "src" + } + } + }, + ['mjolnir._asm.settings'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + }, { + arch = "src" + } + } + }, + ['mjolnir._asm.sys.audiodevice'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + }, { + arch = "src" + } + } + }, + ['mjolnir._asm.sys.battery'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + }, { + arch = "src" + } + } + }, + ['mjolnir._asm.sys.brightness'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + }, { + arch = "src" + } + } + }, + ['mjolnir._asm.sys.mouse'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + }, { + arch = "src" + } + } + }, + ['mjolnir._asm.timer'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + }, { + arch = "src" + } + } + }, + ['mjolnir._asm.ui.notification'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + }, { + arch = "src" + } + } + }, + ['mjolnir._asm.ui.sound'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + }, { + arch = "src" + } + } + }, + ['mjolnir._asm.undocumented.bluetooth'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + }, { + arch = "src" + } + } + }, + ['mjolnir._asm.undocumented.cgsdebug'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + }, { + arch = "src" + } + } + }, + ['mjolnir._asm.undocumented.coredock'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + }, { + arch = "src" + } + } + }, + ['mjolnir._asm.utf8_53'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + }, { + arch = "src" + } + } + }, + ['mjolnir._asm.watcher.battery'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + }, { + arch = "src" + } + } + }, + ['mjolnir._asm.watcher.screen'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + }, { + arch = "src" + } + } + }, + ['mjolnir.alert'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + } + } + }, + ['mjolnir.application'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + } + } + }, + ['mjolnir.bg.grid'] = { + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "all" + } + } + }, + ['mjolnir.chdiza.slateops'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + } + } + }, + ['mjolnir.cmsj.appfinder'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + } + } + }, + ['mjolnir.cmsj.caffeinate'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + } + } + }, + ['mjolnir.fnutils'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + } + } + }, + ['mjolnir.geometry'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + } + } + }, + ['mjolnir.grille'] = { + ['0.5-1'] = { + { + arch = "rockspec" + } + }, + ['0.5-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['mjolnir.hotkey'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + } + } + }, + ['mjolnir.jstevenson.cursor'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + } + } + }, + ['mjolnir.keycodes'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + } + } + }, + ['mjolnir.lb.itunes'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + } + } + }, + ['mjolnir.lb.spotify'] = { + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + } + } + }, + ['mjolnir.lx.lockscreen'] = { + ['0.1-1'] = { + { + arch = "rockspec" + } + } + }, + ['mjolnir.pvertenten.cycle'] = { + ['0.1-1'] = { + { + arch = "rockspec" + } + } + }, + ['mjolnir.screen'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + } + } + }, + ['mjolnir.sd.grid'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + } + } + }, + ['mjolnir.sk.transform'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + } + } + }, + ['mjolnir.th.hints'] = { + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-2'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86_64" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['mjolnir.tiling'] = { + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.5-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.6-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + } + } + }, + ['mjolnir.winter'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + mkdir = { + ['0.2.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.2-1'] = { + { + arch = "rockspec" + } + } + }, + mkdirp = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['mkdnflow.nvim'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + mkdtemp = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + mkstemp = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + } + }, + mlua = { + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + mm = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + mmapfile = { + ['1-1'] = { + { + arch = "rockspec" + } + }, + ['2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + mmdblua = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + }, + ['0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + } + }, + mnet = { + ['0.3.20210628-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.20210703-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.20220807-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.20230218-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.20230708-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + mo = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + mobdebug = { + ['0.48-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.49-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.50-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.51-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.55-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.63-1'] = { + { + arch = "rockspec" + } + }, + ['0.64-1'] = { + { + arch = "rockspec" + } + }, + ['0.70-1'] = { + { + arch = "rockspec" + } + }, + ['0.80-1'] = { + { + arch = "rockspec" + } + } + }, + mobile_detect = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + mocka = { + ['1.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.10-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.3-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.4-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.5-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.6-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.7-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.7-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.8-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.9-1'] = { + { + arch = "rockspec" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.3.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.3.2-1'] = { + { + arch = "rockspec" + } + }, + ['1.3.3-1'] = { + { + arch = "rockspec" + } + }, + ['1.3.4-1'] = { + { + arch = "rockspec" + } + } + }, + mockagne = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + mockuna = { + ['0.3-0'] = { + { + arch = "rockspec" + } + }, + ['0.4-0'] = { + { + arch = "rockspec" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.4-2'] = { + { + arch = "rockspec" + } + }, + ['0.5-0'] = { + { + arch = "rockspec" + } + }, + ['0.6-0'] = { + { + arch = "rockspec" + } + }, + ['0.6-1'] = { + { + arch = "rockspec" + } + } + }, + mod11 = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + mod_lib_ldap = { + ['35-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + mod_storage_ldap = { + ['7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + modern = { + ['0.1'] = { + { + arch = "rockspec" + } + }, + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + } + } + }, + modest = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + modjail = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + modsec = { + ['0.0.1'] = { + { + arch = "rockspec" + } + }, + ['0.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.1-3'] = { + { + arch = "rockspec" + } + }, + ['0.0.1-4'] = { + { + arch = "rockspec" + } + } + }, + molde = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + molly = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + mongo = { + ['1.2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.3-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.3-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.3-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + mongorover = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['moon-cache'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['moon-i18n'] = { + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['moon-redis'] = { + ['0.1-1'] = { + { + arch = "rockspec" + } + } + }, + ['moon-watch'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + moon_test = { + ['1.0-0'] = { + { + arch = "rockspec" + } + } + }, + moonbox = { + ['0.1-1'] = { + { + arch = "rockspec" + } + } + }, + moonbreaker = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + moonbuild = { + ['1.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.3-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.3-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3.0-2'] = { + { + arch = "rockspec" + } + }, + ['2.4.0-1'] = { + { + arch = "rockspec" + } + }, + ['2.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.5.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.7.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.7.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + mooncake = { + ['0.0.3-20210613'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.3-20210619'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.20210627-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.20210829-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.20210922-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.20210925-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.20211114-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.20220116-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.20220501-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.20220703-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.20220801-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.20221006-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.20221112-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.20221204-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.20221204-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + mooncrafts = { + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + moonfltk = { + ['0.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + moongarden = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + moonglfw = { + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + moongrahams = { + ['0.0-1'] = { + { + arch = "rockspec" + } + } + }, + mooni = { + ['0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + moonjson = { + ['0.1.2-1'] = { + { + arch = "rockspec" + } + } + }, + moonpick = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + moonplus = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.16-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.19-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.21-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.22-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + moonrocks = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + moonscript = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.3-2'] = { + { + arch = "rockspec" + } + }, + ['0.2.3-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + moontastic = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + moonxml = { + ['1.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['3.0.0-3'] = { + { + arch = "rockspec" + } + }, + ['3.1.0-3'] = { + { + arch = "rockspec" + } + }, + ['3.2.0-4'] = { + { + arch = "rockspec" + } + }, + ['3.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + moor = { + ['latest-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['v1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['v1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['v1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['v1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['v1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['v3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['v4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['v4.0-7'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['v5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + morse = { + ['0.9.1-1'] = { + { + arch = "rockspec" + } + } + }, + moses = { + ['1.4.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.5.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.5.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.6.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.6.1-1'] = { + { + arch = "rockspec" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['2.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['move.nvim'] = { + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + mpack = { + ['1.0.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.0.1-0'] = { + { + arch = "rockspec" + } + }, + ['1.0.10-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.11-0'] = { + { + arch = "rockspec" + } + }, + ['1.0.12-0'] = { + { + arch = "rockspec" + } + }, + ['1.0.2-0'] = { + { + arch = "rockspec" + } + }, + ['1.0.3-0'] = { + { + arch = "rockspec" + } + }, + ['1.0.4-0'] = { + { + arch = "rockspec" + } + }, + ['1.0.6-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.7-0'] = { + { + arch = "rockspec" + } + }, + ['1.0.8-0'] = { + { + arch = "rockspec" + } + }, + ['1.0.9-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + mpd = { + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + } + } + }, + mpi = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['mpv-netrc'] = { + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['mq-biggerlib'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + mqttudp = { + ['0.4-1'] = { + { + arch = "rockspec" + } + } + }, + ['mrcp-utils'] = { + ['1.0-0'] = { + { + arch = "rockspec" + } + } + }, + mtint = { + ['0.3.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.4-1'] = { + { + arch = "rockspec" + } + } + }, + mtmsg = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.3-1'] = { + { + arch = "rockspec" + } + } + }, + mtstates = { + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.4-1'] = { + { + arch = "rockspec" + } + } + }, + muck = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + multi = { + ['1.8-2'] = { + { + arch = "rockspec" + } + }, + ['1.8-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['12.2-0'] = { + { + arch = "rockspec" + } + }, + ['12.2-1'] = { + { + arch = "rockspec" + } + }, + ['13.0-0'] = { + { + arch = "rockspec" + } + }, + ['13.1-0'] = { + { + arch = "rockspec" + } + }, + ['14.0-0'] = { + { + arch = "rockspec" + } + }, + ['14.1-0'] = { + { + arch = "rockspec" + } + }, + ['14.2-0'] = { + { + arch = "rockspec" + } + }, + ['14.3-0'] = { + { + arch = "rockspec" + } + }, + ['15.0-0'] = { + { + arch = "rockspec" + } + }, + ['15.1-0'] = { + { + arch = "rockspec" + } + }, + ['15.2-0'] = { + { + arch = "rockspec" + } + }, + ['15.2-1'] = { + { + arch = "rockspec" + } + }, + ['15.3-0'] = { + { + arch = "rockspec" + } + }, + ['15.3-1'] = { + { + arch = "rockspec" + } + }, + ['16.0-0'] = { + { + arch = "rockspec" + } + }, + ['16.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['multicursors.nvim'] = { + ['0.12.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + multikey = { + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + multimethod = { + ['0.0-1'] = { + { + arch = "rockspec" + } + } + }, + multipart = { + ['0.1-2'] = { + { + arch = "rockspec" + } + }, + ['0.1-3'] = { + { + arch = "rockspec" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.3-2'] = { + { + arch = "rockspec" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.5-1'] = { + { + arch = "rockspec" + } + }, + ['0.5.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['multipart-formdata-lib'] = { + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['multipart-post'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + multirequests = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + multistreamer = { + ['11.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['11.0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['11.0.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['11.0.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['11.0.5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['11.0.6-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['11.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['11.1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['11.2.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['11.2.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['11.3.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['11.3.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['11.5.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['11.5.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['11.6.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['12.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['12.1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['12.2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['12.2.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + multitone = { + ['1.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + } + } + }, + munin = { + ['0.1.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.2-1'] = { + { + arch = "rockspec" + } + } + }, + murmurhash3 = { + ['1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + mwcrng = { + ['1.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['my-awesome-plugin.nvim'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + my_library = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + myauth = { + ['1.0.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.0.1-0'] = { + { + arch = "rockspec" + } + }, + ['1.1.1-0'] = { + { + arch = "rockspec" + } + }, + ['1.2.1-0'] = { + { + arch = "rockspec" + } + }, + ['1.2.2-0'] = { + { + arch = "rockspec" + } + }, + ['1.2.4-0'] = { + { + arch = "rockspec" + } + }, + ['1.2.5-0'] = { + { + arch = "rockspec" + } + }, + ['1.2.6-0'] = { + { + arch = "rockspec" + } + }, + ['1.2.6-1'] = { + { + arch = "rockspec" + } + }, + ['1.2.7-0'] = { + { + arch = "rockspec" + } + }, + ['1.2.8-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + mygateway = { + ['0.5-0'] = { + { + arch = "rockspec" + } + } + }, + mymodule = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + } + } + }, + myplugin = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + mysin = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + nacl = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['nacl-cli'] = { + ['0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + nana = { + ['0.0-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.5-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.5-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + nancy = { + ['549-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + nanoid = { + ['0.1-1'] = { + { + arch = "rockspec" + } + } + }, + nanosleep = { + ['0.2.0-1'] = { + { + arch = "rockspec" + } + } + }, + nanostores_lua = { + ['0.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.6-1'] = { + { + arch = "rockspec" + } + } + }, + nanovg = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.3-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.3-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + native = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + nats = { + ['0.0.2-1'] = { + { + arch = "rockspec" + } + } + }, + ['navigator.lua'] = { + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['navigator.nvim'] = { + ['0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ncache = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + nclassic = { + ['1.1-0'] = { + { + arch = "rockspec" + } + }, + ['1.2.1-2'] = { + { + arch = "rockspec" + } + } + }, + ['near-kong-kafka-log'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-10'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-11'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-7'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-8'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-9'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + nef = { + ['0.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['nekos-lua-cqueues'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['neo-tree.nvim'] = { + ['3.14-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.26-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['neoconf.nvim'] = { + ['1.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['neodev.nvim'] = { + ['2.5.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + neogen = { + ['2.17.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.17.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + neogit = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + neorg = { + ['0.0.2848-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['7.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['8.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['8.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['8.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['8.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['8.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['8.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['8.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['8.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['8.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['8.7.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['8.7.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['neorg-telescope'] = { + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['neoscroll.nvim'] = { + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + neotest = { + ['4.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.2.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.2.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.3.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['neotest-haskell'] = { + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + nested = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['nested-cli'] = { + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + net = { + ['0.22.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.22.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.23.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.24.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.25.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.28.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.31.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.33.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.34.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.34.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.34.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.36.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.37.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.38.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['net-http'] = { + ['0.1.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.5-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.6-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.7-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.6.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.7.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['net-url'] = { + ['0.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + netatmo = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + netcheck = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + netfoxpack = { + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + netlink = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + netstring = { + ['1.0.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.0.1-0'] = { + { + arch = "rockspec" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.2-0'] = { + { + arch = "rockspec" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.3-0'] = { + { + arch = "rockspec" + } + }, + ['1.0.4-0'] = { + { + arch = "rockspec" + } + }, + ['1.0.5-0'] = { + { + arch = "rockspec" + } + }, + ['1.0.6-0'] = { + { + arch = "rockspec" + } + } + }, + newstate = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + } + } + }, + nextfile = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['nginx-lua-exporter'] = { + ['0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-7'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-8'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-9'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['nginx-lua-frequency'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['nginx-lua-oauth2'] = { + ['1.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['nginx-lua-prometheus'] = { + ['0.1-2'] = { + { + arch = "rockspec" + } + }, + ['0.1-20170303'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-20170610'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.20171117-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.20171117-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.20171117-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.20181120-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.20181120-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.20181120-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.20200420-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.20200420-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.20200523-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.20201118-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.20201218-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.20210206-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.20220127-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.20220527-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.20221218-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.20230607-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.20240525-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['nginx-lua-prometheus-api7'] = { + ['0.20240201-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['nginx-lua-waf'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['nginx-metrix'] = { + ['1.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['nginx-resumable-upload'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ngx_lua_datadog = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ngxjsonform = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ngxlogex = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['nightfox.nvim'] = { + ['3.9.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + nixio = { + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + nlua = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + nn = { + ['1.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['v1.0.0-1'] = { + { + arch = "rockspec" + } + } + }, + nnlr = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + nnsparse = { + ['1.1-0'] = { + { + arch = "rockspec" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['no-neck-pain.nvim'] = { + ['1.10.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.10.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.10.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.11.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.12.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.12.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.12.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.12.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.13.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.14.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + nocurses = { + ['0.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + } + } + }, + ['nodejs-path'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['nodemcu-logging'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + nodemculuamocks = { + ['1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['noice.nvim'] = { + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['nokia-fork-lua-cassandra'] = { + ['1.3.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['nokia-fork-lua-resty-dns-client'] = { + ['3.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['nokia-fork-lua-resty-mysql'] = { + ['0.20-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['nokia-fork-lua-resty-socket'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['nomad-lua'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['norgopolis-client.lua'] = { + ['0.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['norgopolis-server.lua'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + nosigpipe = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + notification = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + notifycenter = { + ['0.0-1'] = { + { + arch = "rockspec" + } + } + }, + nozzle = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['npackages.nvim'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + npssdk = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-10'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-7'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-8'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-9'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + npy4th = { + ['1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-0'] = { + { + arch = "rockspec" + } + }, + ['1.3-0'] = { + { + arch = "rockspec" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + } + }, + ['1.3-3'] = { + { + arch = "rockspec" + } + } + }, + nsenter = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['nui-components.nvim'] = { + ['1.5.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.5.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.5.2-1'] = { + { + arch = "rockspec" + } + } + }, + ['nui.nvim'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + null = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + numextra = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + numlua = { + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['nvim-client'] = { + ['0.0.1-26'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['nvim-client-proxy'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['nvim-cmp'] = { + ['0.0.1-2'] = { + { + arch = "rockspec" + } + } + }, + ['nvim-cokeline'] = { + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['nvim-dap'] = { + ['0.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['nvim-dap-ui'] = { + ['3.9.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['nvim-dbee'] = { + ['0.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['nvim-dev-container'] = { + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['nvim-java'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['nvim-java-core'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['nvim-java-dap'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['nvim-jdtls'] = { + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['nvim-jqx'] = { + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['nvim-lastplace'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['nvim-lightbulb'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['nvim-lspconfig'] = { + ['0.1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['nvim-metals'] = { + ['0.8.x-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.x-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['nvim-nio'] = { + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['nvim-notify'] = { + ['3.13.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.13.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['nvim-parinfer'] = { + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['nvim-peekup'] = { + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['nvim-possession'] = { + ['0.0.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.11-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.12-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.13-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['nvim-scrollview'] = { + ['5.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['nvim-smuggler'] = { + ['main-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['nvim-snippy'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['nvim-surround'] = { + ['2.1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['nvim-tree.lua'] = { + ['1.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['nvim-treesitter-legacy-api'] = { + ['0.9.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['nvim-ufo'] = { + ['1.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['nvim-web-devicons'] = { + ['0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.100-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.99-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + nvtx = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + nwunsch = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['nx-kong-oidc'] = { + ['0.0.1-0'] = { + { + arch = "rockspec" + } + } + }, + ['nxx-lua-resty-cookie'] = { + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + nysiis = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + oasvalidator = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + oauth = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['oauth-jwks-validator'] = { + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + } + }, + ['0.1-3'] = { + { + arch = "rockspec" + } + } + }, + ['oauth-token-validate'] = { + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + oauth2 = { + ['1.16.06.15-1'] = { + { + arch = "rockspec" + } + }, + ['1.16.06.15-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.16.06.15-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['oauth2-acl'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + oauth2c = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + oauth_light = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + obey = { + ['0.1.0-7'] = { + { + arch = "rockspec" + } + } + }, + ['objc.lua'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + objectlua = { + ['0.4.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['obsidian.nvim'] = { + ['3.6.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.7.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.7.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.7.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.7.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.7.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.7.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.7.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.7.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.7.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.7.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.8.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ocsg = { + ['0.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + octoflow = { + ['0.0.1-0'] = { + { + arch = "rockspec" + } + } + }, + odbc = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['odbc-pool'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + odielak = { + ['1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + } + }, + ['1.3-3'] = { + { + arch = "rockspec" + } + } + }, + ohm = { + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + oil = { + ['0.4beta-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['oil.nvim'] = { + ['2.10.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.6.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.7.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.8.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['onedarkpro.nvim'] = { + ['0.8.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['onenord.nvim'] = { + ['0.7.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + onion2web = { + ['1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + oo = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + oocairo = { + ['1.5-0'] = { + { + arch = "rockspec" + } + }, + ['1.5-1'] = { + { + arch = "rockspec" + } + } + }, + oop = { + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + oops = { + ['0.1-0'] = { + { + arch = "rockspec" + } + } + }, + ['op-sdk'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['open-tiny-util'] = { + ['0.1-1'] = { + { + arch = "rockspec" + } + } + }, + ['openblas-conv'] = { + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + opencl = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + opencv_lua = { + ['4.10.0-1'] = { + { + arch = "rockspec" + } + }, + ['4.8.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.8.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.9.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['opencv_lua-contrib'] = { + ['4.10.0-1'] = { + { + arch = "rockspec" + } + } + }, + opendal = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + opendir = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + } + } + }, + opengl = { + ['1.11-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + openrtm = { + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-10'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-11'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-12'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-13'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-7'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-8'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-9'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['openssh-hash'] = { + ['master-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + openssl = { + ['0.7.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.6-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.7-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.7-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.8-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.0-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.0-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['openssl-baikal'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + opentelemetry = { + ['0.2-3'] = { + { + arch = "rockspec" + } + } + }, + ['opentelemetry-lua'] = { + ['0.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + } + }, + ['0.1-3'] = { + { + arch = "rockspec" + } + }, + ['0.2-0'] = { + { + arch = "rockspec" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.2-2'] = { + { + arch = "rockspec" + } + }, + ['0.2-3'] = { + { + arch = "rockspec" + } + }, + ['0.2-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-5'] = { + { + arch = "rockspec" + } + }, + ['0.2-6'] = { + { + arch = "rockspec" + } + }, + ['master-0'] = { + { + arch = "rockspec" + } + } + }, + opentracing = { + ['0.0.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['opentracing-openresty'] = { + ['0.1-0'] = { + { + arch = "rockspec" + } + } + }, + ['opeth-all'] = { + ['0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['opeth-core'] = { + ['0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['opeth-lasm'] = { + ['0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['opeth-lvis'] = { + ['0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['opeth-moonstep'] = { + ['0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['opeth-opeth'] = { + ['0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + optarg = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + optparse = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + orange = { + ['0.8-0'] = { + { + arch = "rockspec" + } + }, + ['0.8-1'] = { + { + arch = "rockspec" + } + } + }, + orbit = { + ['2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + }, + ['2.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + }, + ['2.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + }, { + arch = "win32-x86" + } + }, + ['2.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + }, { + arch = "win32-x86" + } + }, + ['2.2.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + }, { + arch = "win32-x86" + } + }, + ['2.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.2-1'] = { + { + arch = "rockspec" + } + }, + ['2.2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + orderedset = { + ['0.01-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['org.conman.cbor'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.11-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.12-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['org.conman.const.exit'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['org.conman.const.gopher-types'] = { + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.3-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['org.conman.dns'] = { + ['1.0.11-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.12-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.13-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.14-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.16-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.17-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.18-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.19-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['org.conman.env'] = { + ['1.0.1-0'] = { + { + arch = "rockspec" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['org.conman.errno'] = { + ['1.0.1-0'] = { + { + arch = "rockspec" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['org.conman.iconv'] = { + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['org.conman.parsers.abnf'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['org.conman.parsers.ascii'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['org.conman.parsers.ascii.char'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['org.conman.parsers.ascii.control'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['org.conman.parsers.ascii.ctrl'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['org.conman.parsers.email'] = { + ['1.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['org.conman.parsers.ini'] = { + ['1.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['org.conman.parsers.ip'] = { + ['1.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['org.conman.parsers.ip-text'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['org.conman.parsers.iso'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['org.conman.parsers.iso.char'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['org.conman.parsers.iso.control'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['org.conman.parsers.iso.ctrl'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['org.conman.parsers.json'] = { + ['1.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['org.conman.parsers.jsons'] = { + ['1.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.7-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.7-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['org.conman.parsers.soundex'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['org.conman.parsers.strftime'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['org.conman.parsers.url'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.3-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.3-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['org.conman.parsers.url.gopher'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['org.conman.parsers.url.sip'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['org.conman.parsers.url.siptel'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['org.conman.parsers.url.tel'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['org.conman.parsers.url.url'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['org.conman.parsers.utf8'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['org.conman.parsers.utf8.char'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['org.conman.parsers.utf8.control'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['org.conman.parsers.utf8.ctrl'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['org.conman.syslog'] = { + ['1.0.5-0'] = { + { + arch = "rockspec" + } + }, + ['2.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.1-0'] = { + { + arch = "rockspec" + } + }, + ['2.1.2-0'] = { + { + arch = "rockspec" + } + }, + ['2.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.3-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.3-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.4-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.4-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.4-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.4-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['org.conman.tls'] = { + ['1.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['org.conman.uuid'] = { + ['1.2.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.2.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.11-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.12-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.13-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.14-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.15-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.16-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.18-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.4-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.5-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + orgmode = { + ['0.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + orm = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['os-pipe'] = { + ['0.5.0-1'] = { + { + arch = "rockspec" + } + } + }, + osc = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + oscpack = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['osrm-lua-libs'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['ossp-uuid'] = { + ['1.6.2-1'] = { + { + arch = "rockspec" + } + } + }, + otom = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['otouto-test'] = { + ['3.11-11'] = { + { + arch = "rockspec" + } + } + }, + otp = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['otter.nvim'] = { + ['1.10.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.11.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.12.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.12.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.13.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.14.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.15.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.15.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + outcome = { + ['0.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['overseer.nvim'] = { + ['1.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['ovh-api'] = { + ['1.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + owoify = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['oxd-web-lua'] = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['oz.nvim'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['package-info.nvim'] = { + ['2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + packer = { + ['0.1.20240307-1'] = { + { + arch = "rockspec" + } + } + }, + ['pai-serverless-kong'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + } + } + }, + pancake = { + ['1.0.0b11-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0b16-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0b17-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0b5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0b7-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + pandocmeta = { + ['0.1-2'] = { + { + arch = "rockspec" + } + }, + ['0.2-0'] = { + { + arch = "rockspec" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.3-0'] = { + { + arch = "rockspec" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + } + } + }, + panlunatic = { + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + panpipe = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['paperplanes.nvim'] = { + ['0.1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['papis.nvim'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['paq-nvim'] = { + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + parent = { + ['1.0.0-0'] = { + { + arch = "rockspec" + } + } + }, + parsel = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['parser-gen'] = { + ['1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + } + }, + ['1.0-3'] = { + { + arch = "rockspec" + } + }, + ['1.0-4'] = { + { + arch = "rockspec" + } + }, + ['1.0-5'] = { + { + arch = "rockspec" + } + }, + ['1.0-6'] = { + { + arch = "rockspec" + } + }, + ['1.0-7'] = { + { + arch = "rockspec" + } + }, + ['1.1-0'] = { + { + arch = "rockspec" + } + }, + ['1.2-0'] = { + { + arch = "rockspec" + } + } + }, + paseto = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + pash = { + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + passer = { + ['0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + patch = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + path = { + ['1.0.5-1'] = { + { + arch = "rockspec" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + pathetic = { + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['pathlib.nvim'] = { + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + pato = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-0'] = { + { + arch = "rockspec" + } + } + }, + patok = { + ['1.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.1-0'] = { + { + arch = "rockspec" + } + }, + ['1.2-0'] = { + { + arch = "rockspec" + } + } + }, + payments = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + pbc = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + pcre2 = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + } + }, + pdh = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['pe-parser'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.0-2'] = { + { + arch = "rockspec" + }, { + arch = "all" + } + }, + ['0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + pegasus = { + ['0.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-7'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-8'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-9'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.6-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.7-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.8-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.9-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['pegasus-mr'] = { + ['0.9.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.9.0-10'] = { + { + arch = "rockspec" + } + } + }, + pegdebug = { + ['0.40-1'] = { + { + arch = "rockspec" + } + }, + ['0.40-2'] = { + { + arch = "rockspec" + } + }, + ['0.41-1'] = { + { + arch = "rockspec" + } + } + }, + pegex = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + pegl = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + penlight = { + ['0.8-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + } + }, + ['0.9.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.10.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.10.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.11.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.11.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.12.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.12.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.13.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.13.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.14.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.14.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['penlight-ffi'] = { + ['scm-1'] = { + { + arch = "rockspec" + } + } + }, + ['percent-encode-encoder'] = { + ['0.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.3-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.4-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.5-1'] = { + { + arch = "rockspec" + } + } + }, + ['percent-f-strings'] = { + ['0.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.3-2'] = { + { + arch = "rockspec" + } + } + }, + perihelion = { + ['0.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.11-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.11-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.11-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.12-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.13-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.14-1'] = { + { + arch = "rockspec" + } + }, + ['0.16-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7-1'] = { + { + arch = "rockspec" + } + }, + ['0.8-1'] = { + { + arch = "rockspec" + } + }, + ['0.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['perimeterx-nginx-plugin'] = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-2'] = { + { + arch = "rockspec" + } + }, + ['1.1-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.10-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.11-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.12-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.13-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.13-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.6-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.7-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.8-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.8-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.9-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5.3-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.3.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.3.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.3.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.3.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.3.3-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.3.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.3.4-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.4.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.5.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.5.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.6.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.6.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.7.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.7.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.7.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.7.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6.8.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['7.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['7.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['7.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['7.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['7.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['7.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['7.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['7.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['7.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['persistence.nvim'] = { + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + personnummer = { + ['3.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['3.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + pesterkit = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + petrisport = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + petrodoc = { + ['10.12.28-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + pgmoon = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.10.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.11.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.12.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.13.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.14.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.15.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.16.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['pgmoon-mashape'] = { + ['1.7.0-1'] = { + { + arch = "rockspec" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['2.0.1-1'] = { + { + arch = "rockspec" + } + } + }, + pgvector = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + phpass = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + physfs = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['pico8-to-lua'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.0-2'] = { + { + arch = "rockspec" + } + } + }, + picohttpparser = { + ['1.1.2-1'] = { + { + arch = "rockspec" + } + }, + ['1.1.3-1'] = { + { + arch = "rockspec" + } + }, + ['1.1.3-2'] = { + { + arch = "rockspec" + } + } + }, + pidmap = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['piecharts.sile'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['pijaz sdk'] = { + ['0.1-1'] = { + { + arch = "rockspec" + } + } + }, + ['pijaz-sdk'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + } + } + }, + ['pilcrow.unito'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + pilosa = { + ['0.1.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + pimp = { + ['1.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.0-5'] = { + { + arch = "rockspec" + } + }, + ['1.5-0'] = { + { + arch = "rockspec" + } + }, + ['1.5-2'] = { + { + arch = "rockspec" + } + }, + ['1.5-4'] = { + { + arch = "rockspec" + } + }, + ['1.6-0'] = { + { + arch = "rockspec" + } + }, + ['1.7-0'] = { + { + arch = "rockspec" + } + } + }, + pipe = { + ['1.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + pixcrypt = { + ['1.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.2-2'] = { + { + arch = "rockspec" + } + } + }, + pixie = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + pkg = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-11'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-13'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-14'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-15'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-7'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + pkgrock = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + plain = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + plc = { + ['0.5-1'] = { + { + arch = "rockspec" + } + } + }, + ['plenary.nvim'] = { + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['scm-1'] = { + { + arch = "rockspec" + } + } + }, + plterm = { + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + } + } + }, + plut = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + } + } + }, + pluto = { + ['2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['pm4-sdk-lua'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['pokerhand-eval'] = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + pokitdok = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + poly1305 = { + ['1.0-5'] = { + { + arch = "rockspec" + } + } + }, + pomelo = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + pool = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + } + }, + ['2.0-1'] = { + { + arch = "rockspec" + } + }, + ['2.1-1'] = { + { + arch = "rockspec" + } + }, + ['2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + pop3 = { + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + portutils = { + ['0.1-7'] = { + { + arch = "rockspec" + } + } + }, + postgres = { + ['0.3.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.6.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['postgres-auth-server'] = { + ['1.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['postgres-decode'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + } + }, + postgrest = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['power-table'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + power_widget = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.5-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + powerlog = { + ['0.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ppkit = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + pprint = { + ['0.1.0'] = { + { + arch = "rockspec" + } + }, + ['0.1.1'] = { + { + arch = "rockspec" + } + }, + ['0.1.2'] = { + { + arch = "rockspec" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-0'] = { + { + arch = "rockspec" + } + } + }, + prailude = { + ['0.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + prefix_tree = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + preloader = { + ['2.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['pretty-csv'] = { + ['1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['pretty-fold.nvim'] = { + ['3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + primes = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + print = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.6.0-1'] = { + { + arch = "rockspec" + } + } + }, + print_table = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + } + } + }, + printable_chars = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['printoptions.sile'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['privilege-process-demo'] = { + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + procdata = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + process = { + ['1.6.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.7.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.8.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.9.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.9.1-1'] = { + { + arch = "rockspec" + } + } + }, + profi = { + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['prom-client'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + promise = { + ['0.1-0'] = { + { + arch = "rockspec" + } + } + }, + ['promise-async'] = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['scm-0'] = { + { + arch = "rockspec" + } + } + }, + ['promise-async-await'] = { + ['0.7-1'] = { + { + arch = "rockspec" + } + } + }, + ['promise-es6'] = { + ['1.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['promise-lua'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.1-1'] = { + { + arch = "rockspec" + } + } + }, + ['prompt-style'] = { + ['0.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + properset = { + ['0.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.3b-0'] = { + { + arch = "rockspec" + } + } + }, + proto = { + ['0.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.4-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.6-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + protobuf = { + ['1.0.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.1.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.1.1-0'] = { + { + arch = "rockspec" + } + }, + ['1.1.2-0'] = { + { + arch = "rockspec" + } + } + }, + protomixin = { + ['1.0.0-1'] = { + { + arch = "rockspec" + } + } + }, + prototype = { + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + proxyquire = { + ['1.0-0'] = { + { + arch = "rockspec" + } + }, + ['2.0-0'] = { + { + arch = "rockspec" + } + }, + ['2.1-0'] = { + { + arch = "rockspec" + } + } + }, + ['prtr-dump'] = { + ['20121106-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20121212-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20161017-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['prtr-path'] = { + ['20121107-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20121212-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20180201-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['prtr-test'] = { + ['20121212-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20151116-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + psl = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['ptable.sile'] = { + ['2.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['2.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['2.0.2-1'] = { + { + arch = "rockspec" + } + }, + ['3.0.0-1'] = { + { + arch = "rockspec" + } + } + }, + pthread = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.7.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.8.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['pub-sub'] = { + ['0.1'] = { + { + arch = "rockspec" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + } + } + }, + public_suffix_list = { + ['1.0.201807-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.201808-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.201809-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.201810-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.201811-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.201812-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.201901-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.201902-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.201903-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.201904-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.201905-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.201906-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.201907-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.201908-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.201909-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.201910-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.201911-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.201912-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.202001-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.202002-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.202003-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.202004-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.202005-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.202006-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.202007-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.202008-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.202009-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.202010-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.202011-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.202012-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.202101-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.202102-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.202103-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.202104-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.202105-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.202106-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + puerts = { + ['0.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + pulseaudio = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + } + } + }, + pulseaudio_cli = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + pulseaudio_dbus = { + ['0.10.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.11.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.11.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.11.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.11.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.12.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.12.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.8.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + pulseaudio_widget = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + puretoml = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + push = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + pystring = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-7'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + qaluate = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + qlass = { + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['qrcode.sile'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + } + } + }, + qrprinter = { + ['1.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-0'] = { + { + arch = "rockspec" + } + } + }, + quantum = { + ['1.0-0'] = { + { + arch = "rockspec" + } + } + }, + quest = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + queue = { + ['0.0.1-0'] = { + { + arch = "rockspec" + } + } + }, + ['quick-scope'] = { + ['2.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.6.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['r1-lua-resty-waf'] = { + ['r0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + radarchart = { + ['1.0.1-1'] = { + { + arch = "rockspec" + } + } + }, + ['radical.vim'] = { + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['radix-router'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['rainbow-delimiters.nvim'] = { + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + raisin = { + ['3.0-1'] = { + { + arch = "rockspec" + } + } + }, + rake = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + randbytes = { + ['0.0-2'] = { + { + arch = "rockspec" + } + }, + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + random = { + ['1.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.1-0'] = { + { + arch = "rockspec" + } + } + }, + ['random-number'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + randomdist = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['rapid-match-domain'] = { + ['1.0.0'] = { + { + arch = "rockspec" + } + } + }, + rapidjson = { + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + raven = { + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['raven-knight'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['raven-lua-rjson'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + rawterm = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + rblx_signal = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-7'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + rcnb = { + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + reactivex = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + readkey = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + readline = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.6-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.7-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.8-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.9-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + readosm = { + ['1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + realpath = { + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + } + } + }, + recaptcha = { + ['8.05.26-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['8.07.07-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + reco = { + ['1.4.3-1'] = { + { + arch = "rockspec" + } + }, + ['1.4.4-1'] = { + { + arch = "rockspec" + } + }, + ['1.5.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.6.0-1'] = { + { + arch = "rockspec" + } + } + }, + redis = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['redis-lua'] = { + ['1.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + }, + ['2.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + }, + ['2.0.1-0'] = { + { + arch = "rockspec" + } + }, + ['2.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.2-0'] = { + { + arch = "rockspec" + } + }, + ['2.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.3-0'] = { + { + arch = "rockspec" + } + }, + ['2.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.4-0'] = { + { + arch = "rockspec" + } + }, + ['2.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + redotenv = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + } + } + }, + redstats = { + ['1.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + redux = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['redux-lua'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['redux-props'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + } + }, + ref = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + reflex = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.6.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.7.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.8.0-1'] = { + { + arch = "rockspec" + } + } + }, + refser = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + regex = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + } + }, + reggae = { + ['0.0-1'] = { + { + arch = "rockspec" + } + } + }, + regkex = { + ['master-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + remdebug = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + } + }, + remotelog = { + ['1.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + remy = { + ['0.2.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.11-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.12-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.13-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.14-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + rename = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + } + } + }, + ['renamer.nvim'] = { + ['5.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['repeat.vim'] = { + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['repeatable-random-number'] = { + ['1.0.0-3'] = { + { + arch = "rockspec" + } + }, + ['1.0.0-4'] = { + { + arch = "rockspec" + } + } + }, + ['req-content-type-transformer'] = { + ['0.1-1'] = { + { + arch = "rockspec" + } + } + }, + reql = { + ['1.0.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['request-limit-validator'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + require = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.4-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.4-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.4-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.4-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.5-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.7-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['resilient.sile'] = { + ['2.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['2.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['2.2.1-1'] = { + { + arch = "rockspec" + } + }, + ['2.3.0-1'] = { + { + arch = "rockspec" + } + } + }, + resp = { + ['0.3.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.5.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.5.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.5.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.5.3-2'] = { + { + arch = "rockspec" + } + } + }, + ['rest.nvim'] = { + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + restia = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + restserver = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['restserver-xavante'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['resty-casbin-adapter'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['resty-dynacode'] = { + ['1.0.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.0.1-0'] = { + { + arch = "rockspec" + } + }, + ['1.0.2-0'] = { + { + arch = "rockspec" + } + }, + ['1.0.3-0'] = { + { + arch = "rockspec" + } + }, + ['1.0.4-0'] = { + { + arch = "rockspec" + } + } + }, + ['resty-hostcheck'] = { + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['resty-mongol'] = { + ['0.2-0'] = { + { + arch = "rockspec" + } + }, + ['0.3-0'] = { + { + arch = "rockspec" + } + }, + ['0.5-0'] = { + { + arch = "rockspec" + } + }, + ['0.6-0'] = { + { + arch = "rockspec" + } + }, + ['0.7-0'] = { + { + arch = "rockspec" + } + }, + ['0.7-1'] = { + { + arch = "rockspec" + } + }, + ['0.7-2'] = { + { + arch = "rockspec" + } + }, + ['0.7-3'] = { + { + arch = "rockspec" + } + }, + ['0.7-4'] = { + { + arch = "rockspec" + } + }, + ['0.8-0'] = { + { + arch = "rockspec" + } + }, + ['0.8-1'] = { + { + arch = "rockspec" + } + }, + ['0.8-2'] = { + { + arch = "rockspec" + } + }, + ['0.8-3'] = { + { + arch = "rockspec" + } + }, + ['0.8-4'] = { + { + arch = "rockspec" + } + } + }, + ['resty-newrelic'] = { + ['0.01-0'] = { + { + arch = "rockspec" + } + }, + ['0.01-1'] = { + { + arch = "rockspec" + } + }, + ['0.01-4'] = { + { + arch = "rockspec" + } + }, + ['0.01-5'] = { + { + arch = "rockspec" + } + }, + ['0.01-6'] = { + { + arch = "rockspec" + } + } + }, + ['resty-raven'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['resty-redis-cluster'] = { + ['1.02-4'] = { + { + arch = "rockspec" + } + }, + ['1.04-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.05-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['resty-redis-rate'] = { + ['1.0.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['resty-route'] = { + ['0.1'] = { + { + arch = "rockspec" + } + }, + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + } + } + }, + ['resty-shared-session'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['resty-smtp'] = { + ['1.0rc1-1'] = { + { + arch = "rockspec" + } + } + }, + ['resurfaceio-logger'] = { + ['1.2-3'] = { + { + arch = "rockspec" + } + }, + ['2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + rez = { + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.5.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.5.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.5.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.5.4-1'] = { + { + arch = "rockspec" + } + } + }, + rfcvalid = { + ['0.6.0-1'] = { + { + arch = "rockspec" + } + } + }, + rgbstr = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + riemoon = { + ['0.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + rings = { + ['1.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + }, { + arch = "win32-x86" + } + }, + ['1.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + }, { + arch = "win32-x86" + } + }, + ['1.2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + }, { + arch = "win32-x86" + } + }, + ['1.2.3-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + riseml = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + rjson = { + ['dev-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + rkeys = { + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + rl = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + rmdir = { + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.1-1'] = { + { + arch = "rockspec" + } + } + }, + rmrf = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + rndplugin = { + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + rnnlib = { + ['0.1-1'] = { + { + arch = "rockspec" + } + } + }, + robotstxt = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['rock-hello'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + rockbuild = { + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + rocketmq = { + ['2.1.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['rocks-config.nvim'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['rocks-dev.nvim'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['rocks-git.nvim'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['rocks.nvim'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.10.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.11.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.12.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.12.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.13.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.13.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.14.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.15.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.16.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.17.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.18.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.19.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.19.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.20.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.20.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.21.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.21.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.21.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.21.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.22.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.23.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.24.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.25.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.25.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.26.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.27.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.27.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.28.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.29.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.29.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.29.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.30.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.30.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.31.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.31.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.31.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.31.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.6.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.6.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.7.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.7.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.7.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.7.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.7.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.8.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.8.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.8.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + rocksolver = { + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.2-2'] = { + { + arch = "rockspec" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.3-2'] = { + { + arch = "rockspec" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.2-1'] = { + { + arch = "rockspec" + } + } + }, + rockspec2cmake = { + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + } + } + }, + ['rocktest-foo'] = { + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + rockwriter = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['rollbar-nginx'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + }, + ['0.1.1-0'] = { + { + arch = "rockspec" + } + } + }, + ['roman-numerls'] = { + ['1.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['rose-pine'] = { + ['3.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + router = { + ['1.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['rpc-prizm'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['rpi-gpio'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + rpio = { + ['1.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.1-0'] = { + { + arch = "rockspec" + } + } + }, + rs232 = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + rsjson = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['rtp.nvim'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + rubato = { + ['1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + } + } + }, + rubyapi = { + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + rude = { + ['0.4-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + runkit = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + runstache = { + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + rustaceanvim = { + ['3.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.10.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.10.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.10.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.10.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.10.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.10.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.11.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.12.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.12.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.12.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.13.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.13.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.14.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.15.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.16.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.16.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.16.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.16.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.17.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.17.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.17.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.17.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.3.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.4.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.5.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.6.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.6.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.6.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.6.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.6.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.7.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.7.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.8.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.9.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.9.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.9.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.9.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.9.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.9.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.10.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.10.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.10.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.11.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.11.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.12.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.12.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.12.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.13.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.14.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.14.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.15.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.16.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.17.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.18.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.18.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.18.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.19.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.20.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.21.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.21.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.21.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.22.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.22.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.22.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.22.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.22.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.22.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.22.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.22.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.22.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.22.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.22.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.23.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.23.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.23.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.23.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.23.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.23.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.24.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.24.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.25.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.25.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.5.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.5.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.7.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.7.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.7.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.7.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.7.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.7.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.8.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['rxi-json'] = { + ['dbf4b2d-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['rxi-json-lua'] = { + ['e1dbe93-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + rxlove = { + ['0.0.1-1'] = { + { + arch = "rockspec" + } + } + }, + rxlua = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + } + } + }, + s3 = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['s3-cjson2'] = { + ['1.0-10'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-7'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-8'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-9'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + s6ftrig = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + saci = { + ['9.03.16-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + safer = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + sailor = { + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.3-3'] = { + { + arch = "rockspec" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.5-1'] = { + { + arch = "rockspec" + } + }, + ['0.5-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['sailor-md'] = { + ['0.1-1'] = { + { + arch = "rockspec" + } + } + }, + salt = { + ['1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + saml = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['samp-events'] = { + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['samp-favorites'] = { + ['1.0'] = { + { + arch = "rockspec" + } + } + }, + sample_rtcomponent = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + sandbox = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + santoku = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.100-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.101-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.102-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.103-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.104-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.105-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.106-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.107-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.108-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.109-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.11-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.110-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.111-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.112-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.113-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.114-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.115-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.116-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.117-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.118-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.119-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.12-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.121-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.122-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.123-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.124-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.125-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.126-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.127-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.128-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.129-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.130-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.131-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.132-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.133-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.134-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.135-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.136-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.137-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.138-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.139-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.140-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.141-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.142-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.143-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.144-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.145-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.146-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.147-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.148-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.150-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.151-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.152-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.153-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.154-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.156-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.157-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.158-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.159-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.160-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.161-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.162-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.163-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.164-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.165-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.166-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.167-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.168-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.169-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.17-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.170-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.171-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.172-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.173-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.174-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.175-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.176-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.177-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.178-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.179-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.18-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.180-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.181-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.182-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.183-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.184-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.185-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.186-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.187-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.188-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.189-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.19-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.190-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.191-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.192-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.193-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.194-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.195-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.196-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.197-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.198-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.199-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.20-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.200-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.201-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.202-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.203-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.204-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.21-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.22-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.23-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.24-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.25-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.26-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.27-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.28-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.29-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.30-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.31-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.32-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.33-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.34-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.35-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.36-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.37-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.38-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.39-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.40-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.41-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.42-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.43-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.44-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.45-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.46-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.47-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.48-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.49-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.50-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.51-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.52-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.53-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.54-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.55-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.56-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.57-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.58-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.60-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.61-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.62-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.64-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.65-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.66-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.67-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.68-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.69-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.70-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.71-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.72-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.73-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.74-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.76-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.77-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.78-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.79-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.80-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.81-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.82-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.83-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.84-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.85-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.86-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.87-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.88-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.89-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.90-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.91-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.92-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.93-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.94-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.96-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.97-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.98-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.99-1'] = { + { + arch = "rockspec" + } + } + }, + ['santoku-bert'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.6-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.7-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.8-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.9-1'] = { + { + arch = "rockspec" + } + } + }, + ['santoku-bitmap'] = { + ['0.0.10-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.11-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.12-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.13-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.14-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.15-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.6-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.7-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.8-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.9-1'] = { + { + arch = "rockspec" + } + } + }, + ['santoku-bundle'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.10-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.11-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.12-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.13-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.14-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.15-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.16-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.17-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.18-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.19-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.19-2'] = { + { + arch = "rockspec" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.20-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.22-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.23-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.24-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.25-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.26-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.27-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.28-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.29-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.30-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.6-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.7-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.8-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.9-1'] = { + { + arch = "rockspec" + } + } + }, + ['santoku-cli'] = { + ['0.0.100-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.101-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.102-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.103-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.104-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.105-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.106-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.107-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.108-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.109-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.110-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.111-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.112-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.113-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.114-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.115-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.116-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.117-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.118-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.119-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.120-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.121-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.122-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.123-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.124-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.125-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.126-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.127-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.128-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.129-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.130-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.131-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.132-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.133-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.134-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.135-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.136-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.137-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.138-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.139-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.140-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.141-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.142-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.143-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.145-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.146-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.147-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.148-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.149-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.150-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.151-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.152-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.153-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.154-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.155-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.156-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.157-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.158-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.159-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.160-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.161-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.162-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.163-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.164-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.165-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.166-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.167-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.167-2'] = { + { + arch = "rockspec" + } + }, + ['0.0.168-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.169-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.170-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.171-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.172-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.173-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.174-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.175-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.176-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.177-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.178-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.179-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.18-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.180-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.181-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.182-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.183-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.184-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.185-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.186-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.187-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.188-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.189-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.19-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.190-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.191-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.192-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.193-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.194-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.195-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.196-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.197-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.198-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.199-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.20-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.200-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.201-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.202-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.203-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.204-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.205-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.206-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.207-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.208-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.21-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.22-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.23-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.24-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.25-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.26-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.27-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.28-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.29-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.30-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.31-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.32-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.33-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.34-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.35-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.36-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.37-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.38-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.39-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.40-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.41-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.42-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.43-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.44-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.45-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.46-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.47-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.48-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.49-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.50-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.51-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.52-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.53-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.54-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.55-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.56-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.57-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.58-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.60-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.61-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.62-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.64-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.65-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.66-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.67-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.68-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.69-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.70-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.71-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.72-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.73-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.74-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.76-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.77-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.78-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.79-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.80-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.81-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.82-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.83-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.84-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.85-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.86-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.87-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.88-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.89-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.90-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.91-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.92-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.93-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.94-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.95-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.96-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.98-1'] = { + { + arch = "rockspec" + } + } + }, + ['santoku-fs'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.10-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.11-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.12-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.13-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.14-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.15-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.16-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.17-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.18-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.19-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.20-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.21-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.22-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.23-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.24-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.25-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.26-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.27-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.28-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.29-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.30-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.31-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.32-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.6-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.7-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.9-1'] = { + { + arch = "rockspec" + } + } + }, + ['santoku-geo-pdf'] = { + ['0.0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + } + } + }, + ['santoku-html'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.10-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.11-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.12-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.13-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.14-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.15-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.16-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.6-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.7-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.8-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.9-1'] = { + { + arch = "rockspec" + } + } + }, + ['santoku-iconv'] = { + ['0.0.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.6-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.7-1'] = { + { + arch = "rockspec" + } + } + }, + ['santoku-jpeg'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.10-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.11-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.15-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.16-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.17-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.18-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.19-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.6-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.7-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.8-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.9-1'] = { + { + arch = "rockspec" + } + } + }, + ['santoku-make'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.10-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.11-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.12-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.13-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.14-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.17-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.18-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.19-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.20-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.21-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.22-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.23-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.25-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.26-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.27-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.28-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.29-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.30-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.31-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.32-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.33-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.34-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.35-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.36-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.37-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.38-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.39-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.40-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.41-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.42-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.43-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.44-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.45-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.46-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.47-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.48-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.49-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.50-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.51-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.52-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.53-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.54-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.55-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.56-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.57-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.58-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.59-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.6-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.60-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.61-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.62-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.63-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.64-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.65-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.66-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.67-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.68-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.69-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.7-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.70-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.8-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.9-1'] = { + { + arch = "rockspec" + } + } + }, + ['santoku-matrix'] = { + ['0.0.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.6-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.7-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.8-1'] = { + { + arch = "rockspec" + } + } + }, + ['santoku-pdf'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + } + } + }, + ['santoku-porter'] = { + ['0.0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + } + } + }, + ['santoku-python'] = { + ['0.0.10-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.12-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.13-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.14-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.15-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.16-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.17-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.18-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.19-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.20-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.21-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.22-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.23-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.24-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.25-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.26-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.27-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.28-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.29-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.30-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.31-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.32-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.33-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.34-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.35-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.36-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.37-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.6-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.7-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.9-1'] = { + { + arch = "rockspec" + } + } + }, + ['santoku-sqlite'] = { + ['0.0.10-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.11-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.12-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.13-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.14-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.15-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.16-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.17-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.6-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.7-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.8-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.9-1'] = { + { + arch = "rockspec" + } + } + }, + ['santoku-sqlite-migrate'] = { + ['0.0.10-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.11-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.12-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.13-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.6-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.7-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.8-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.9-1'] = { + { + arch = "rockspec" + } + } + }, + ['santoku-system'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.11-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.12-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.13-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.14-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.15-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.16-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.17-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.18-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.19-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.20-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.21-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.22-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.23-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.7-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.8-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.9-1'] = { + { + arch = "rockspec" + } + } + }, + ['santoku-template'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.10-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.11-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.12-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.13-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.14-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.15-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.16-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.17-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.18-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.19-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.20-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.21-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.22-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.23-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.24-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.25-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.26-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.6-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.7-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.8-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.9-1'] = { + { + arch = "rockspec" + } + } + }, + ['santoku-test'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.6-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.7-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.8-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.8-2'] = { + { + arch = "rockspec" + } + } + }, + ['santoku-test-runner'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.10-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.11-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.13-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.14-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.15-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.16-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.18-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.19-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.20-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.21-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.22-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.23-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.6-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.7-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.8-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.9-1'] = { + { + arch = "rockspec" + } + } + }, + ['santoku-tsetlin'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.10-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.11-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.12-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.13-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.14-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.15-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.16-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.17-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.18-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.19-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.20-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.21-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.22-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.23-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.24-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.25-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.26-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.29-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.30-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.31-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.32-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.33-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.34-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.35-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.36-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.37-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.38-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.39-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.40-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.41-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.42-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.43-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.44-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.45-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.46-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.47-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.48-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.49-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.6-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.7-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.8-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.9-1'] = { + { + arch = "rockspec" + } + } + }, + ['santoku-web'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.100-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.101-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.102-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.103-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.104-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.105-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.106-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.107-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.108-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.109-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.11-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.110-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.111-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.112-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.12-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.13-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.14-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.15-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.16-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.19-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.20-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.20-2'] = { + { + arch = "rockspec" + } + }, + ['0.0.21-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.22-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.23-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.24-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.25-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.26-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.27-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.28-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.29-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.30-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.31-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.32-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.33-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.34-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.35-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.36-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.37-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.38-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.39-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.40-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.41-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.42-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.43-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.44-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.45-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.46-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.47-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.48-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.49-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.50-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.51-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.52-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.53-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.55-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.56-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.57-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.58-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.59-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.60-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.61-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.62-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.63-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.64-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.65-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.66-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.67-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.68-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.69-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.70-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.71-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.72-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.73-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.74-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.75-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.76-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.77-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.78-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.79-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.80-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.81-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.82-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.83-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.84-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.85-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.86-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.87-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.88-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.89-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.90-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.91-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.92-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.93-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.94-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.95-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.96-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.97-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.98-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.99-1'] = { + { + arch = "rockspec" + } + } + }, + sass = { + ['0.1-1'] = { + { + arch = "rockspec" + } + } + }, + satelito = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['beta-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['beta-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['beta-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + say = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-0'] = { + { + arch = "rockspec" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + } + }, + ['1.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + sayit = { + ['1.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['sc-lua-resty-auto-ssl'] = { + ['0.13.1-1'] = { + { + arch = "rockspec" + } + } + }, + scaffold = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['scalable-rate-limiter'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + scene = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + schema = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['schemastore.nvim'] = { + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + schwartziantransformutils = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-2'] = { + { + arch = "rockspec" + } + } + }, + sci = { + ['1.0.0.beta12-1'] = { + { + arch = "rockspec" + } + } + }, + ['screenkey.nvim'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['scrollbar.nvim'] = { + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + scrypt = { + ['0.1.1-0'] = { + { + arch = "rockspec" + } + } + }, + seawolf = { + ['0.8-1'] = { + { + arch = "rockspec" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + } + }, + ['1.0-3'] = { + { + arch = "rockspec" + } + }, + ['1.0-4'] = { + { + arch = "rockspec" + } + } + }, + ['secmc-plugin'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + see = { + ['0.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + seiran = { + ['2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.2-1'] = { + { + arch = "rockspec" + } + } + }, + selectex = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + selene = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + self = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.2-0'] = { + { + arch = "rockspec" + } + } + }, + semparse = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + semver = { + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.2.1-1'] = { + { + arch = "rockspec" + } + } + }, + sendgrid = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + sendmail = { + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + sentry = { + ['0.8.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.8.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.9.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.9.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.9.1-3'] = { + { + arch = "rockspec" + } + } + }, + ['ser-alloyed'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + serpent = { + ['0.21-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.27-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.28-1'] = { + { + arch = "rockspec" + } + }, + ['0.30-1'] = { + { + arch = "rockspec" + } + }, + ['0.30-2'] = { + { + arch = "rockspec" + } + } + }, + ['servicekit-posix'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['session.nvim'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + sessiond_dbus = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['devel-1'] = { + { + arch = "rockspec" + } + } + }, + set = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['set-lua'] = { + ['1.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['set-upstream-by-header'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + setenv = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + setuid = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['sfcrand-lua5.3'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['sfcrand-luajit'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + sfmt = { + ['1.5.4-1'] = { + { + arch = "rockspec" + } + }, + ['1.5.4-2'] = { + { + arch = "rockspec" + } + } + }, + ['sfn-auth'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + sfs = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + sfxr = { + ['0.0.2-1'] = { + { + arch = "rockspec" + } + } + }, + ['sg.nvim'] = { + ['1.0.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + sgp30 = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + sh = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + sha1 = { + ['0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + sha2 = { + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + }, { + arch = "win32-x86" + } + } + }, + ['shape-detector'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + } + } + }, + shapeshift = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + sharedtensor = { + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['shell-games'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + shelve = { + ['0.35.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.35.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.35.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.35.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.35.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + shexpand = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + shiki = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + shim = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + shiplog = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + sht20 = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + sia = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-2'] = { + { + arch = "rockspec" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.5-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.6-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.6-2'] = { + { + arch = "rockspec" + } + }, + ['0.2.6-3'] = { + { + arch = "rockspec" + } + } + }, + sidekiqjobpusher = { + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + sif = { + ['master-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + signal = { + ['1.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.3.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.4.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.5.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.6.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.6.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.7.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.8.0-1'] = { + { + arch = "rockspec" + } + } + }, + signalise = { + ['1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['silex.sile'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['simple-lua-json'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + } + } + }, + simple_classes_lua = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + simple_test = { + ['0.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.6-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.7-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.8-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + simpleitk = { + ['0.10-0'] = { + { + arch = "rockspec" + } + }, + ['1.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.0.1-0'] = { + { + arch = "rockspec" + } + }, + ['1.1.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.2.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.2.2-0'] = { + { + arch = "rockspec" + } + }, + ['2.0.0-0'] = { + { + arch = "rockspec" + } + }, + ['2.1.0-0'] = { + { + arch = "rockspec" + } + }, + ['2.2.0-0'] = { + { + arch = "rockspec" + } + } + }, + simulua = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['sinx-lua'] = { + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + sirocco = { + ['0.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.1-2'] = { + { + arch = "rockspec" + } + }, + ['0.0.1-3'] = { + { + arch = "rockspec" + } + }, + ['0.0.1-4'] = { + { + arch = "rockspec" + } + }, + ['0.0.1-5'] = { + { + arch = "rockspec" + } + } + }, + sitegen = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + skewheap = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + skooma = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['skywalking-nginx-lua'] = { + ['0.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.2-0'] = { + { + arch = "rockspec" + } + }, + ['0.3-0'] = { + { + arch = "rockspec" + } + }, + ['0.4-0'] = { + { + arch = "rockspec" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['skywalking-nginx-lua-plugin'] = { + ['1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['skywalking-nginx-lua-test'] = { + ['0.3-0'] = { + { + arch = "rockspec" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.3-2'] = { + { + arch = "rockspec" + } + }, + ['0.3-3'] = { + { + arch = "rockspec" + } + } + }, + slaxml = { + ['0.8-1'] = { + { + arch = "rockspec" + } + } + }, + sleep = { + ['1.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.0-2'] = { + { + arch = "rockspec" + } + }, + ['1.0.0-3'] = { + { + arch = "rockspec" + } + }, + ['1.0.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + slingshot = { + ['7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['8.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + sllog = { + ['0.2-0'] = { + { + arch = "rockspec" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + } + } + }, + slncrypto = { + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + slnet = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + slnunicode = { + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + slowjson = { + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + slt2 = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['smart-splits.nvim'] = { + ['1.3.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['smartquotes.sile'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + } + } + }, + smaz = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + smithsnmp = { + ['0.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + snaphelpers = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + sncl = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-0'] = { + { + arch = "rockspec" + } + }, + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + snowflake = { + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + snowplowtracker = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + sociallua = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + socks5 = { + ['1.2-1'] = { + { + arch = "rockspec" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + } + }, + ['1.5-1'] = { + { + arch = "rockspec" + } + }, + ['1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + sofa = { + ['0.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + solr = { + ['0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + somata = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + sonata = { + ['0.9-1'] = { + { + arch = "rockspec" + } + } + }, + spaces = { + ['0.3-11'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-12'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-13'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-14'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-9'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + spawn = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + specl = { + ['1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['11-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['12-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['13-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['14.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['14.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['14.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['14.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['14.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['14.1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['14.1.4-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['14.1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['14.1.6-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['14.1.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['14.1.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['speeddating.vim'] = { + ['20081016-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + sphericaldefence = { + ['0.0.3-3'] = { + { + arch = "rockspec" + } + } + }, + split = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + sproto = { + ['0.1.20210820-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + sputnik = { + ['9.03.16-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['sqids-lua'] = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['sql-orm'] = { + ['0.3.20210821-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.20210828-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.20211015-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.20220801-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.20220813-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.20230409-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.20230709-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + sql2lua = { + ['0.0.1-1'] = { + { + arch = "rockspec" + } + } + }, + sqlcipher = { + ['4.4.2-1'] = { + { + arch = "rockspec" + } + }, + ['4.4.2-2'] = { + { + arch = "rockspec" + } + } + }, + sqlite = { + ['master-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['v1.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['v1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['v1.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['v1.2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['v1.2.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['v1.2.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['sqlite.lua'] = { + ['1.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + sqlite3 = { + ['0.4.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + sqlrocks = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + sqltable = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['squall-router'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + } + } + }, + ['squirrel.nvim'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + squirt = { + ['1.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + srplib = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + srt = { + ['1.0.0-0'] = { + { + arch = "rockspec" + } + } + }, + ssh = { + ['0.0.1-0'] = { + { + arch = "rockspec" + } + } + }, + st = { + ['0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + stacktraceplus = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + starwarsnames = { + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + static = { + ['2.1.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + statsd = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['std._debug'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['std.functional'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['std.normalize'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['std.prototype'] = { + ['1.0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['std.strict'] = { + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + stdfs = { + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.2-2'] = { + { + arch = "rockspec" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.4-2'] = { + { + arch = "rockspec" + } + }, + ['0.4-3'] = { + { + arch = "rockspec" + } + }, + ['0.5-1'] = { + { + arch = "rockspec" + } + }, + ['0.6-1'] = { + { + arch = "rockspec" + } + }, + ['0.7-1'] = { + { + arch = "rockspec" + } + }, + ['0.8-1'] = { + { + arch = "rockspec" + } + } + }, + stdlib = { + ['17-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['20-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['24-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['25-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['27-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['28-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['29-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['29-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['30-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['31-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['32-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['33-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['34.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['35-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['36-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + }, + ['37-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['38-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['39-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4-2'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + }, + ['40-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['41.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['41.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['41.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['41.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['41.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['41.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + steentje = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['storm-mode.nvim'] = { + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['stormpath-nginx'] = { + ['1.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + stp = { + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + str = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + }, + ['0.1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + strbuffer = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + } + } + }, + streamcsv = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + strictness = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['string-capitalize'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['string-contains'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['string-format'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['string-format-all'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['string-random'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['string-replace'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['string-split'] = { + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['string-token'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['string-trim'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + } + }, + stringdistance = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + stringex = { + ['0.1.0-2'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.2-1'] = { + { + arch = "rockspec" + } + } + }, + stringifylua = { + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + stringio = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['stringizer-lua'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-10'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-0'] = { + { + arch = "rockspec" + } + } + }, + stringstream = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + stringy = { + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + striter = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + strong = { + ['1.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + strongstring = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-7'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-8'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + strsubst = { + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + struct = { + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['struct.lua'] = { + ['0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['structlog.nvim'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + strutil = { + ['1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + } + } + }, + stuart = { + ['2.0.5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['stuart-ml'] = { + ['2.0.5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['stuart-redis'] = { + ['0.2.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + submodsearcher = { + ['1-1'] = { + { + arch = "rockspec" + } + } + }, + subproc = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + subprocess = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['substitute.nvim'] = { + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + suit = { + ['0.1-1'] = { + { + arch = "rockspec" + } + } + }, + sunclass = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + supernova = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + suproxy = { + ['v0.6.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['surround.vim'] = { + ['2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + swapi = { + ['1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['sweetie.nvim'] = { + ['1.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + swef = { + ['1-2'] = { + { + arch = "rockspec" + } + }, + ['1-3'] = { + { + arch = "rockspec" + } + } + }, + switch = { + ['1.0-0'] = { + { + arch = "rockspec" + } + } + }, + symdiff = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + symmetric = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + sync = { + ['0.1.1-1'] = { + { + arch = "rockspec" + } + } + }, + syntaxhighlight = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + sys = { + ['1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + sysdetect = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + } + }, + t2t = { + ['0.1-1'] = { + { + arch = "rockspec" + } + } + }, + ['tabby.nvim'] = { + ['2.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.5.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['table-flatten'] = { + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + } + } + }, + table_dump = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + table_goodies = { + ['1.0-0'] = { + { + arch = "rockspec" + } + } + }, + table_new = { + ['1.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + tablesalt = { + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + tableshape = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + tableutils = { + ['1.21.07.27-1'] = { + { + arch = "rockspec" + } + }, + ['1.21.07.27-2'] = { + { + arch = "rockspec" + } + }, + ['1.21.07.27-3'] = { + { + arch = "rockspec" + } + } + }, + tableview = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + tablua = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + tabular = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + taggedcoro = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['taggedcoro-purelua'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + talents = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + talua = { + ['1.0.1-1'] = { + { + arch = "rockspec" + } + } + }, + tamale = { + ['1.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['tango-complete'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['tango-copas'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + tanguytestluarocks = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['tarantool-checks'] = { + ['3.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['tarantool-errors'] = { + ['2.2.1-1'] = { + { + arch = "rockspec" + } + } + }, + tarantoolapp = { + ['1.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + tbhss = { + ['0.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.10-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.11-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.12-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.16-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.17-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.18-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.19-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.20-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.21-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.22-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.24-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.25-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.26-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.27-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.29-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.30-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.32-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.34-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.35-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.36-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.39-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.40-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.6-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.7-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.8-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.9-1'] = { + { + arch = "rockspec" + } + } + }, + tblr = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + tcc = { + ['0.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + } + } + }, + tcheck = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['tcp-body-log'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + tdb = { + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['tdcli.lua'] = { + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + tdigest = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + teateatea = { + ['1.3-1'] = { + { + arch = "rockspec" + } + } + }, + tekui = { + ['1.05-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.07-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + telegraf = { + ['1.1.2-1'] = { + { + arch = "rockspec" + } + } + }, + telegram = { + ['0.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['telegram-bot-api'] = { + ['3.4.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.5.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.5.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.5.0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['telegram-bot-lua'] = { + ['1.0.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.0.1-0'] = { + { + arch = "rockspec" + } + }, + ['1.0.2-0'] = { + { + arch = "rockspec" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.3-0'] = { + { + arch = "rockspec" + } + }, + ['1.0.4-0'] = { + { + arch = "rockspec" + } + }, + ['1.1.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.10-0'] = { + { + arch = "rockspec" + } + }, + ['1.2-0'] = { + { + arch = "rockspec" + } + }, + ['1.2.1-0'] = { + { + arch = "rockspec" + } + }, + ['1.3-0'] = { + { + arch = "rockspec" + } + }, + ['1.3.1-0'] = { + { + arch = "rockspec" + } + }, + ['1.3.2-0'] = { + { + arch = "rockspec" + } + }, + ['1.4-0'] = { + { + arch = "rockspec" + } + }, + ['1.5-0'] = { + { + arch = "rockspec" + } + }, + ['1.6-0'] = { + { + arch = "rockspec" + } + }, + ['1.7-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9-0'] = { + { + arch = "rockspec" + } + }, + ['1.9-1'] = { + { + arch = "rockspec" + } + }, + ['2.0-0'] = { + { + arch = "rockspec" + } + } + }, + telegraph = { + ['0.1-1'] = { + { + arch = "rockspec" + } + } + }, + telescope = { + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['telescope-manix'] = { + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['telescope-zf-native.nvim'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['telescope.nvim'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['scm-1'] = { + { + arch = "rockspec" + } + } + }, + teliksandi = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + teml = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + template = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-3'] = { + { + arch = "rockspec" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.2-2'] = { + { + arch = "rockspec" + } + }, + ['0.2-3'] = { + { + arch = "rockspec" + } + } + }, + ['template-text'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + templet = { + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + } + }, + terebi = { + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + termfx = { + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + terminfo = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + terminfofont = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + tersen = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + tesla = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['test-lua-plugin'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['test-package'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['test-xml-json'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + testcase = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.10.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.11.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.11.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.5.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.5.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.5.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.5.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.5.5-1'] = { + { + arch = "rockspec" + } + }, + ['0.5.6-1'] = { + { + arch = "rockspec" + } + }, + ['0.5.7-1'] = { + { + arch = "rockspec" + } + }, + ['0.5.8-1'] = { + { + arch = "rockspec" + } + }, + ['0.5.9-1'] = { + { + arch = "rockspec" + } + }, + ['0.6.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.6.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.6.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.7.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.8.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.9.0-1'] = { + { + arch = "rockspec" + } + } + }, + testingunit = { + ['0.1-0'] = { + { + arch = "rockspec" + } + } + }, + testy = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-51'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-52'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-53'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + tethys = { + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + }, + ['2.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.3-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['textsubsuper.sile'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.1.1-1'] = { + { + arch = "rockspec" + } + } + }, + tgbot = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + tgen = { + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + } + } + }, + tglua = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + thcsv = { + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['themer.lua'] = { + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + themoonlitknot = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['threat-protection'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ticmap2tmx = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + tiktoken_core = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['time-clock'] = { + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.4.1-1'] = { + { + arch = "rockspec" + } + } + }, + ['time-sleep'] = { + ['0.2.1-1'] = { + { + arch = "rockspec" + } + } + }, + timerfd = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + timerwheel = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + tincan = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['tiny-ecs'] = { + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-7'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + tinyobj = { + ['0.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.0-1'] = { + { + arch = "rockspec" + } + } + }, + tl = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.10.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.10.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.11.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.11.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.11.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.12.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.13.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.13.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.13.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.14.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.14.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.15.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.15.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.15.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.15.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + tlcheck = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + } + } + }, + tlru = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['tls-mailer'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + tlua = { + ['1.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['tmg-cookie-auth-shim'] = { + ['0.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.2-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.1-2'] = { + { + arch = "rockspec" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.3-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.4-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.4-42'] = { + { + arch = "rockspec" + } + }, + ['1.0.4-43'] = { + { + arch = "rockspec" + } + }, + ['1.0.5-44'] = { + { + arch = "rockspec" + } + }, + ['1.0.5-45'] = { + { + arch = "rockspec" + } + }, + ['1.0.6-46'] = { + { + arch = "rockspec" + } + }, + ['1.0.7-47'] = { + { + arch = "rockspec" + } + }, + ['1.0.8-48'] = { + { + arch = "rockspec" + } + } + }, + tn = { + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['tnv-kong-plugin-api-transformer'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + toboolean = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + todo = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['todo-comments.nvim'] = { + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['toggleterm.nvim'] = { + ['2.10.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.11.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + tointeger = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['token-handler'] = { + ['0.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['2.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['2.0.1-2'] = { + { + arch = "rockspec" + } + } + }, + tokyocabinet = { + ['1.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['tokyonight.nvim'] = { + ['3.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + tomba = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-2'] = { + { + arch = "rockspec" + } + } + }, + toml = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['toml-edit'] = { + ['0.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['tonos-client'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.10.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.11.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.12.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.13.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.14.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.16.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.16.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.17.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.18.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.20.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.20.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.21.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.21.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.22.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.23.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.24.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.25.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.26.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.27.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.28.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.29.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.30.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.31.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.32.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.33.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.33.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.34.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.34.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.34.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.35.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.35.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.36.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.36.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.37.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.37.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.38.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.38.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.39.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.40.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.41.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.42.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.42.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.43.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.43.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.43.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.43.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.44.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.44.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.44.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.44.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.45.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.8.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['torch-buffer'] = { + ['0.6-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['torch-dataframe'] = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-0'] = { + { + arch = "rockspec" + } + }, + ['1.5-0'] = { + { + arch = "rockspec" + } + }, + ['1.6-0'] = { + { + arch = "rockspec" + } + }, + ['1.6-1'] = { + { + arch = "rockspec" + } + }, + ['1.7-0'] = { + { + arch = "rockspec" + } + } + }, + ['torch-dir-loader'] = { + ['0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['torch-graph-criterion'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['torch-hdf5-logger'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['torch-word-emb'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + toto = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + tpatterns = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + tpdu = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + tprint = { + ['0.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.3-2'] = { + { + arch = "rockspec" + } + }, + ['0.3-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['tqdm-lua'] = { + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + transducers = { + ['0.0-1'] = { + { + arch = "rockspec" + } + } + }, + treap = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + tree = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['tree-sitter-norg'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['tree-sitter-norg-meta'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['tree-sitter-orgmode'] = { + ['1.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + treelib = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['trouble.nvim'] = { + ['2.10.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.4.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.4.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + try = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['try-catch-finally'] = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['try-lua'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['tsc.nvim'] = { + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + tstrict = { + ['0.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['tsuru-rpaasv2'] = { + ['0.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ttodo = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + tulip = { + ['0.0.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.10-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.7-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.11-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.12-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.13-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.14-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.15-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.16-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.17-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['tulip-cli'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + tundrawolf = { + ['1.0.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.4-1'] = { + { + arch = "rockspec" + } + } + }, + tuple = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + } + }, + turbo = { + ['1.1-0'] = { + { + arch = "rockspec" + } + }, + ['1.1-3'] = { + { + arch = "rockspec" + } + }, + ['1.1-4'] = { + { + arch = "rockspec" + } + }, + ['1.1-5'] = { + { + arch = "rockspec" + } + }, + ['1.1-6'] = { + { + arch = "rockspec" + } + }, + ['2.0-0'] = { + { + arch = "rockspec" + } + }, + ['2.0-1'] = { + { + arch = "rockspec" + } + }, + ['2.0-2'] = { + { + arch = "rockspec" + } + }, + ['2.0-3'] = { + { + arch = "rockspec" + } + }, + ['2.0-4'] = { + { + arch = "rockspec" + } + }, + ['2.1-0'] = { + { + arch = "rockspec" + } + }, + ['2.1-1'] = { + { + arch = "rockspec" + } + }, + ['2.1-2'] = { + { + arch = "rockspec" + } + } + }, + ['turbo-fetch'] = { + ['0.1-1'] = { + { + arch = "rockspec" + } + } + }, + ['turbo-multipart-post'] = { + ['0.1-1'] = { + { + arch = "rockspec" + } + } + }, + ['turbo-redis'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['turbo-sqlite3'] = { + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['turbo-telegram'] = { + ['0.9-1'] = { + { + arch = "rockspec" + } + } + }, + tv = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['tw-lua-autocomplete'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + tween = { + ['2.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['2.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['2.1.1-1'] = { + { + arch = "rockspec" + } + } + }, + ['twilight.nvim'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + twitter = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + type = { + ['1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.1-0'] = { + { + arch = "rockspec" + } + } + }, + typecheck = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + typed = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + typedobject = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.4-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.6-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.6-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.6-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + typical = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['typst-lua'] = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8-2'] = { + { + arch = "rockspec" + } + } + }, + ['u-test'] = { + ['1.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['uap-lua'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + udev = { + ['0.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.2-0'] = { + { + arch = "rockspec" + } + } + }, + ufy = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ufylayout = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + uinput = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ulid = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + umdlua = { + ['1.0-2'] = { + { + arch = "rockspec" + } + } + }, + uname = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['unauthorized-handler'] = { + ['0.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.1.1-1'] = { + { + arch = "rockspec" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['2.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['2.0.1-10'] = { + { + arch = "rockspec" + } + }, + ['2.0.1-2'] = { + { + arch = "rockspec" + } + }, + ['2.0.1-9'] = { + { + arch = "rockspec" + } + }, + ['2.0.2-11'] = { + { + arch = "rockspec" + } + }, + ['2.0.2-12'] = { + { + arch = "rockspec" + } + }, + ['2.1.0-13'] = { + { + arch = "rockspec" + } + } + }, + underscore = { + ['0.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['underscore-dot-lua'] = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['uni-queue'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + unicorndecode = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['unimpaired.nvim'] = { + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['unimpaired.vim'] = { + ['2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + unpack = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + unreliablefs = { + ['0.2.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['unsplash-lua'] = { + ['0.5-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + unzip = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + upcache = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.10.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.11-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.13-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.3-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.7.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + upnpclient = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + upower_dbus = { + ['0.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['upstream-auth-hmac'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + } + } + }, + ['uriid1-lua-extensions'] = { + ['1.0-0'] = { + { + arch = "rockspec" + } + } + }, + url = { + ['1.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.2.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.2.2-1'] = { + { + arch = "rockspec" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.3.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.4.0-1'] = { + { + arch = "rockspec" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['2.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['url-filter'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + } + } + }, + urlencode = { + ['0.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + utf8 = { + ['1.1-0'] = { + { + arch = "rockspec" + } + }, + ['1.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + utf8fix = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + util = { + ['0-0'] = { + { + arch = "rockspec" + } + } + }, + uuid = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + uuidx = { + ['1.0-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + uulua = { + ['1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.1.1-1'] = { + { + arch = "rockspec" + } + } + }, + ['validate-args'] = { + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.4-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + validation = { + ['0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + valua = { + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.2-2'] = { + { + arch = "rockspec" + } + }, + ['0.2.2-3'] = { + { + arch = "rockspec" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + vanilla = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0.rc2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0.rc3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0.rc4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.rc1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + vararg = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.patch1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['vararg-lua'] = { + ['1.1.patch1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + vectorize = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['verify-token'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + verse = { + ['0.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + version = { + ['0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + versium = { + ['9.02.15-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + vert = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.3-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.3-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + vexilla_client = { + ['0.0.1-1'] = { + { + arch = "rockspec" + } + } + }, + ['vgit.nvim'] = { + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + vida = { + ['v0.1-10'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['v0.1-11'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['v0.1-12'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['v0.1-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['v0.1-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['v0.1-7'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['v0.1-8'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['v0.1-9'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + video_streaming = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + videur = { + ['0.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.1-1'] = { + { + arch = "rockspec" + } + } + }, + vinspect = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + virtes = { + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['virtual-schema-common-lua'] = { + ['1.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['2.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['2.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['2.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['2.3.0-1'] = { + { + arch = "rockspec" + } + }, + ['2.4.0-1'] = { + { + arch = "rockspec" + } + }, + ['2.4.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['3.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['4.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + vizdoom = { + ['1.1.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + vklib = { + ['1.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + vmake = { + ['1.2.0-2'] = { + { + arch = "rockspec" + } + }, + ['1.2.1-3'] = { + { + arch = "rockspec" + } + }, + ['1.3.0-5'] = { + { + arch = "rockspec" + } + }, + ['1.3.1-6'] = { + { + arch = "rockspec" + } + }, + ['1.4.0-7'] = { + { + arch = "rockspec" + } + }, + ['1.4.1-8'] = { + { + arch = "rockspec" + } + }, + ['1.4.2-9'] = { + { + arch = "rockspec" + } + }, + ['1.5.0-10'] = { + { + arch = "rockspec" + } + }, + ['1.5.1-11'] = { + { + arch = "rockspec" + } + }, + ['1.5.2-12'] = { + { + arch = "rockspec" + } + }, + ['1.5.3-13'] = { + { + arch = "rockspec" + } + }, + ['1.5.4-14'] = { + { + arch = "rockspec" + } + }, + ['1.6.0-15'] = { + { + arch = "rockspec" + } + }, + ['1.7.0-16'] = { + { + arch = "rockspec" + } + }, + ['2.0.0-17'] = { + { + arch = "rockspec" + } + }, + ['2.0.0-18'] = { + { + arch = "rockspec" + } + }, + ['2.0.1-19'] = { + { + arch = "rockspec" + } + }, + ['2.1.0-20'] = { + { + arch = "rockspec" + } + }, + ['3.0.0-21'] = { + { + arch = "rockspec" + } + }, + ['3.1.0-24'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + vmod = { + ['1.0.0-1'] = { + { + arch = "rockspec" + } + } + }, + void = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['vscode-mobdebug'] = { + ['0.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + vstruct = { + ['2.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + vusted = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.3.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + wagon = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + waitpid = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.3.2-1'] = { + { + arch = "rockspec" + } + } + }, + warn = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + warna = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + warp = { + ['0.1'] = { + { + arch = "rockspec" + } + }, + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + } + }, + ['2.4-0'] = { + { + arch = "rockspec" + } + } + }, + ['watch-the-new-mutants-online-free'] = { + ['1.0-0'] = { + { + arch = "rockspec" + } + } + }, + watcher = { + ['0.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + wax = { + ['0.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['latest-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['next-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['wayz-kafka-log'] = { + ['0.0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + wch = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + wcwidth = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + web = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['web-devicons'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['web-driver'] = { + ['0.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.6-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.7-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.8-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.9-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + web_sanitize = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + webrocks = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "macosx-x86" + }, { + arch = "src" + } + } + }, + websocket = { + ['1.0-1'] = { + { + arch = "rockspec" + } + } + }, + wespike = { + ['0.0-1'] = { + { + arch = "rockspec" + } + } + }, + wezterm_include_launch_items = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + whereami = { + ['1.0.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.0.1-0'] = { + { + arch = "rockspec" + } + }, + ['1.1.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.2.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.2.1-0'] = { + { + arch = "rockspec" + } + } + }, + whetlab = { + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + } + } + }, + which = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + ['which-key.nvim'] = { + ['1.6.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['wib-kong'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + wildcard_pattern = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + winapi = { + ['1.4.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + windcon = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['windline.nvim'] = { + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + winreg = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + wiola = { + ['0.10.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.11.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.12.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.12.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.13.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.13.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.13.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.13.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + wire = { + ['0.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + wires = { + ['1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['wisdom-gateway-oidc-plugin'] = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + wluaunit = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + wowcig = { + ['0.10-0'] = { + { + arch = "rockspec" + } + }, + ['0.11-0'] = { + { + arch = "rockspec" + } + }, + ['0.12-0'] = { + { + arch = "rockspec" + } + }, + ['0.12.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.12.2-0'] = { + { + arch = "rockspec" + } + }, + ['0.12.3-0'] = { + { + arch = "rockspec" + } + }, + ['0.12.4-0'] = { + { + arch = "rockspec" + } + }, + ['0.12.5-0'] = { + { + arch = "rockspec" + } + }, + ['0.13.0-0'] = { + { + arch = "rockspec" + } + }, + ['0.13.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.14.0-0'] = { + { + arch = "rockspec" + } + }, + ['0.14.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.14.2-0'] = { + { + arch = "rockspec" + } + }, + ['0.15.0-0'] = { + { + arch = "rockspec" + } + }, + ['0.15.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.16.0-0'] = { + { + arch = "rockspec" + } + }, + ['0.16.1-0'] = { + { + arch = "rockspec" + } + }, + ['0.16.2-0'] = { + { + arch = "rockspec" + } + }, + ['0.16.3-0'] = { + { + arch = "rockspec" + } + }, + ['0.16.4-0'] = { + { + arch = "rockspec" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.3-0'] = { + { + arch = "rockspec" + } + }, + ['0.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5-0'] = { + { + arch = "rockspec" + } + }, + ['0.6-0'] = { + { + arch = "rockspec" + } + }, + ['0.7-0'] = { + { + arch = "rockspec" + } + }, + ['0.8-0'] = { + { + arch = "rockspec" + } + }, + ['0.9-0'] = { + { + arch = "rockspec" + } + } + }, + wsapi = { + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + }, { + arch = "win32-x86" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + }, { + arch = "win32-x86" + } + }, + ['1.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + }, { + arch = "win32-x86" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + }, { + arch = "win32-x86" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + }, { + arch = "win32-x86" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + }, { + arch = "win32-x86" + } + }, + ['1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + }, { + arch = "win32-x86" + } + }, + ['1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['wsapi-fcgi'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + }, { + arch = "win32-x86" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + }, { + arch = "win32-x86" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + }, { + arch = "win32-x86" + } + }, + ['1.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + }, { + arch = "win32-x86" + } + }, + ['1.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + }, { + arch = "win32-x86" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + }, { + arch = "win32-x86" + } + }, + ['1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + }, { + arch = "win32-x86" + } + }, + ['1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['wsapi-openresty'] = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['wsapi-xavante'] = { + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + }, { + arch = "win32-x86" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + }, { + arch = "win32-x86" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + }, { + arch = "win32-x86" + } + }, + ['1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + }, { + arch = "win32-x86" + } + }, + ['1.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + wtf = { + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + } + } + }, + ['wtf-action-html_response'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['wtf-action-json_response'] = { + ['0.1-1'] = { + { + arch = "rockspec" + } + } + }, + ['wtf-action-log'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['wtf-action-redirect'] = { + ['0.1-1'] = { + { + arch = "rockspec" + } + } + }, + ['wtf-action-simple_response'] = { + ['0.1-1'] = { + { + arch = "rockspec" + } + } + }, + ['wtf-action-store'] = { + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + } + } + }, + ['wtf-demo'] = { + ['0.1-1'] = { + { + arch = "rockspec" + } + } + }, + ['wtf-fork-lua-resty-redis'] = { + ['0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + } + } + }, + ['wtf-fork-resty-mongol'] = { + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + } + } + }, + ['wtf-honeybot-core'] = { + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.5-1'] = { + { + arch = "rockspec" + } + }, + ['0.6-1'] = { + { + arch = "rockspec" + } + } + }, + ['wtf-plugin-honeybot-cve_2019_6340'] = { + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + } + } + }, + ['wtf-plugin-honeybot-fake-asa'] = { + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.5-1'] = { + { + arch = "rockspec" + } + }, + ['0.6-1'] = { + { + arch = "rockspec" + } + }, + ['0.7-1'] = { + { + arch = "rockspec" + } + } + }, + ['wtf-plugin-honeybot-fake-asa-data'] = { + ['0.1-1'] = { + { + arch = "rockspec" + } + } + }, + ['wtf-plugin-honeybot-fake-drupal'] = { + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.5-1'] = { + { + arch = "rockspec" + } + }, + ['0.6-1'] = { + { + arch = "rockspec" + } + } + }, + ['wtf-plugin-honeybot-fake-drupal-data'] = { + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + } + } + }, + ['wtf-plugin-honeybot-fake-owa'] = { + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + } + } + }, + ['wtf-plugin-honeybot-fake-owa-data'] = { + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + } + } + }, + ['wtf-plugin-honeybot-fake-sonicwall'] = { + ['0.1-1'] = { + { + arch = "rockspec" + } + } + }, + ['wtf-plugin-honeybot-fake-sonicwall-data'] = { + ['0.1-1'] = { + { + arch = "rockspec" + } + } + }, + ['wtf-plugin-honeybot-fake-welcome'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + } + } + }, + ['wtf-plugin-honeybot-fake-welcome-data'] = { + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['wtf-plugin-honeybot-fake-wordpress'] = { + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + } + }, + ['0.5-1'] = { + { + arch = "rockspec" + } + }, + ['0.6-1'] = { + { + arch = "rockspec" + } + }, + ['0.7-1'] = { + { + arch = "rockspec" + } + } + }, + ['wtf-plugin-honeybot-fake-wordpress-data'] = { + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + } + } + }, + ['wtf-plugin-honeybot-sandbox'] = { + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + } + } + }, + ['wtf-plugin-honeybot-troll_die'] = { + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + } + }, + ['0.2-2'] = { + { + arch = "rockspec" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + } + } + }, + ['wtf-storage-mongodb'] = { + ['0.1-1'] = { + { + arch = "rockspec" + } + } + }, + ['wtf-storage-redis'] = { + ['0.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + } + } + }, + ['x-lua-api-gateway-aws'] = { + ['1.7.1-0'] = { + { + arch = "rockspec" + } + } + }, + xavante = { + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + }, + ['2.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + }, + ['2.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + }, + ['2.2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + } + }, + ['2.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.4.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + xcomposer = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['3.2.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['xcq-subprocess'] = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + xctrl = { + ['20101026-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + xerceslua = { + ['1.0-0'] = { + { + arch = "rockspec" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + } + } + }, + xhmoon = { + ['1.0.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['xls-read'] = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + xlsxwriter = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + xlua = { + ['1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + xml = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['xml-json'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + } + } + }, + xml2lua = { + ['1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.3-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.4-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.5-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.6-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['v1.5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + xml_tree = { + ['1.0-1'] = { + { + arch = "rockspec" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + } + } + }, + xmllpegparser = { + ['2.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.1-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + xmlparser = { + ['2.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['2.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + xmlua = { + ['0.9.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.6-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.7-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.8-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.9-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.3-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.4-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.5-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.6-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.7-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.8-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.9-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.0-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.2.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + xpcall = { + ['0.2.0-1'] = { + { + arch = "rockspec" + } + } + }, + xpgsql = { + ['0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + xssfilter = { + ['10.12.28-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['8.04.20-1'] = { + { + arch = "rockspec" + }, { + arch = "all" + }, { + arch = "src" + } + } + }, + xsys = { + ['1.0.2-1'] = { + { + arch = "rockspec" + } + } + }, + xtype = { + ['1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + xxhash = { + ['v1.0-1'] = { + { + arch = "rockspec" + } + } + }, + xxtea = { + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.1-1'] = { + { + arch = "rockspec" + } + }, + ['1.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + yaml = { + ['0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['1.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + yamlscript = { + ['0.0.16-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + yamlstar = { + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['yanky.nvim'] = { + ['2.0.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['yazi.nvim'] = { + ['master-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['ydauth-test'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.0-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + yoke = { + ['0.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-3'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-4'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-6'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-7'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-8'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-9'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.2-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['yoke-file'] = { + ['0.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['yoke-imdb'] = { + ['0.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.0.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['yoke-mail'] = { + ['0.0.1-0'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + yue = { + ['0.0.1'] = { + { + arch = "rockspec" + } + } + }, + yuescript = { + ['0.10.11-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.10.14-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.10.15-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.10.23-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.10.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.10.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.10.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.11.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.12.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.13.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.13.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.14.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.14.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.14.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.14.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.15.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.15.13-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.15.14-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.15.18-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.15.20-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.15.21-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.15.23-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.15.23-5'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.15.25-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.15.25-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.15.26-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.15.29-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.15.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.15.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.15.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.15.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.16.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.16.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.16.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.16.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.16.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.16.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.17.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.17.10-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.17.12-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.17.14-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.17.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.17.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.17.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.17.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.18.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.19.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.19.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.19.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.19.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.19.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.20.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.20.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.20.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.20.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.20.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.20.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.21.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.21.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.21.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.21.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.22.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.22.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.22.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.22.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.23.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.23.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.23.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.23.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.23.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.23.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.6.9-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.14-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.8-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.8.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.5-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.9.6-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + yyjson = { + ['0.4.0-1'] = { + { + arch = "rockspec" + } + }, + ['0.5.1-1'] = { + { + arch = "rockspec" + } + }, + ['0.8.0-1'] = { + { + arch = "rockspec" + } + } + }, + zee = { + ['0.7-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7-2'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.7.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + ['zen-mode.nvim'] = { + ['1.3.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + }, + zenroom = { + ['0.9-1'] = { + { + arch = "rockspec" + } + }, + ['0.9-2'] = { + { + arch = "rockspec" + } + }, + ['0.9-3'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-analyzeall'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-autodelimiter'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-autodelimitersurroundselection'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-autoindent'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-autostartdebug'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-blockcursor'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-clippy'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-cloneview'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-closetabsleftright'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-colourpicker'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-cuberite'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-documentmap'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-edgemark'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-editorautofocusbymouse'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-eris'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-escapetoquit'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-extregister'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-filetreeoneclick'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-hidemenu'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-hidemousewhentyping'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-highlightselected'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-launchtime'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-localhelpmenu'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-luadist'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-luarocks'] = { + ['0.4.1-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-maketoolbar'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-markchar'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-moonscript'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-moonscriptlove'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-moveline'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-noblinkcursor'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-openimagefile'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-openra'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-openwithdefault'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-outputclone'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-outputtofile'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-overtype'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-projectsettings'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-realtimewatch'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-redbean'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-redis'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-referencepanel'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-refreshproject'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-remoteedit'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-savealleveryxrunning'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-saveonappswitch'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-saveonfocuslost'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-screenshot'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-shebangtype'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-showluareference'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-showreference'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-striptrailingwhitespace'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-syntaxcheckontype'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-tasks'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-tildemenu'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-todo'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-todoall'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-torch7'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-uniquetabname'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-urho3d'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-verbosesaving'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-wordcount'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-wordwrapmenu'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zerobranepackage-xml'] = { + ['0.1.0-0'] = { + { + arch = "rockspec" + } + } + }, + ['zhangsaizz-skywalking-nginx-lua'] = { + ['master-0'] = { + { + arch = "rockspec" + } + } + }, + zipwriter = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.1-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.2-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.3-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.4-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + }, + ['0.1.5-1'] = { + { + arch = "rockspec" + } + } + }, + ['zk-nvim'] = { + ['0.1.0-1'] = { + { + arch = "rockspec" + }, { + arch = "src" + } + } + } +} From bc7bfb5d361cbb95937876eb5171bb78c1f6b4ee Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 25 Jun 2024 15:42:29 +0000 Subject: [PATCH 103/342] chore(build): auto-generate rockspec mappings --- lua/lazy/community/rocks.lua | 883 ++++++++++++++--------------------- 1 file changed, 358 insertions(+), 525 deletions(-) diff --git a/lua/lazy/community/rocks.lua b/lua/lazy/community/rocks.lua index 1b7a361..a16b088 100644 --- a/lua/lazy/community/rocks.lua +++ b/lua/lazy/community/rocks.lua @@ -1,873 +1,706 @@ -return { - { +return +{ { name = "15puzzle.nvim", url = "NStefan002/15puzzle.nvim", - version = "1.4.1-1", - }, - { + version = "1.4.1-1" + }, { + name = "2048.nvim", + url = "NStefan002/2048.nvim", + version = "2.8.2-1" + }, { + name = "adopure.nvim", + url = "Willem-J-an/adopure.nvim", + version = "1.1.0-1" + }, { name = "aerial.nvim", url = "stevearc/aerial.nvim", - version = "1.7.0-1", - }, - { + version = "1.7.0-1" + }, { name = "ai.nvim", url = "S1M0N38/ai.nvim", - version = "0.1.0-1", - }, - { + version = "0.1.0-1" + }, { name = "auto-hlsearch.nvim", url = "asiryk/auto-hlsearch.nvim", - version = "1.1.0-1", - }, - { + version = "1.1.0-1" + }, { name = "better-escape.nvim", url = "max397574/better-escape.nvim", - version = "1.0.0-1", - }, - { + version = "1.0.0-1" + }, { name = "bufferline.nvim", url = "akinsho/bufferline.nvim", - version = "4.6.1-1", - }, - { + version = "4.6.1-1" + }, { name = "ccc.nvim", url = "uga-rosa/ccc.nvim", - version = "1.6.0-1", - }, - { + version = "1.6.0-1" + }, { name = "ci-template.nvim", url = "linrongbin16/ci-template.nvim", - version = "8.1.0-1", - }, - { + version = "8.1.0-1" + }, { name = "colorbox.nvim", url = "linrongbin16/colorbox.nvim", - version = "3.1.0-1", - }, - { + version = "3.1.0-1" + }, { name = "colorbuddy.nvim", url = "tjdevries/colorbuddy.nvim", - version = "1.0.0-1", - }, - { + version = "1.0.0-1" + }, { name = "colortils.nvim", url = "nvim-colortils/colortils.nvim", - version = "1.1.0-1", - }, - { + version = "1.1.0-1" + }, { name = "commander.nvim", url = "FeiyouG/commander.nvim", - version = "0.2.0-1", - }, - { + version = "0.2.0-1" + }, { name = "comment-box.nvim", url = "LudoPinelli/comment-box.nvim", - version = "1.0.2-1", - }, - { + version = "1.0.2-1" + }, { name = "comment.nvim", url = "numToStr/Comment.nvim", - version = "0.8.0-1", - }, - { + version = "0.8.0-1" + }, { name = "commons.nvim", url = "linrongbin16/commons.nvim", - version = "18.0.0-1", - }, - { + version = "18.0.0-1" + }, { name = "conform.nvim", url = "stevearc/conform.nvim", - version = "6.0.0-1", - }, - { + version = "6.0.0-1" + }, { name = "cybu.nvim", url = "ghillb/cybu.nvim", - version = "1.0-1", - }, - { + version = "1.0-1" + }, { name = "daylight.nvim", url = "NTBBloodbath/daylight.nvim", - version = "1.1.0-1", - }, - { + version = "1.1.0-1" + }, { name = "deadcolumn.nvim", url = "Bekaboo/deadcolumn.nvim", - version = "1.0.0-1", - }, - { + version = "1.0.0-1" + }, { name = "decipher.nvim", url = "MisanthropicBit/decipher.nvim", - version = "1.0.1-1", - }, - { + version = "1.0.1-1" + }, { name = "detour.nvim", url = "carbon-steel/detour.nvim", - version = "1.4.0-1", - }, - { + version = "1.4.0-1" + }, { name = "dial.nvim", url = "monaqa/dial.nvim", - version = "0.4.0-1", - }, - { + version = "0.4.0-1" + }, { name = "distant.nvim", url = "chipsenkbeil/distant.nvim", - version = "0.1.2-1", - }, - { + version = "0.1.2-1" + }, { name = "donut.nvim", url = "NStefan002/donut.nvim", - version = "2.1.0-1", - }, - { + version = "2.1.0-1" + }, { name = "dressing.nvim", url = "stevearc/dressing.nvim", - version = "2.2.2-1", - }, - { + version = "2.2.2-1" + }, { name = "dropbar.nvim", url = "Bekaboo/dropbar.nvim", - version = "8.4.0-1", - }, - { + version = "8.4.0-1" + }, { name = "duck.nvim", url = "tamton-aquib/duck.nvim", - version = "main-1", - }, - { + version = "main-1" + }, { name = "easypick.nvim", url = "axkirillov/easypick.nvim", - version = "0.6.0-1", - }, - { + version = "0.6.0-1" + }, { name = "edgy.nvim", url = "folke/edgy.nvim", - version = "1.9.1-1", - }, - { + version = "1.9.1-1" + }, { name = "elixir-tools.nvim", url = "elixir-tools/elixir-tools.nvim", - version = "0.14.3-1", - }, - { + version = "0.14.3-1" + }, { name = "feline.nvim", url = "freddiehaddad/feline.nvim", - version = "1.6.2-1", - }, - { + version = "1.6.2-1" + }, { name = "fidget.nvim", url = "j-hui/fidget.nvim", - version = "1.4.1-1", - }, - { + version = "1.4.1-1" + }, { name = "flash.nvim", url = "folke/flash.nvim", - version = "1.18.3-1", - }, - { + version = "1.18.3-1" + }, { name = "flatten.nvim", url = "willothy/flatten.nvim", - version = "0.5.1-1", - }, - { + version = "0.5.1-1" + }, { name = "flutter-tools.nvim", url = "akinsho/flutter-tools.nvim", - version = "1.10.0-1", - }, - { + version = "1.10.0-1" + }, { name = "focus.nvim", url = "nvim-focus/focus.nvim", - version = "1.0.2-1", - }, - { + version = "1.0.2-1" + }, { name = "freeze-code.nvim", url = "AlejandroSuero/freeze-code.nvim", - version = "0.2.0-1", - }, - { + version = "0.2.0-1" + }, { name = "fugit2.nvim", url = "SuperBo/fugit2.nvim", - version = "0.2.0-1", - }, - { + version = "0.2.0-1" + }, { name = "funnyfiles.nvim", url = "aikooo7/funnyfiles.nvim", - version = "1.0.1-1", - }, - { + version = "1.0.1-1" + }, { name = "fzfx.nvim", url = "linrongbin16/fzfx.nvim", - version = "6.4.0-1", - }, - { + version = "6.4.0-1" + }, { name = "galileo.nvim", url = "S1M0N38/galileo.nvim", - version = "0.0.2-1", - }, - { + version = "0.0.2-1" + }, { name = "gentags.nvim", url = "linrongbin16/gentags.nvim", - version = "3.0.2-1", - }, - { + version = "3.0.2-1" + }, { name = "git-worktree.nvim", url = "polarmutex/git-worktree.nvim", - version = "1.0.0-1", - }, - { + version = "1.0.0-1" + }, { name = "github-nvim-theme", url = "projekt0n/github-nvim-theme", - version = "1.0.2-1", - }, - { + version = "1.0.2-1" + }, { name = "gitlinker.nvim", url = "linrongbin16/gitlinker.nvim", - version = "4.13.1-1", - }, - { + version = "4.13.1-1" + }, { name = "gitsigns.nvim", url = "lewis6991/gitsigns.nvim", - version = "scm-1", - }, - { + version = "scm-1" + }, { name = "glow.nvim", url = "ellisonleao/glow.nvim", - version = "0.2.0-1", - }, - { + version = "0.2.0-1" + }, { name = "go.nvim", url = "ray-x/go.nvim", - version = "0.2.1-1", - }, - { + version = "0.2.1-1" + }, { name = "godo.nvim", url = "arthuradolfo/godo.nvim", - version = "1.1.0-0", - }, - { + version = "1.1.0-0" + }, { name = "grapple.nvim", url = "cbochs/grapple.nvim", - version = "0.30.0-1", - }, - { + version = "0.30.0-1" + }, { name = "gruvbox.nvim", url = "ellisonleao/gruvbox.nvim", - version = "2.0.0-1", - }, - { + version = "2.0.0-1" + }, { name = "haskell-snippets.nvim", url = "mrcjkb/haskell-snippets.nvim", - version = "1.4.4-1", - }, - { + version = "1.4.4-1" + }, { name = "haskell-tools.nvim", url = "mrcjkb/haskell-tools.nvim", - version = "3.1.10-1", - }, - { + version = "3.1.10-1" + }, { name = "headlines.nvim", url = "lukas-reineke/headlines.nvim", - version = "4.0.1-1", - }, - { + version = "4.0.1-1" + }, { name = "heirline.nvim", url = "rebelot/heirline.nvim", - version = "1.0.6-1", - }, - { + version = "1.0.6-1" + }, { name = "hlchunk.nvim", url = "shellRaining/hlchunk.nvim", - version = "1.1.0-1", - }, - { + version = "1.1.0-1" + }, { name = "hotpot.nvim", url = "rktjmp/hotpot.nvim", - version = "0.12.1-1", - }, - { + version = "0.12.1-1" + }, { name = "hydra.nvim", url = "nvimtools/hydra.nvim", - version = "1.0.2-1", - }, - { + version = "1.0.2-1" + }, { name = "image.nvim", url = "3rd/image.nvim", - version = "1.3.0-1", - }, - { + version = "1.3.0-1" + }, { name = "incline.nvim", url = "b0o/incline.nvim", - version = "0.0.1-1", - }, - { + version = "0.0.1-1" + }, { name = "indent-blankline.nvim", url = "lukas-reineke/indent-blankline.nvim", - version = "3.6.3-1", - }, - { + version = "3.6.3-1" + }, { name = "kai.nvim", url = "Kamilcuk/kai.nvim", - version = "0.0.6-1", - }, - { + version = "0.0.6-1" + }, { name = "lazy.nvim", url = "folke/lazy.nvim", - version = "11.2.1-1", - }, - { + version = "11.2.1-1" + }, { name = "leetcode.nvim", url = "kawre/leetcode.nvim", - version = "0.2.0-1", - }, - { + version = "0.2.0-1" + }, { name = "legendary.nvim", url = "mrjones2014/legendary.nvim", - version = "2.13.11-1", - }, - { + version = "2.13.11-1" + }, { name = "live-command.nvim", url = "smjonas/live-command.nvim", - version = "1.2.1-1", - }, - { + version = "1.2.1-1" + }, { name = "logging.nvim", url = "NTBBloodbath/logging.nvim", - version = "1.1.0-1", - }, - { + version = "1.1.0-1" + }, { name = "love2d.nvim", url = "S1M0N38/love2d.nvim", - version = "0.2-1", - }, - { + version = "0.2-1" + }, { name = "lsp-progress.nvim", url = "linrongbin16/lsp-progress.nvim", - version = "1.0.12-1", - }, - { + version = "1.0.12-1" + }, { name = "lsp_signature.nvim", url = "ray-x/lsp_signature.nvim", - version = "0.3.1-1", - }, - { + version = "0.3.1-1" + }, { name = "lua-obfuscator.nvim", url = "git+ssh://git@github.com/kdssoftware/lua-obfuscator.nvim.git", - version = "1.0.1-1", - }, - { + version = "1.0.1-1" + }, { name = "lua-utils.nvim", url = "nvim-neorg/lua-utils.nvim", - version = "1.0.2-1", - }, - { + version = "1.0.2-1" + }, { name = "mapx.nvim", url = "b0o/mapx.nvim", - version = "0.2.1-1", - }, - { + version = "0.2.1-1" + }, { name = "mason-lspconfig.nvim", url = "williamboman/mason-lspconfig.nvim", - version = "1.29.0-1", - }, - { + version = "1.29.0-1" + }, { name = "mason-nvim-dap.nvim", url = "jay-babu/mason-nvim-dap.nvim", - version = "2.3.0-1", - }, - { + version = "2.3.0-1" + }, { name = "mason.nvim", url = "williamboman/mason.nvim", - version = "1.10.0-1", - }, - { + version = "1.10.0-1" + }, { name = "mini.nvim", url = "echasnovski/mini.nvim", - version = "0.9.0-1", - }, - { + version = "0.9.0-1" + }, { name = "mkdnflow.nvim", url = "jakewvincent/mkdnflow.nvim", - version = "1.2.0-1", - }, - { + version = "1.2.0-1" + }, { name = "move.nvim", url = "fedepujol/move.nvim", - version = "2.0.0-1", - }, - { + version = "2.0.0-1" + }, { name = "multicursors.nvim", url = "smoka7/multicursors.nvim", - version = "1.0.0-1", - }, - { + version = "1.0.0-1" + }, { name = "my-awesome-plugin.nvim", url = "S1M0N38/my-awesome-plugin.nvim", - version = "0.1.1-1", - }, - { + version = "0.1.1-1" + }, { name = "navigator.nvim", url = "numToStr/Navigator.nvim", - version = "0.6-1", - }, - { + version = "0.6-1" + }, { name = "neo-tree.nvim", url = "nvim-neo-tree/neo-tree.nvim", - version = "3.26-1", - }, - { + version = "3.26-1" + }, { name = "neoconf.nvim", url = "folke/neoconf.nvim", - version = "1.2.2-1", - }, - { + version = "1.2.2-1" + }, { name = "neodev.nvim", url = "folke/neodev.nvim", - version = "3.0.0-1", - }, - { + version = "3.0.0-1" + }, { name = "neoscroll.nvim", url = "karb94/neoscroll.nvim", - version = "0.2.0-1", - }, - { + version = "0.2.0-1" + }, { name = "nightfox.nvim", url = "EdenEast/nightfox.nvim", - version = "3.9.3-1", - }, - { + version = "3.9.3-1" + }, { name = "no-neck-pain.nvim", url = "shortcuts/no-neck-pain.nvim", - version = "1.14.0-1", - }, - { + version = "1.14.0-1" + }, { name = "noice.nvim", url = "folke/noice.nvim", - version = "4.3.0-1", - }, - { + version = "4.3.0-1" + }, { name = "npackages.nvim", url = "diegofigs/npackages.nvim", - version = "0.1.0-1", - }, - { + version = "0.1.0-1" + }, { name = "nui-components.nvim", url = "grapp-dev/nui-components.nvim", - version = "1.5.2-1", - }, - { + version = "1.5.2-1" + }, { name = "nui.nvim", url = "git+https://github.com/MunifTanjim/nui.nvim.git", - version = "0.3.0-1", - }, - { + version = "0.3.0-1" + }, { name = "nvim-client", url = "neovim/lua-client", - version = "0.2.4-1", - }, - { + version = "0.2.4-1" + }, { name = "nvim-client-proxy", url = "hjdivad/nvim-client-proxy", - version = "0.1.0-1", - }, - { + version = "0.1.0-1" + }, { name = "nvim-cmp", url = "hrsh7th/nvim-cmp", - version = "0.0.1-2", - }, - { + version = "0.0.1-2" + }, { name = "nvim-cokeline", url = "willothy/nvim-cokeline", - version = "0.4.0-1", - }, - { + version = "0.4.0-1" + }, { name = "nvim-dap", url = "mfussenegger/nvim-dap", - version = "0.8.0-1", - }, - { + version = "0.8.0-1" + }, { name = "nvim-dap-ui", url = "rcarriga/nvim-dap-ui", - version = "4.0.0-1", - }, - { + version = "4.0.0-1" + }, { name = "nvim-dbee", url = "kndndrj/nvim-dbee", - version = "0.1.6-1", - }, - { + version = "0.1.6-1" + }, { name = "nvim-dev-container", url = "esensar/nvim-dev-container", - version = "0.2.0-1", - }, - { + version = "0.2.0-1" + }, { name = "nvim-java", url = "nvim-java/nvim-java", - version = "1.0.0-1", - }, - { + version = "1.0.0-1" + }, { name = "nvim-java-core", url = "nvim-java/nvim-java-core", - version = "1.0.0-1", - }, - { + version = "1.0.0-1" + }, { name = "nvim-java-dap", url = "nvim-java/nvim-java-dap", - version = "1.0.0-1", - }, - { + version = "1.0.0-1" + }, { name = "nvim-jdtls", url = "mfussenegger/nvim-jdtls", - version = "0.2.0-1", - }, - { + version = "0.2.0-1" + }, { name = "nvim-jqx", url = "gennaro-tedesco/nvim-jqx", - version = "0.1.4-1", - }, - { + version = "0.1.4-1" + }, { name = "nvim-lastplace", url = "mrcjkb/nvim-lastplace", - version = "1.0.0-1", - }, - { + version = "1.0.0-1" + }, { name = "nvim-lightbulb", url = "kosayoda/nvim-lightbulb", - version = "1.0.0-1", - }, - { + version = "1.0.0-1" + }, { name = "nvim-lspconfig", url = "neovim/nvim-lspconfig", - version = "0.1.8-1", - }, - { + version = "0.1.8-1" + }, { name = "nvim-metals", url = "scalameta/nvim-metals", - version = "0.9.x-1", - }, - { + version = "0.9.x-1" + }, { name = "nvim-nio", url = "nvim-neotest/nvim-nio", - version = "1.9.4-1", - }, - { + version = "1.9.4-1" + }, { name = "nvim-notify", url = "rcarriga/nvim-notify", - version = "3.13.5-1", - }, - { + version = "3.13.5-1" + }, { name = "nvim-parinfer", url = "gpanders/nvim-parinfer", - version = "1.2.0-1", - }, - { + version = "1.2.0-1" + }, { name = "nvim-peekup", url = "gennaro-tedesco/nvim-peekup", - version = "0.1.1-1", - }, - { + version = "0.1.1-1" + }, { name = "nvim-possession", url = "gennaro-tedesco/nvim-possession", - version = "0.0.13-1", - }, - { + version = "0.0.13-1" + }, { name = "nvim-scrollview", url = "dstein64/nvim-scrollview", - version = "5.1.0-1", - }, - { + version = "5.1.0-1" + }, { name = "nvim-smuggler", url = "Klafyvel/nvim-smuggler", - version = "main-1", - }, - { + version = "main-1" + }, { name = "nvim-snippy", url = "dcampos/nvim-snippy", - version = "1.0.0-1", - }, - { + version = "1.0.0-1" + }, { name = "nvim-surround", url = "kylechui/nvim-surround", - version = "2.1.5-1", - }, - { + version = "2.1.5-1" + }, { name = "nvim-tree.lua", url = "nvim-tree/nvim-tree.lua", - version = "1.4.0-1", - }, - { + version = "1.4.0-1" + }, { name = "nvim-treesitter-legacy-api", url = "nvim-treesitter/nvim-treesitter", - version = "0.9.2-1", - }, - { + version = "0.9.2-1" + }, { name = "nvim-ufo", url = "kevinhwang91/nvim-ufo", - version = "1.4.0-1", - }, - { + version = "1.4.0-1" + }, { name = "nvim-web-devicons", url = "nvim-tree/nvim-web-devicons", - version = "0.100-1", - }, - { + version = "0.100-1" + }, { name = "obsidian.nvim", url = "epwalsh/obsidian.nvim", - version = "3.8.0-1", - }, - { + version = "3.8.0-1" + }, { name = "oil.nvim", url = "stevearc/oil.nvim", - version = "2.10.0-1", - }, - { + version = "2.10.0-1" + }, { name = "onedarkpro.nvim", url = "olimorris/onedarkpro.nvim", - version = "0.8.0-1", - }, - { + version = "0.8.0-1" + }, { name = "onenord.nvim", url = "rmehri01/onenord.nvim", - version = "0.7.0-1", - }, - { + version = "0.7.0-1" + }, { name = "otter.nvim", url = "jmbuhr/otter.nvim", - version = "1.15.1-1", - }, - { + version = "1.15.1-1" + }, { name = "overseer.nvim", url = "stevearc/overseer.nvim", - version = "1.4.0-1", - }, - { + version = "1.4.0-1" + }, { name = "oz.nvim", url = "luxluth/oz.nvim", - version = "0.0.3-1", - }, - { + version = "0.0.3-1" + }, { name = "package-info.nvim", url = "vuki656/package-info.nvim", - version = "2.0-1", - }, - { + version = "2.0-1" + }, { name = "paperplanes.nvim", url = "rktjmp/paperplanes.nvim", - version = "0.1.6-1", - }, - { + version = "0.1.6-1" + }, { name = "papis.nvim", url = "jghauser/papis.nvim", - version = "0.5.1-1", - }, - { + version = "0.5.1-1" + }, { name = "paq-nvim", url = "savq/paq-nvim", - version = "2.0.0-1", - }, - { + version = "2.0.0-1" + }, { name = "pathlib.nvim", url = "pysan3/pathlib.nvim", - version = "2.2.2-1", - }, - { + version = "2.2.2-1" + }, { name = "persistence.nvim", url = "folke/persistence.nvim", - version = "2.0.0-1", - }, - { + version = "2.0.0-1" + }, { name = "plenary.nvim", url = "nvim-lua/plenary.nvim", - version = "0.1.4-1", - }, - { + version = "0.1.4-1" + }, { name = "pretty-fold.nvim", url = "anuvyklack/pretty-fold.nvim", - version = "3.0-1", - }, - { + version = "3.0-1" + }, { name = "rainbow-delimiters.nvim", url = "HiPhish/rainbow-delimiters.nvim", - version = "0.4.0-1", - }, - { + version = "0.4.0-1" + }, { name = "renamer.nvim", url = "filipdutescu/renamer.nvim", - version = "5.1.0-1", - }, - { + version = "5.1.0-1" + }, { name = "rest.nvim", url = "rest-nvim/rest.nvim", - version = "2.0.1-1", - }, - { + version = "2.0.1-1" + }, { name = "rocks-config.nvim", url = "nvim-neorocks/rocks-config.nvim", - version = "2.0.1-1", - }, - { + version = "2.1.0-1" + }, { name = "rocks-dev.nvim", url = "nvim-neorocks/rocks-dev.nvim", - version = "1.2.3-1", - }, - { + version = "1.2.3-1" + }, { name = "rocks-git.nvim", url = "nvim-neorocks/rocks-git.nvim", - version = "1.5.1-1", - }, - { + version = "1.5.1-1" + }, { name = "rocks.nvim", url = "nvim-neorocks/rocks.nvim", - version = "2.32.0-1", - }, - { + version = "2.32.0-1" + }, { name = "rtp.nvim", url = "nvim-neorocks/rtp.nvim", - version = "1.0.0-1", - }, - { + version = "1.0.0-1" + }, { name = "rustaceanvim", url = "mrcjkb/rustaceanvim", - version = "4.25.1-1", - }, - { + version = "4.25.1-1" + }, { name = "schemastore.nvim", url = "b0o/SchemaStore.nvim", - version = "0.2.0-1", - }, - { + version = "0.2.0-1" + }, { name = "screenkey.nvim", url = "NStefan002/screenkey.nvim", - version = "2.1.0-1", - }, - { + version = "2.1.0-1" + }, { name = "scrollbar.nvim", url = "Xuyuanp/scrollbar.nvim", - version = "0.4.0-1", - }, - { + version = "0.4.0-1" + }, { name = "session.nvim", url = "Kibadda/session.nvim", - version = "2.0.0-1", - }, - { + version = "2.0.0-1" + }, { name = "sg.nvim", url = "sourcegraph/sg.nvim", - version = "1.1.0-1", - }, - { + version = "1.1.0-1" + }, { name = "smart-splits.nvim", url = "mrjones2014/smart-splits.nvim", - version = "1.5.0-1", - }, - { + version = "1.5.0-1" + }, { name = "squirrel.nvim", url = "xiaoshihou514/squirrel.nvim", - version = "1.0.0-1", - }, - { + version = "1.0.0-1" + }, { name = "storm-mode.nvim", url = "HoppenR/storm-mode.nvim", - version = "1.2.0-1", - }, - { + version = "1.2.0-1" + }, { name = "structlog.nvim", url = "git+ssh://git@github.com/Tastyep/structlog.nvim.git", - version = "0.1-1", - }, - { + version = "0.1-1" + }, { name = "substitute.nvim", url = "gbprod/substitute.nvim", - version = "2.0.0-1", - }, - { + version = "2.0.0-1" + }, { name = "sweetie.nvim", url = "NTBBloodbath/sweetie.nvim", - version = "3.1.1-1", - }, - { + version = "3.1.1-1" + }, { name = "tabby.nvim", url = "nanozuki/tabby.nvim", - version = "2.5.1-1", - }, - { + version = "2.5.1-1" + }, { name = "telescope-zf-native.nvim", url = "natecraddock/telescope-zf-native.nvim", - version = "1.0.0-1", - }, - { + version = "1.0.0-1" + }, { name = "telescope.nvim", url = "nvim-telescope/telescope.nvim", - version = "0.1.8-1", - }, - { + version = "0.1.8-1" + }, { name = "todo-comments.nvim", url = "folke/todo-comments.nvim", - version = "1.2.0-1", - }, - { + version = "1.2.0-1" + }, { name = "toggleterm.nvim", url = "akinsho/toggleterm.nvim", - version = "2.11.0-1", - }, - { + version = "2.11.0-1" + }, { name = "tokyonight.nvim", url = "folke/tokyonight.nvim", - version = "3.0.1-1", - }, - { + version = "3.0.1-1" + }, { name = "trouble.nvim", url = "folke/trouble.nvim", - version = "3.4.3-1", - }, - { + version = "3.4.3-1" + }, { name = "tsc.nvim", url = "dmmulroy/tsc.nvim", - version = "2.3.0-1", - }, - { + version = "2.3.0-1" + }, { name = "twilight.nvim", url = "folke/twilight.nvim", - version = "1.0.0-1", - }, - { + version = "1.0.0-1" + }, { name = "unimpaired.nvim", url = "tummetott/unimpaired.nvim", - version = "0.2.0-1", - }, - { + version = "0.2.0-1" + }, { name = "vgit.nvim", url = "tanvirtin/vgit.nvim", - version = "0.2.2-1", - }, - { + version = "0.2.2-1" + }, { name = "which-key.nvim", url = "folke/which-key.nvim", - version = "2.1.0-1", - }, - { + version = "2.1.0-1" + }, { name = "windline.nvim", url = "windwp/windline.nvim", - version = "1.1.0-1", - }, - { + version = "1.1.0-1" + }, { name = "yanky.nvim", url = "gbprod/yanky.nvim", - version = "2.0.0-1", - }, - { + version = "2.0.0-1" + }, { name = "yazi.nvim", url = "mikavilpas/yazi.nvim", - version = "master-1", - }, - { + version = "master-1" + }, { name = "zen-mode.nvim", url = "folke/zen-mode.nvim", - version = "1.3.0-1", - }, - { + version = "1.3.0-1" + }, { name = "zk-nvim", url = "zk-org/zk-nvim", - version = "0.1.0-1", - }, -} - + version = "0.1.0-1" + } } \ No newline at end of file From 8abfed457c5b7b7435b0a74ca6d2f718c1df0741 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Tue, 25 Jun 2024 17:42:45 +0200 Subject: [PATCH 104/342] test: fix tests --- tests/manage/semver_spec.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/manage/semver_spec.lua b/tests/manage/semver_spec.lua index 3b96d99..02036c5 100644 --- a/tests/manage/semver_spec.lua +++ b/tests/manage/semver_spec.lua @@ -14,6 +14,7 @@ describe("semver version", function() ["1.2.3+build"] = { major = 1, minor = 2, patch = 3, build = "build" }, } for input, output in pairs(tests) do + output.input = input it("correctly parses " .. input, function() assert.same(output, v(input)) end) From 88911547e705579ddff57d4b7e5a77a8557a2459 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Tue, 25 Jun 2024 17:48:04 +0200 Subject: [PATCH 105/342] ci: fix some github urls --- lua/lazy/build.lua | 5 +++-- lua/lazy/community/rocks.lua | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/lua/lazy/build.lua b/lua/lazy/build.lua index 83993aa..c30c809 100644 --- a/lua/lazy/build.lua +++ b/lua/lazy/build.lua @@ -68,10 +68,11 @@ function M.build() if rockspec then local url = rockspec.source and rockspec.source.url -- parse github short url - if url and url:find("^%a+://github.com/") then - url = url:gsub("^%a+://github.com/", "") + if url and url:find("://github.com/") then + url = url:gsub("^.*://github.com/", "") local parts = vim.split(url, "/") url = parts[1] .. "/" .. parts[2] + url = url:gsub("%.git$", "") end if url then rock.url = url diff --git a/lua/lazy/community/rocks.lua b/lua/lazy/community/rocks.lua index a16b088..30dc305 100644 --- a/lua/lazy/community/rocks.lua +++ b/lua/lazy/community/rocks.lua @@ -373,7 +373,7 @@ return version = "1.5.2-1" }, { name = "nui.nvim", - url = "git+https://github.com/MunifTanjim/nui.nvim.git", + url = "MunifTanjim/nui.nvim", version = "0.3.0-1" }, { name = "nvim-client", @@ -570,7 +570,7 @@ return }, { name = "rocks-config.nvim", url = "nvim-neorocks/rocks-config.nvim", - version = "2.1.0-1" + version = "2.0.1-1" }, { name = "rocks-dev.nvim", url = "nvim-neorocks/rocks-dev.nvim", From 786a3febc01c31a98163232ab75175e7e8045c7d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 25 Jun 2024 15:48:19 +0000 Subject: [PATCH 106/342] chore(build): auto-generate rockspec mappings --- lua/lazy/community/rocks.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/lazy/community/rocks.lua b/lua/lazy/community/rocks.lua index 30dc305..07d5225 100644 --- a/lua/lazy/community/rocks.lua +++ b/lua/lazy/community/rocks.lua @@ -570,7 +570,7 @@ return }, { name = "rocks-config.nvim", url = "nvim-neorocks/rocks-config.nvim", - version = "2.0.1-1" + version = "2.1.0-1" }, { name = "rocks-dev.nvim", url = "nvim-neorocks/rocks-dev.nvim", From 49c0b86a6f831972972a1acc5590c2eb365dcef5 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Tue, 25 Jun 2024 18:07:26 +0200 Subject: [PATCH 107/342] ci: move to _generated.lua --- lua/lazy/build.lua | 2 +- .../community/{rocks.lua => _generated.lua} | 0 lua/lazy/community/init.lua | 25 +++++++++++++++++++ 3 files changed, 26 insertions(+), 1 deletion(-) rename lua/lazy/community/{rocks.lua => _generated.lua} (100%) create mode 100644 lua/lazy/community/init.lua diff --git a/lua/lazy/build.lua b/lua/lazy/build.lua index c30c809..f61589e 100644 --- a/lua/lazy/build.lua +++ b/lua/lazy/build.lua @@ -83,7 +83,7 @@ function M.build() end end end - Util.write_file("lua/lazy/community/rocks.lua", "return \n" .. vim.inspect(nvim_rocks)) + Util.write_file("lua/lazy/community/_generated.lua", "return \n" .. vim.inspect(nvim_rocks)) end M.build() diff --git a/lua/lazy/community/rocks.lua b/lua/lazy/community/_generated.lua similarity index 100% rename from lua/lazy/community/rocks.lua rename to lua/lazy/community/_generated.lua diff --git a/lua/lazy/community/init.lua b/lua/lazy/community/init.lua new file mode 100644 index 0000000..4e762ec --- /dev/null +++ b/lua/lazy/community/init.lua @@ -0,0 +1,25 @@ +local M = {} + +---@type table +local mapping = nil + +local function _load() + if mapping then + return + end + mapping = {} + ---@type {name:string, url:string, version:string}[] + local gen = require("lazy.community._generated") + for _, rock in ipairs(gen) do + mapping[rock.name] = rock.url + end +end + +---@param rock string +---@return string? +function M.get_url(rock) + _load() + return mapping[rock] +end + +return M From 7cda552c1cd09ec7019960d8d58fd0162bdf1340 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Tue, 25 Jun 2024 18:12:39 +0200 Subject: [PATCH 108/342] ci: more rockspec patterns --- lua/lazy/build.lua | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/lua/lazy/build.lua b/lua/lazy/build.lua index f61589e..c56cbdb 100644 --- a/lua/lazy/build.lua +++ b/lua/lazy/build.lua @@ -5,6 +5,8 @@ local Util = require("lazy.util") local M = {} +M.patterns = { "nvim", "treesitter", "tree-sitter" } + function M.fetch(url, file, prefix) if not vim.uv.fs_stat(file) then print((prefix or "") .. "Fetching " .. url .. " to " .. file .. "\n") @@ -36,7 +38,14 @@ function M.build() ---@type {name:string, version:string, url:string}[] local nvim_rocks = {} for rock, vv in pairs(manifest.repository or {}) do - if rock:find("nvim", 1, true) then + local matches = false + for _, pattern in ipairs(M.patterns) do + if rock:find(pattern, 1, true) then + matches = true + break + end + end + if matches then local versions = vim.tbl_map(Semver.version, vim.tbl_keys(vv)) versions = vim.tbl_filter(function(v) return not not v From 33be7ac3173c7c20b94ce7e1b9734c1a1e85f292 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 25 Jun 2024 16:13:21 +0000 Subject: [PATCH 109/342] chore(build): auto-generate rockspec mappings --- lua/lazy/community/_generated.lua | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/lua/lazy/community/_generated.lua b/lua/lazy/community/_generated.lua index 07d5225..8e5aaad 100644 --- a/lua/lazy/community/_generated.lua +++ b/lua/lazy/community/_generated.lua @@ -287,14 +287,26 @@ return name = "lsp_signature.nvim", url = "ray-x/lsp_signature.nvim", version = "0.3.1-1" + }, { + name = "ltreesitter", + url = "euclidianAce/ltreesitter", + version = "0.0.7-1" }, { name = "lua-obfuscator.nvim", url = "git+ssh://git@github.com/kdssoftware/lua-obfuscator.nvim.git", version = "1.0.1-1" + }, { + name = "lua-tree-sitter", + url = "xcb-xwii/lua-tree-sitter", + version = "0.1.0-1" }, { name = "lua-utils.nvim", url = "nvim-neorg/lua-utils.nvim", version = "1.0.2-1" + }, { + name = "luarocks-build-treesitter-parser", + url = "nvim-neorocks/luarocks-build-treesitter-parser", + version = "4.1.0-1" }, { name = "mapx.nvim", url = "b0o/mapx.nvim", @@ -659,6 +671,18 @@ return name = "tokyonight.nvim", url = "folke/tokyonight.nvim", version = "3.0.1-1" + }, { + name = "tree-sitter-norg", + url = "nvim-neorg/tree-sitter-norg", + version = "0.2.4-1" + }, { + name = "tree-sitter-norg-meta", + url = "nvim-neorg/tree-sitter-norg-meta", + version = "0.1.0-1" + }, { + name = "tree-sitter-orgmode", + url = "nvim-orgmode/tree-sitter-org", + version = "1.3.2-1" }, { name = "trouble.nvim", url = "folke/trouble.nvim", From aff65371fc0d145c42bc58732242cd9a52ab83bb Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Tue, 25 Jun 2024 20:35:27 +0200 Subject: [PATCH 110/342] ci: add `cmp` to generated luarock mappings --- lua/lazy/build.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/lazy/build.lua b/lua/lazy/build.lua index c56cbdb..e8ed7d8 100644 --- a/lua/lazy/build.lua +++ b/lua/lazy/build.lua @@ -5,7 +5,7 @@ local Util = require("lazy.util") local M = {} -M.patterns = { "nvim", "treesitter", "tree-sitter" } +M.patterns = { "nvim", "treesitter", "tree-sitter", "cmp" } function M.fetch(url, file, prefix) if not vim.uv.fs_stat(file) then From aff7ee8e8983947abab94a37aa3eec57f6fc3f6b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 25 Jun 2024 18:35:51 +0000 Subject: [PATCH 111/342] chore(build): auto-generate rockspec mappings --- lua/lazy/community/_generated.lua | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lua/lazy/community/_generated.lua b/lua/lazy/community/_generated.lua index 8e5aaad..9e583e9 100644 --- a/lua/lazy/community/_generated.lua +++ b/lua/lazy/community/_generated.lua @@ -39,6 +39,10 @@ return name = "ci-template.nvim", url = "linrongbin16/ci-template.nvim", version = "8.1.0-1" + }, { + name = "cmp-rg", + url = "lukas-reineke/cmp-rg", + version = "1.3.9-1" }, { name = "colorbox.nvim", url = "linrongbin16/colorbox.nvim", From 25981e1f3927ee0b22aefea122ebac1cddafdca6 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Tue, 25 Jun 2024 20:38:16 +0200 Subject: [PATCH 112/342] fix(meta): only tag new top-level pkg fragment as optional --- lua/lazy/core/meta.lua | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lua/lazy/core/meta.lua b/lua/lazy/core/meta.lua index ec3a5b4..52b0549 100644 --- a/lua/lazy/core/meta.lua +++ b/lua/lazy/core/meta.lua @@ -34,13 +34,16 @@ function M:load_pkgs() return end for _, pkg in ipairs(Pkg.get()) do + local last_id = self.fragments._fid local meta, fragment = self:add(pkg.spec) if meta and fragment then meta._.pkg = pkg - -- tag all package fragments as optional + -- tag all top-level package fragments that were added as optional for _, fid in ipairs(meta._.frags) do - local frag = self.fragments:get(fid) - frag.spec.optional = true + if fid > last_id then + local frag = self.fragments:get(fid) + frag.spec.optional = true + end end -- keep track of the top-level package fragment self.pkgs[pkg.dir] = fragment.id From be74a8a535fea6a480143fb52b4d6958d9e2da94 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Tue, 25 Jun 2024 20:38:50 +0200 Subject: [PATCH 113/342] feat(pkg): utils to get rock to url mappings --- lua/lazy/community/init.lua | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/lua/lazy/community/init.lua b/lua/lazy/community/init.lua index 4e762ec..1cd20e8 100644 --- a/lua/lazy/community/init.lua +++ b/lua/lazy/community/init.lua @@ -3,23 +3,22 @@ local M = {} ---@type table local mapping = nil -local function _load() - if mapping then - return - end - mapping = {} - ---@type {name:string, url:string, version:string}[] - local gen = require("lazy.community._generated") - for _, rock in ipairs(gen) do - mapping[rock.name] = rock.url +local function load() + if not mapping then + mapping = {} + ---@type {name:string, url:string, version:string}[] + local gen = require("lazy.community._generated") + for _, rock in ipairs(gen) do + mapping[rock.name] = rock.url + end end + return mapping end ---@param rock string ---@return string? function M.get_url(rock) - _load() - return mapping[rock] + return load()[rock] end return M From 6b8bf58ebf9114f8f31fb78cbf057e452cb0e540 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Tue, 25 Jun 2024 20:53:42 +0200 Subject: [PATCH 114/342] feat(rocks): simple rockspecs are now fully resolved by lazy without luarocks. See #1548 --- lua/lazy/community/init.lua | 4 ++ lua/lazy/community/specs.lua | 7 +++ lua/lazy/core/plugin.lua | 2 +- lua/lazy/pkg/init.lua | 2 +- lua/lazy/pkg/rockspec.lua | 97 +++++++++++++++++++++++++----------- 5 files changed, 80 insertions(+), 32 deletions(-) create mode 100644 lua/lazy/community/specs.lua diff --git a/lua/lazy/community/init.lua b/lua/lazy/community/init.lua index 1cd20e8..f7db48f 100644 --- a/lua/lazy/community/init.lua +++ b/lua/lazy/community/init.lua @@ -21,4 +21,8 @@ function M.get_url(rock) return load()[rock] end +function M.get_spec(name) + return require("lazy.community.specs")[name] +end + return M diff --git a/lua/lazy/community/specs.lua b/lua/lazy/community/specs.lua new file mode 100644 index 0000000..ea16591 --- /dev/null +++ b/lua/lazy/community/specs.lua @@ -0,0 +1,7 @@ +---@type table +return { + ["plenary.nvim"] = { + "nvim-lua/plenary.nvim", + lazy = true, + }, +} diff --git a/lua/lazy/core/plugin.lua b/lua/lazy/core/plugin.lua index 8c746a9..a806b0a 100644 --- a/lua/lazy/core/plugin.lua +++ b/lua/lazy/core/plugin.lua @@ -287,7 +287,7 @@ function M.find_local_spec() return end local path = vim.uv.cwd() - while path ~= "" do + while path and path ~= "" do local file = path .. "/" .. M.LOCAL_SPEC if vim.fn.filereadable(file) == 1 then return { diff --git a/lua/lazy/pkg/init.lua b/lua/lazy/pkg/init.lua index b9620ca..7b52da1 100644 --- a/lua/lazy/pkg/init.lua +++ b/lua/lazy/pkg/init.lua @@ -2,7 +2,7 @@ local Config = require("lazy.core.config") local Util = require("lazy.core.util") local M = {} -M.VERSION = 10 +M.VERSION = 12 M.dirty = false ---@class LazyPkg diff --git a/lua/lazy/pkg/rockspec.lua b/lua/lazy/pkg/rockspec.lua index ef6d804..7d46034 100644 --- a/lua/lazy/pkg/rockspec.lua +++ b/lua/lazy/pkg/rockspec.lua @@ -1,4 +1,6 @@ --# selene:allow(incorrect_standard_library_use) +local Community = require("lazy.community") + local Config = require("lazy.core.config") local Health = require("lazy.health") local Util = require("lazy.util") @@ -16,11 +18,11 @@ local Util = require("lazy.util") local M = {} -M.dev_suffix = "-1.rockspec" M.skip = { "lua" } M.rewrites = { ["plenary.nvim"] = { "nvim-lua/plenary.nvim", lazy = true }, } + M.python = { "python3", "python" } ---@class HereRocks @@ -151,6 +153,15 @@ function M.build(task) end end + local pkg = task.plugin._.pkg + assert(pkg, "missing rockspec pkg for " .. task.plugin.name .. "\nThis shouldn't happen, please report.") + + local rockspec = M.rockspec(task.plugin.dir .. "/" .. pkg.file) or {} + assert( + rockspec.package, + "missing rockspec package name for " .. task.plugin.name .. "\nThis shouldn't happen, please report." + ) + local root = Config.options.rocks.root .. "/" .. task.plugin.name task:spawn(luarocks, { args = { @@ -161,8 +172,11 @@ function M.build(task) "--dev", "--lua-version", "5.1", - "make", + "install", -- use install so that we can make use of pre-built rocks "--force-fast", + "--deps-mode", + "one", + rockspec.package, }, cwd = task.plugin.dir, env = env, @@ -192,31 +206,36 @@ function M.rockspec(file) return M.parse(file) end +---@param plugin LazyPlugin +function M.find_rockspec(plugin) + local rockspec_file ---@type string? + Util.ls(plugin.dir, function(path, name, t) + if t == "file" then + for _, suffix in ipairs({ "scm", "git", "dev" }) do + suffix = suffix .. "-1.rockspec" + if name:sub(-#suffix) == suffix then + rockspec_file = path + return false + end + end + end + end) + return rockspec_file +end + ---@param plugin LazyPlugin ---@return LazyPkgSpec? function M.get(plugin) - if M.rewrites[plugin.name] then + if Community.get_spec(plugin.name) then return { - file = "rewrite", + file = "community", source = "lazy", - spec = M.rewrites[plugin.name], + spec = Community.get_spec(plugin.name), } end - local rockspec_file ---@type string? - Util.ls(plugin.dir, function(path, name, t) - if t == "file" and name:sub(-#M.dev_suffix) == M.dev_suffix then - rockspec_file = path - return false - end - end) - - if not rockspec_file then - return - end - - local rockspec = M.rockspec(rockspec_file) - + local rockspec_file = M.find_rockspec(plugin) + local rockspec = rockspec_file and M.rockspec(rockspec_file) if not rockspec then return end @@ -224,20 +243,34 @@ function M.get(plugin) local has_lua = not not vim.uv.fs_stat(plugin.dir .. "/lua") ---@type LazyPluginSpec - local rewrites = {} + local specs = {} ---@param dep string local rocks = vim.tbl_filter(function(dep) local name = dep:gsub("%s.*", "") - if M.rewrites[name] then - table.insert(rewrites, M.rewrites[name]) + local url = Community.get_url(name) + local spec = Community.get_spec(name) + + if spec then + -- community spec + table.insert(specs, spec) + return false + elseif url then + -- Neovim plugin rock + table.insert(specs, { url, lazy = true }) return false end return not vim.tbl_contains(M.skip, name) end, rockspec.dependencies or {}) - local use = not has_lua + local use = + -- package without a /lua directory + not has_lua + -- has dependencies that are not skipped, + -- not in community specs, + -- and don't have a rockspec mapping or #rocks > 0 + -- has a complex build process or ( rockspec.build and rockspec.build.build_type @@ -246,13 +279,17 @@ function M.get(plugin) ) if not use then - if #rewrites > 0 then - return { - file = vim.fn.fnamemodify(rockspec_file, ":t"), - spec = rewrites, - } - end - return + -- community specs only + return #specs > 0 + and { + file = vim.fn.fnamemodify(rockspec_file, ":t"), + spec = { + plugin.name, + specs = specs, + build = false, + }, + } + or nil end local lazy = nil From 9ac375653bbb1f8d91e8f20b238f4f754006a241 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 25 Jun 2024 21:05:40 +0200 Subject: [PATCH 115/342] chore(main): release 11.4.0 (#1554) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 13 +++++++++++++ lua/lazy/core/config.lua | 2 +- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index 6d2ee11..8af0208 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "11.3.0" + ".": "11.4.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 028f5ab..f53dbe9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [11.4.0](https://github.com/folke/lazy.nvim/compare/v11.3.0...v11.4.0) (2024-06-25) + + +### Features + +* **pkg:** utils to get rock to url mappings ([be74a8a](https://github.com/folke/lazy.nvim/commit/be74a8a535fea6a480143fb52b4d6958d9e2da94)) +* **rocks:** simple rockspecs are now fully resolved by lazy without luarocks. See [#1548](https://github.com/folke/lazy.nvim/issues/1548) ([6b8bf58](https://github.com/folke/lazy.nvim/commit/6b8bf58ebf9114f8f31fb78cbf057e452cb0e540)) + + +### Bug Fixes + +* **meta:** only tag new top-level pkg fragment as optional ([25981e1](https://github.com/folke/lazy.nvim/commit/25981e1f3927ee0b22aefea122ebac1cddafdca6)) + ## [11.3.0](https://github.com/folke/lazy.nvim/compare/v11.2.1...v11.3.0) (2024-06-25) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 6e23b21..cf639f6 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -197,7 +197,7 @@ M.defaults = { debug = false, } -M.version = "11.3.0" -- x-release-please-version +M.version = "11.4.0" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 0d9fd636beb9e3783edcdba2b31932280bdc05f7 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Tue, 25 Jun 2024 21:15:50 +0200 Subject: [PATCH 116/342] fix(health): show what plugins need luarocks and if none, use warnings instead of errors. See #1551 --- lua/lazy/health.lua | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/lua/lazy/health.lua b/lua/lazy/health.lua index 3199f75..86e805d 100644 --- a/lua/lazy/health.lua +++ b/lua/lazy/health.lua @@ -129,7 +129,26 @@ function M.check() else info("checking `luarocks` installation") end - require("lazy.pkg.rockspec").check({ error = error, warn = warn, ok = ok }) + local need_luarocks = {} + for _, plugin in pairs(spec.plugins) do + if plugin.build == "rockspec" then + table.insert(need_luarocks, plugin.name) + end + end + if #need_luarocks == 0 then + ok("no plugins require `luarocks`, so you can ignore any warnings below") + else + local lines = vim.tbl_map(function(name) + return " * `" .. name .. "`" + end, need_luarocks) + + info("you have some plugins that require `luarocks`:\n" .. table.concat(lines, "\n")) + end + require("lazy.pkg.rockspec").check({ + error = #need_luarocks > 0 and error or warn, + warn = warn, + ok = ok, + }) else ok("luarocks disabled") end From 3f7368c3ac0c3683030b37aafeb50c54957bd610 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Tue, 25 Jun 2024 21:53:56 +0200 Subject: [PATCH 117/342] ci: use 5.1 manifest --- lua/lazy/build.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/lazy/build.lua b/lua/lazy/build.lua index e8ed7d8..5280c31 100644 --- a/lua/lazy/build.lua +++ b/lua/lazy/build.lua @@ -22,7 +22,7 @@ end ---@return RockManifest? function M.fetch_manifest() local manifest_file = "build/manifest.lua" - M.fetch("https://luarocks.org/manifest", manifest_file) + M.fetch("https://luarocks.org/manifest-5.1", manifest_file) return Rocks.parse(manifest_file) end From 69041bccb70f68408633e93ed33012ee18889bb0 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 25 Jun 2024 22:09:17 +0200 Subject: [PATCH 118/342] chore(main): release 11.4.1 (#1555) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 7 +++++++ lua/lazy/core/config.lua | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index 8af0208..8aab173 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "11.4.0" + ".": "11.4.1" } diff --git a/CHANGELOG.md b/CHANGELOG.md index f53dbe9..741e766 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [11.4.1](https://github.com/folke/lazy.nvim/compare/v11.4.0...v11.4.1) (2024-06-25) + + +### Bug Fixes + +* **health:** show what plugins need luarocks and if none, use warnings instead of errors. See [#1551](https://github.com/folke/lazy.nvim/issues/1551) ([0d9fd63](https://github.com/folke/lazy.nvim/commit/0d9fd636beb9e3783edcdba2b31932280bdc05f7)) + ## [11.4.0](https://github.com/folke/lazy.nvim/compare/v11.3.0...v11.4.0) (2024-06-25) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index cf639f6..daa9ce3 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -197,7 +197,7 @@ M.defaults = { debug = false, } -M.version = "11.4.0" -- x-release-please-version +M.version = "11.4.1" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 67e1e8e6a3a8b80357991a5bf58810eb7afa257d Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Wed, 26 Jun 2024 06:22:21 +0200 Subject: [PATCH 119/342] ci: added neo to rockspec patterns --- lua/lazy/build.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/lazy/build.lua b/lua/lazy/build.lua index 5280c31..505ce15 100644 --- a/lua/lazy/build.lua +++ b/lua/lazy/build.lua @@ -5,7 +5,7 @@ local Util = require("lazy.util") local M = {} -M.patterns = { "nvim", "treesitter", "tree-sitter", "cmp" } +M.patterns = { "nvim", "treesitter", "tree-sitter", "cmp", "neo" } function M.fetch(url, file, prefix) if not vim.uv.fs_stat(file) then From 6d60dc3c05440f9f79c738058af62c333543329b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 26 Jun 2024 04:22:43 +0000 Subject: [PATCH 120/342] chore(build): auto-generate rockspec mappings --- lua/lazy/community/_generated.lua | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/lua/lazy/community/_generated.lua b/lua/lazy/community/_generated.lua index 9e583e9..87b46dd 100644 --- a/lua/lazy/community/_generated.lua +++ b/lua/lazy/community/_generated.lua @@ -363,10 +363,34 @@ return name = "neodev.nvim", url = "folke/neodev.nvim", version = "3.0.0-1" + }, { + name = "neogen", + url = "danymat/neogen", + version = "2.17.1-1" + }, { + name = "neogit", + url = "NeogitOrg/neogit", + version = "1.0.0-1" + }, { + name = "neorg", + url = "nvim-neorg/neorg", + version = "8.7.1-1" + }, { + name = "neorg-telescope", + url = "nvim-neorg/neorg-telescope", + version = "1.1.0-1" }, { name = "neoscroll.nvim", url = "karb94/neoscroll.nvim", version = "0.2.0-1" + }, { + name = "neotest", + url = "nvim-neotest/neotest", + version = "5.3.3-1" + }, { + name = "neotest-haskell", + url = "mrcjkb/neotest-haskell", + version = "2.0.0-1" }, { name = "nightfox.nvim", url = "EdenEast/nightfox.nvim", From 28e435b7f34eecd8b90bc87ac71c70b79fcb03b3 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Wed, 26 Jun 2024 07:14:42 +0200 Subject: [PATCH 121/342] fix(git): fetch commit from origin or local to check if branch was changed. See #1549 --- lua/lazy/manage/task/git.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/lazy/manage/task/git.lua b/lua/lazy/manage/task/git.lua index 8dd2536..56d2b73 100644 --- a/lua/lazy/manage/task/git.lua +++ b/lua/lazy/manage/task/git.lua @@ -127,7 +127,7 @@ M.branch = { return true end local branch = assert(Git.get_branch(plugin)) - return Git.get_commit(plugin.dir, branch) + return Git.get_commit(plugin.dir, branch, true) end, run = function(self) local args = { From e79805d706f815a62467260cb307844c368c3dba Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Wed, 26 Jun 2024 07:15:04 +0200 Subject: [PATCH 122/342] fix(ui): don't show output when it's the same as error --- lua/lazy/view/render.lua | 44 ++++++++++++++++++++++------------------ 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/lua/lazy/view/render.lua b/lua/lazy/view/render.lua index 61faca1..a2c33c1 100644 --- a/lua/lazy/view/render.lua +++ b/lua/lazy/view/render.lua @@ -472,7 +472,7 @@ function M:tasks(plugin) if not task.error and not task.warn and task.name == "log" then self:log(task) end - if self.view:is_selected(plugin) or (task.error or task.warn) then + if (self.view:is_selected(plugin) or (task.error or task.warn)) and task.output ~= task.error then self:markdown(vim.trim(task.output), "LazyTaskOutput", { indent = 6 }) end end @@ -485,27 +485,31 @@ function M:log(task) local lines = vim.split(log, "\n") for _, line in ipairs(lines) do local ref, msg, time = line:match("^(%w+) (.*) (%(.*%))$") - if msg:find("^%S+!:") then - self:diagnostic({ message = "Breaking Changes", severity = vim.diagnostic.severity.WARN }) - end - self:append(ref:sub(1, 7) .. " ", "LazyCommit", { indent = 6 }) - - local dimmed = false - for _, dim in ipairs(ViewConfig.dimmed_commits) do - if msg:find("^" .. dim) then - dimmed = true + if msg then + if msg:find("^%S+!:") then + self:diagnostic({ message = "Breaking Changes", severity = vim.diagnostic.severity.WARN }) end + self:append(ref:sub(1, 7) .. " ", "LazyCommit", { indent = 6 }) + + local dimmed = false + for _, dim in ipairs(ViewConfig.dimmed_commits) do + if msg:find("^" .. dim) then + dimmed = true + end + end + self:append(vim.trim(msg), dimmed and "LazyDimmed" or nil):highlight({ + ["#%d+"] = "LazyCommitIssue", + ["^%S+:"] = dimmed and "Bold" or "LazyCommitType", + ["^%S+(%(.*%))!?:"] = "LazyCommitScope", + ["`.-`"] = "@markup.raw.markdown_inline", + ["%*.-%*"] = "Italic", + ["%*%*.-%*%*"] = "Bold", + }) + self:append(" " .. time, "LazyComment") + self:nl() + -- else + -- self:append(line, "LazyTaskOutput", { indent = 6 }):nl() end - self:append(vim.trim(msg), dimmed and "LazyDimmed" or nil):highlight({ - ["#%d+"] = "LazyCommitIssue", - ["^%S+:"] = dimmed and "Bold" or "LazyCommitType", - ["^%S+(%(.*%))!?:"] = "LazyCommitScope", - ["`.-`"] = "@markup.raw.markdown_inline", - ["%*.-%*"] = "Italic", - ["%*%*.-%*%*"] = "Bold", - }) - self:append(" " .. time, "LazyComment") - self:nl() end self:nl() end From d63e80bae98f42eeb61fa0c21165443bebbb0f2e Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Wed, 26 Jun 2024 07:18:07 +0200 Subject: [PATCH 123/342] test: remove debug output --- tests/core/plugin_spec.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/core/plugin_spec.lua b/tests/core/plugin_spec.lua index 4a09bb9..f922d4b 100644 --- a/tests/core/plugin_spec.lua +++ b/tests/core/plugin_spec.lua @@ -296,7 +296,7 @@ describe("plugin spec opt", function() assert(#spec.notifs == 0) assert(vim.tbl_count(spec.plugins) == 1) Handler.resolve(spec.plugins.bar) - vim.print(spec.plugins.bar._.handlers) + -- vim.print(spec.plugins.bar._.handlers) local events = vim.tbl_keys(spec.plugins.bar._.handlers.event or {}) assert(type(events) == "table") assert(#events == 2) From 473361139cc05936cd5afb08ab68e5bee1ebb5b3 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Wed, 26 Jun 2024 08:49:42 +0200 Subject: [PATCH 124/342] fix(rockspec): dont lazy-load rock deps --- lua/lazy/pkg/rockspec.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/lazy/pkg/rockspec.lua b/lua/lazy/pkg/rockspec.lua index 7d46034..02c6155 100644 --- a/lua/lazy/pkg/rockspec.lua +++ b/lua/lazy/pkg/rockspec.lua @@ -257,7 +257,7 @@ function M.get(plugin) return false elseif url then -- Neovim plugin rock - table.insert(specs, { url, lazy = true }) + table.insert(specs, { url }) return false end return not vim.tbl_contains(M.skip, name) From aa1c9572aa1916e582f9b9c3d43e272b4f23b326 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Wed, 26 Jun 2024 08:50:06 +0200 Subject: [PATCH 125/342] fix(rocks): build.type instead of build.build_type --- lua/lazy/pkg/rockspec.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lua/lazy/pkg/rockspec.lua b/lua/lazy/pkg/rockspec.lua index 02c6155..2cae8a5 100644 --- a/lua/lazy/pkg/rockspec.lua +++ b/lua/lazy/pkg/rockspec.lua @@ -10,7 +10,7 @@ local Util = require("lazy.util") ---@field package string ---@field version string ---@field dependencies string[] ----@field build? {build_type?: string, modules?: any[]} +---@field build? {type?: string, modules?: any[]} ---@field source? {url?: string} ---@class RockManifest @@ -273,9 +273,9 @@ function M.get(plugin) -- has a complex build process or ( rockspec.build - and rockspec.build.build_type - and rockspec.build.build_type ~= "none" - and not (rockspec.build.build_type == "builtin" and not rockspec.build.modules) + and rockspec.build.type + and rockspec.build.type ~= "none" + and not (rockspec.build.type == "builtin" and not rockspec.build.modules) ) if not use then From 2aa8e061f22579b0cabc74f05a90f7344d92195c Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Wed, 26 Jun 2024 11:10:43 +0200 Subject: [PATCH 126/342] fix(config): dont start checker/change_detection when running headless --- lua/lazy/core/config.lua | 60 ++++++++++++++++++++-------------------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index daa9ce3..b7f9c73 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -272,10 +272,6 @@ function M.setup(opts) M.mapleader = vim.g.mapleader M.maplocalleader = vim.g.maplocalleader - if M.headless() then - require("lazy.view.commands").setup() - end - vim.api.nvim_create_autocmd("UIEnter", { once = true, callback = function() @@ -283,33 +279,37 @@ function M.setup(opts) end, }) - vim.api.nvim_create_autocmd("User", { - pattern = "VeryLazy", - once = true, - callback = function() - require("lazy.view.commands").setup() - if M.options.change_detection.enabled then - require("lazy.manage.reloader").enable() - end - if M.options.checker.enabled then - vim.defer_fn(function() - require("lazy.manage.checker").start() - end, 10) - end + if M.headless() then + require("lazy.view.commands").setup() + else + vim.api.nvim_create_autocmd("User", { + pattern = "VeryLazy", + once = true, + callback = function() + require("lazy.view.commands").setup() + if M.options.change_detection.enabled then + require("lazy.manage.reloader").enable() + end + if M.options.checker.enabled then + vim.defer_fn(function() + require("lazy.manage.checker").start() + end, 10) + end - -- useful for plugin developers when making changes to a packspec file - vim.api.nvim_create_autocmd("BufWritePost", { - pattern = { "lazy.lua", "pkg.json", "*.rockspec" }, - callback = function() - require("lazy").pkg({ - plugins = { - require("lazy.core.plugin").find(vim.uv.cwd() .. "/lua/"), - }, - }) - end, - }) - end, - }) + -- useful for plugin developers when making changes to a packspec file + vim.api.nvim_create_autocmd("BufWritePost", { + pattern = { "lazy.lua", "pkg.json", "*.rockspec" }, + callback = function() + require("lazy").pkg({ + plugins = { + require("lazy.core.plugin").find(vim.uv.cwd() .. "/lua/"), + }, + }) + end, + }) + end, + }) + end Util.very_lazy() end From 90e14d158550faab7a410e7c19a6f4044aba572d Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Wed, 26 Jun 2024 11:11:00 +0200 Subject: [PATCH 127/342] refactor(rocks): is_simple_build --- lua/lazy/pkg/rockspec.lua | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/lua/lazy/pkg/rockspec.lua b/lua/lazy/pkg/rockspec.lua index 2cae8a5..2eca5bd 100644 --- a/lua/lazy/pkg/rockspec.lua +++ b/lua/lazy/pkg/rockspec.lua @@ -183,6 +183,12 @@ function M.build(task) }) end +---@param rockspec RockSpec +function M.is_simple_build(rockspec) + local type = vim.tbl_get(rockspec, "build", "type") + return type == nil or type == "none" or (type == "builtin" and not rockspec.build.modules) +end + ---@param file string ---@return table? function M.parse(file) @@ -271,12 +277,7 @@ function M.get(plugin) -- and don't have a rockspec mapping or #rocks > 0 -- has a complex build process - or ( - rockspec.build - and rockspec.build.type - and rockspec.build.type ~= "none" - and not (rockspec.build.type == "builtin" and not rockspec.build.modules) - ) + or not M.is_simple_build(rockspec) if not use then -- community specs only From 707e2e923b341d280f6cc4546715c37fb04da9cb Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Wed, 26 Jun 2024 11:11:11 +0200 Subject: [PATCH 128/342] test: fix init test --- tests/core/init_spec.lua | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/tests/core/init_spec.lua b/tests/core/init_spec.lua index 3a1b4c7..4970871 100644 --- a/tests/core/init_spec.lua +++ b/tests/core/init_spec.lua @@ -1,7 +1,11 @@ +---@module 'luassert' +local Util = require("lazy.core.util") + describe("init", function() it("has correct environment for tests", function() - for _, path in ipairs({ "config", "data", "cache", "state" }) do - assert(vim.fn.stdpath(path):find(".tests/" .. path)) + for _, name in ipairs({ "config", "data", "cache", "state" }) do + local path = Util.norm(vim.fn.stdpath(name) --[[@as string]]) + assert(path:find(".tests/" .. name, 1, true), path .. " not in .tests") end end) end) From 64fd34672815726b60f11a06eb6889b2f5e46b14 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Wed, 26 Jun 2024 11:25:04 +0200 Subject: [PATCH 129/342] test: cleanup --- tests/core/e2e_spec.lua | 39 -------------------------------------- tests/core/plugin_spec.lua | 6 ++---- 2 files changed, 2 insertions(+), 43 deletions(-) delete mode 100644 tests/core/e2e_spec.lua diff --git a/tests/core/e2e_spec.lua b/tests/core/e2e_spec.lua deleted file mode 100644 index 37cdca5..0000000 --- a/tests/core/e2e_spec.lua +++ /dev/null @@ -1,39 +0,0 @@ -local Git = require("lazy.manage.git") - -describe("lazy", function() - before_each(function() - vim.g.lazy_did_setup = false - vim.go.loadplugins = true - for modname in pairs(package.loaded) do - if modname:find("lazy") == 1 then - package.loaded[modname] = nil - end - end - end) - - local root = ".tests/data/nvim/lazy" - - it("installs plugins", function() - local Lazy = require("lazy") - local Config = require("lazy.core.config") - - local neodev = false - Lazy.setup({ - { - "folke/neodev.nvim", - config = function() - neodev = true - end, - }, - "folke/paint.nvim", - }, { install_missing = true, defaults = { lazy = true } }) - assert(3 == vim.tbl_count(Config.plugins)) - assert(vim.uv.fs_stat(root .. "/paint.nvim/README.md")) - assert(vim.uv.fs_stat(root .. "/neodev.nvim/README.md")) - assert(not neodev) - assert(Config.plugins["neodev.nvim"]._.installed) - assert(not Config.plugins["neodev.nvim"]._.is_local) - assert.equal("https://github.com/folke/neodev.nvim.git", Git.get_origin(Config.plugins["neodev.nvim"].dir)) - assert.equal("https://github.com/folke/paint.nvim.git", Git.get_origin(Config.plugins["paint.nvim"].dir)) - end) -end) diff --git a/tests/core/plugin_spec.lua b/tests/core/plugin_spec.lua index f922d4b..87cea77 100644 --- a/tests/core/plugin_spec.lua +++ b/tests/core/plugin_spec.lua @@ -1,11 +1,9 @@ +---@module 'luassert' + local Config = require("lazy.core.config") local Handler = require("lazy.core.handler") local Plugin = require("lazy.core.plugin") -local assert = require("luassert") - -Config.setup() - local function inspect(obj) return vim.inspect(obj):gsub("%s+", " ") end From 36952153ecb5b196c74e2d9a28eb0e01a9eb02fe Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Wed, 26 Jun 2024 14:28:22 +0200 Subject: [PATCH 130/342] perf(util): improve impl of throttle --- lua/lazy/util.lua | 34 ++++++++++++++++------------------ lua/lazy/view/init.lua | 5 ++++- 2 files changed, 20 insertions(+), 19 deletions(-) diff --git a/lua/lazy/util.lua b/lua/lazy/util.lua index 813b4d9..09e4f54 100644 --- a/lua/lazy/util.lua +++ b/lua/lazy/util.lua @@ -74,27 +74,25 @@ end ---@return F function M.throttle(ms, fn) local timer = vim.uv.new_timer() - local running = false - local first = true + local pending = false - return function(...) - local args = { ... } - local wrapped = function() - fn(unpack(args)) + return function() + if timer:is_active() then + pending = true + return end - if not running then - if first then - wrapped() - first = false - end - - timer:start(ms, 0, function() - running = false - vim.schedule(wrapped) + timer:start( + 0, + ms, + vim.schedule_wrap(function() + fn() + if pending then + pending = false + else + timer:stop() + end end) - - running = true - end + ) end end diff --git a/lua/lazy/view/init.lua b/lua/lazy/view/init.lua index 7d349d3..5702531 100644 --- a/lua/lazy/view/init.lua +++ b/lua/lazy/view/init.lua @@ -67,7 +67,10 @@ function M.create() self.state = vim.deepcopy(default_state) self.render = Render.new(self) - self.update = Util.throttle(Config.options.ui.throttle, self.update) + local update = self.update + self.update = Util.throttle(Config.options.ui.throttle, function() + update(self) + end) for _, pattern in ipairs({ "LazyRender", "LazyFloatResized" }) do self:on({ "User" }, function() From 0614ca6ca629704cb1846c0d6f9a250b526900b9 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Wed, 26 Jun 2024 14:28:53 +0200 Subject: [PATCH 131/342] perf: tasks are now fully async --- lua/lazy/core/config.lua | 2 +- lua/lazy/manage/task/init.lua | 153 +++++++++++++++++++--------------- 2 files changed, 87 insertions(+), 68 deletions(-) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index b7f9c73..73e0970 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -105,7 +105,7 @@ M.defaults = { -- leave nil, to automatically select a browser depending on your OS. -- If you want to use a specific browser, you can define it here browser = nil, ---@type string? - throttle = 20, -- how frequently should the ui process render events + throttle = 1000 / 30, -- how frequently should the ui process render events custom_keys = { -- You can define custom key maps here. If present, the description will -- be shown in the help menu. diff --git a/lua/lazy/manage/task/init.lua b/lua/lazy/manage/task/init.lua index df8e792..42268e8 100644 --- a/lua/lazy/manage/task/init.lua +++ b/lua/lazy/manage/task/init.lua @@ -4,7 +4,45 @@ local Process = require("lazy.manage.process") ---@field skip? fun(plugin:LazyPlugin, opts?:TaskOptions):any? ---@field run fun(task:LazyTask, opts:TaskOptions) ----@alias LazyTaskState fun():boolean? +---@alias LazyTaskState {task:LazyTask, thread:thread} + +local Scheduler = {} +---@type LazyTaskState[] +Scheduler._queue = {} +Scheduler._executor = assert(vim.loop.new_check()) +Scheduler._running = false + +function Scheduler.step() + Scheduler._running = true + local budget = 1 * 1e6 + local start = vim.loop.hrtime() + local count = #Scheduler._queue + local i = 0 + while #Scheduler._queue > 0 and vim.loop.hrtime() - start < budget do + ---@type LazyTaskState + local state = table.remove(Scheduler._queue, 1) + state.task:_step(state.thread) + if coroutine.status(state.thread) ~= "dead" then + table.insert(Scheduler._queue, state) + end + i = i + 1 + if i >= count then + break + end + end + Scheduler._running = false + if #Scheduler._queue == 0 then + return Scheduler._executor:stop() + end +end + +---@param state LazyTaskState +function Scheduler.add(state) + table.insert(Scheduler._queue, state) + if not Scheduler._executor:is_active() then + Scheduler._executor:start(vim.schedule_wrap(Scheduler.step)) + end +end ---@class LazyTask ---@field plugin LazyPlugin @@ -13,11 +51,11 @@ local Process = require("lazy.manage.process") ---@field status string ---@field error? string ---@field warn? string ----@field private _task fun(task:LazyTask) ----@field private _running LazyPluginState[] +---@field private _task fun(task:LazyTask, opts:TaskOptions) ---@field private _started? number ---@field private _ended? number ---@field private _opts TaskOptions +---@field private _threads thread[] local Task = {} ---@class TaskOptions: {[string]:any} @@ -32,18 +70,17 @@ function Task.new(plugin, name, task, opts) __index = Task, }) self._opts = opts or {} - self._running = {} + self._threads = {} self._task = task self._started = nil self.plugin = plugin self.name = name self.output = "" self.status = "" - plugin._.tasks = plugin._.tasks or {} ---@param other LazyTask plugin._.tasks = vim.tbl_filter(function(other) return other.name ~= name or other:is_running() - end, plugin._.tasks) + end, plugin._.tasks or {}) table.insert(plugin._.tasks, self) return self end @@ -52,27 +89,26 @@ function Task:has_started() return self._started ~= nil end +function Task:has_ended() + return self._ended ~= nil +end + function Task:is_done() - return self:has_started() and not self:is_running() + return self:has_started() and self:has_ended() end function Task:is_running() - return self:has_started() and self._ended == nil + return self:has_started() and not self:has_ended() end function Task:start() - if vim.in_fast_event() then - return vim.schedule(function() - self:start() - end) - end + assert(not self:has_started(), "task already started") + assert(not self:has_ended(), "task already done") + self._started = vim.uv.hrtime() - ---@type boolean, string|any - local ok, err = pcall(self._task, self, self._opts) - if not ok then - self.error = err or "failed" - end - self:_check() + self:async(function() + self._task(self, self._opts) + end) end ---@param msg string|string[] @@ -102,36 +138,33 @@ end ---@param fn async fun() function Task:async(fn) local co = coroutine.create(fn) - local check = vim.uv.new_check() - check:start(vim.schedule_wrap(function() - local status = coroutine.status(co) - if status == "dead" then - check:stop() - self:_check() - elseif status == "suspended" then - local ok, res = coroutine.resume(co) - if not ok then - error(res) - elseif res then - self.status = res - self.output = self.output .. "\n" .. res - vim.api.nvim_exec_autocmds("User", { pattern = "LazyRender", modeline = false }) - end - end - end)) - - table.insert(self._running, function() - return check:is_active() - end) + table.insert(self._threads, co) + Scheduler.add({ task = self, thread = co }) end ----@private -function Task:_check() - for _, state in ipairs(self._running) do - if state() then +---@param co thread +function Task:_step(co) + local status = coroutine.status(co) + if status == "suspended" then + local ok, res = coroutine.resume(co) + if not ok then + self:notify_error(tostring(res)) + elseif res then + self:notify(tostring(res)) + end + end + for _, t in ipairs(self._threads) do + if coroutine.status(t) ~= "dead" then return end end + self:_done() +end + +---@private +function Task:_done() + assert(self:has_started(), "task not started") + assert(not self:has_ended(), "task already done") self._ended = vim.uv.hrtime() if self._opts.on_done then self._opts.on_done(self) @@ -147,29 +180,13 @@ function Task:time() if not self:has_started() then return 0 end - if not self:is_done() then + if not self:has_ended() then return (vim.uv.hrtime() - self._started) / 1e6 end return (self._ended - self._started) / 1e6 end ----@param fn fun() -function Task:schedule(fn) - local done = false - table.insert(self._running, function() - return not done - end) - vim.schedule(function() - ---@type boolean, string|any - local ok, err = pcall(fn) - if not ok then - self.error = err or "failed" - end - done = true - self:_check() - end) -end - +---@async ---@param cmd string ---@param opts? ProcessOpts function Task:spawn(cmd, opts) @@ -178,6 +195,7 @@ function Task:spawn(cmd, opts) local on_exit = opts.on_exit function opts.on_line(line) + self:notify(line) self.status = line if on_line then pcall(on_line, line) @@ -185,6 +203,7 @@ function Task:spawn(cmd, opts) vim.api.nvim_exec_autocmds("User", { pattern = "LazyRender", modeline = false }) end + local running = true ---@param output string function opts.on_exit(ok, output) self.output = self.output .. output @@ -194,12 +213,12 @@ function Task:spawn(cmd, opts) if on_exit then pcall(on_exit, ok, output) end - self:_check() + running = false + end + Process.spawn(cmd, opts) + while running do + coroutine.yield() end - local proc = Process.spawn(cmd, opts) - table.insert(self._running, function() - return proc and not proc:is_closing() - end) end ---@param tasks (LazyTask?)[] From bbe136bda6b3afca84b686f77800e3cbe08f3cdb Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Wed, 26 Jun 2024 14:29:00 +0200 Subject: [PATCH 132/342] test: fix tests --- lua/lazy/manage/task/init.lua | 1 - tests/manage/runner_spec.lua | 3 ++- tests/manage/task_spec.lua | 43 ++++++++++++++++++----------------- 3 files changed, 24 insertions(+), 23 deletions(-) diff --git a/lua/lazy/manage/task/init.lua b/lua/lazy/manage/task/init.lua index 42268e8..9c2d179 100644 --- a/lua/lazy/manage/task/init.lua +++ b/lua/lazy/manage/task/init.lua @@ -195,7 +195,6 @@ function Task:spawn(cmd, opts) local on_exit = opts.on_exit function opts.on_line(line) - self:notify(line) self.status = line if on_line then pcall(on_line, line) diff --git a/tests/manage/runner_spec.lua b/tests/manage/runner_spec.lua index b3b606b..ba940e2 100644 --- a/tests/manage/runner_spec.lua +++ b/tests/manage/runner_spec.lua @@ -32,7 +32,8 @@ describe("runner", function() package.loaded["lazy.manage.task.test"]["async" .. i] = { ---@param task LazyTask run = function(task) - task:schedule(function() + task:async(function() + coroutine.yield() table.insert(runs, { plugin = task.plugin.name, task = task.name }) end) end, diff --git a/tests/manage/task_spec.lua b/tests/manage/task_spec.lua index bbb8704..546bc34 100644 --- a/tests/manage/task_spec.lua +++ b/tests/manage/task_spec.lua @@ -4,20 +4,18 @@ local Task = require("lazy.manage.task") describe("task", function() local plugin = { name = "test", _ = {} } - local done = false - ---@type string? - local error + ---@type {done?:boolean, error:string?} + local task_result = {} local opts = { + ---@param task LazyTask on_done = function(task) - done = true - error = task.error + task_result = { done = true, error = task.error } end, } before_each(function() - done = false - error = nil + task_result = {} end) it("simple function", function() @@ -25,9 +23,10 @@ describe("task", function() assert(not task:has_started()) assert(not task:is_running()) task:start() + task:wait() assert(not task:is_running()) assert(task:is_done()) - assert(done) + assert(task_result.done) end) it("detects errors", function() @@ -37,18 +36,19 @@ describe("task", function() assert(not task:has_started()) assert(not task:is_running()) task:start() + task:wait() assert(task:is_done()) assert(not task:is_running()) - assert(done) - assert(error) + assert(task_result.done) + assert(task_result.error) assert(task.error and task.error:find("test")) end) - it("schedule", function() - local running = false + it("async", function() + local running = true local task = Task.new(plugin, "test", function(task) - running = true - task:schedule(function() + task:async(function() + coroutine.yield() running = false end) end, opts) @@ -56,25 +56,26 @@ describe("task", function() assert(not task:has_started()) task:start() assert(running) - assert(#task._running == 1) assert(task:is_running()) assert(not task:is_done()) task:wait() + assert(not running) assert(task:is_done()) assert(not task:is_running()) - assert(done) + assert(task_result.done) assert(not task.error) end) it("spawn errors", function() - local task = Task.new(plugin, "test", function(task) + local task = Task.new(plugin, "spawn_errors", function(task) task:spawn("foobar") end, opts) assert(not task:is_running()) task:start() + task:wait() assert(not task:is_running()) - assert(done) - assert(task.error and task.error:find("Failed to spawn")) + assert(task_result.done) + assert(task.error and task.error:find("Failed to spawn"), task.output) end) it("spawn", function() @@ -89,7 +90,7 @@ describe("task", function() task:wait() assert(task:is_done()) assert.same(task.output, "foo\n") - assert(done) + assert(task_result.done) assert(not task.error) end) @@ -103,7 +104,7 @@ describe("task", function() assert(task:is_running()) task:wait() assert(task.output == "foo\nbar\n" or task.output == "bar\nfoo\n", task.output) - assert(done) + assert(task_result.done) assert(not task.error) end) end) From 9c1dd5a09065218a8aa67f251a2116cf74420b8c Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Wed, 26 Jun 2024 14:30:55 +0200 Subject: [PATCH 133/342] test: buse busted for running tasks --- .busted | 11 +++++++++++ .github/workflows/ci.yml | 2 +- tests/busted.lua | 28 ++++++++++++++++++++++++++++ tests/init.lua | 36 ------------------------------------ tests/run | 3 --- 5 files changed, 40 insertions(+), 40 deletions(-) create mode 100644 .busted create mode 100755 tests/busted.lua delete mode 100644 tests/init.lua delete mode 100755 tests/run diff --git a/.busted b/.busted new file mode 100644 index 0000000..98b3032 --- /dev/null +++ b/.busted @@ -0,0 +1,11 @@ +return { + _all = { + coverage = false, + }, + default = { + verbose = true, + }, + tests = { + verbose = true, + }, +} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e7c3dd2..0d20294 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -25,7 +25,7 @@ jobs: run: | nvim --version [ ! -d tests ] && exit 0 - nvim --headless -u tests/init.lua -c "PlenaryBustedDirectory tests/ {minimal_init = 'tests/init.lua', sequential = true}" + nvim -l tests/busted.lua tests community: runs-on: ubuntu-latest steps: diff --git a/tests/busted.lua b/tests/busted.lua new file mode 100755 index 0000000..146ab96 --- /dev/null +++ b/tests/busted.lua @@ -0,0 +1,28 @@ +#!/usr/bin/env -S nvim -l + +-- set stdpaths to use .tests +local root = vim.fn.fnamemodify("./.tests", ":p") +for _, name in ipairs({ "config", "data", "state", "cache" }) do + vim.env[("XDG_%s_HOME"):format(name:upper())] = root .. "/" .. name +end + +-- -- Bootstrap lazy.nvim +-- local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" +-- if not (vim.uv or vim.loop).fs_stat(lazypath) then +-- local lazyrepo = "https://github.com/folke/lazy.nvim.git" +-- vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) +-- end +-- vim.opt.rtp:prepend(lazypath) +vim.opt.rtp:prepend(".") + +vim.o.loadplugins = true -- enable since nvim -l disables plugins + +-- Setup lazy.nvim +require("lazy").setup({ + "lunarmodules/busted", -- add busted +}) + +-- run busted +return pcall(require("busted.runner"), { + standalone = false, +}) or os.exit(1) diff --git a/tests/init.lua b/tests/init.lua deleted file mode 100644 index 7b243c5..0000000 --- a/tests/init.lua +++ /dev/null @@ -1,36 +0,0 @@ -local M = {} - -function M.root(root) - local f = debug.getinfo(1, "S").source:sub(2) - return vim.fn.fnamemodify(f, ":p:h:h") .. "/" .. (root or "") -end - ----@param plugin string -function M.load(plugin) - local name = plugin:match(".*/(.*)") - local package_root = M.root(".tests/site/pack/deps/start/") - if not vim.uv.fs_stat(package_root .. name) then - print("Installing " .. plugin) - vim.fn.mkdir(package_root, "p") - vim.fn.system({ - "git", - "clone", - "--depth=1", - "https://github.com/" .. plugin .. ".git", - package_root .. "/" .. name, - }) - end -end - -function M.setup() - vim.cmd([[set runtimepath=$VIMRUNTIME]]) - vim.opt.runtimepath:append(M.root()) - vim.opt.packpath = { M.root(".tests/site") } - M.load("nvim-lua/plenary.nvim") - vim.env.XDG_CONFIG_HOME = M.root(".tests/config") - vim.env.XDG_DATA_HOME = M.root(".tests/data") - vim.env.XDG_STATE_HOME = M.root(".tests/state") - vim.env.XDG_CACHE_HOME = M.root(".tests/cache") -end - -M.setup() diff --git a/tests/run b/tests/run deleted file mode 100755 index 412d7b5..0000000 --- a/tests/run +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh - -nvim --headless -u tests/init.lua -c "PlenaryBustedDirectory tests {minimal_init = 'tests//init.lua', sequential = true}" From 0eb46e781666d2a5b288b671813f65b00896fff9 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Wed, 26 Jun 2024 14:35:29 +0200 Subject: [PATCH 134/342] ci: use utfTerminal output for busted --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0d20294..647365c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -25,7 +25,7 @@ jobs: run: | nvim --version [ ! -d tests ] && exit 0 - nvim -l tests/busted.lua tests + nvim -l tests/busted.lua tests -o utfTerminal community: runs-on: ubuntu-latest steps: From 768de1ebf6a1b45020438df018c1ba39669ca863 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Wed, 26 Jun 2024 15:11:31 +0200 Subject: [PATCH 135/342] refactor: move scheduler to async --- lua/lazy/async.lua | 107 ++++++++++++++++++++++++++++++++++ lua/lazy/manage/task/init.lua | 84 +++++++------------------- 2 files changed, 129 insertions(+), 62 deletions(-) create mode 100644 lua/lazy/async.lua diff --git a/lua/lazy/async.lua b/lua/lazy/async.lua new file mode 100644 index 0000000..a7bcfac --- /dev/null +++ b/lua/lazy/async.lua @@ -0,0 +1,107 @@ +---@class AsyncOpts +---@field on_done? fun() +---@field on_error? fun(err:string) +---@field on_yield? fun(res:any) + +local M = {} + +---@type Async[] +M._queue = {} +M._executor = assert(vim.loop.new_check()) +M._running = false + +---@class Async +---@field co thread +---@field opts AsyncOpts +local Async = {} + +---@param fn async fun() +---@param opts? AsyncOpts +---@return Async +function Async.new(fn, opts) + local self = setmetatable({}, { __index = Async }) + self.co = coroutine.create(fn) + self.opts = opts or {} + return self +end + +function Async:running() + return coroutine.status(self.co) ~= "dead" +end + +function Async:step() + local status = coroutine.status(self.co) + if status == "suspended" then + local ok, res = coroutine.resume(self.co) + if not ok then + if self.opts.on_error then + self.opts.on_error(tostring(res)) + end + elseif res then + if self.opts.on_yield then + self.opts.on_yield(res) + end + end + end + if self:running() then + return true + end + if self.opts.on_done then + self.opts.on_done() + end +end + +function M.step() + M._running = true + local budget = 1 * 1e6 + local start = vim.loop.hrtime() + local count = #M._queue + local i = 0 + while #M._queue > 0 and vim.loop.hrtime() - start < budget do + ---@type Async + local state = table.remove(M._queue, 1) + if state:step() then + table.insert(M._queue, state) + end + i = i + 1 + if i >= count then + break + end + end + M._running = false + if #M._queue == 0 then + return M._executor:stop() + end +end + +---@param async Async +function M.add(async) + table.insert(M._queue, async) + if not M._executor:is_active() then + M._executor:start(vim.schedule_wrap(M.step)) + end + return async +end + +---@param fn async fun() +---@param opts? AsyncOpts +function M.run(fn, opts) + return M.add(Async.new(fn, opts)) +end + +---@generic T: async fun() +---@param fn T +---@param opts? AsyncOpts +---@return T +function M.wrap(fn, opts) + return function(...) + local args = { ... } + ---@async + local wrapped = function() + return fn(unpack(args)) + end + return M.run(wrapped, opts) + end +end + +return M diff --git a/lua/lazy/manage/task/init.lua b/lua/lazy/manage/task/init.lua index 9c2d179..5a9079d 100644 --- a/lua/lazy/manage/task/init.lua +++ b/lua/lazy/manage/task/init.lua @@ -1,3 +1,4 @@ +local Async = require("lazy.async") local Process = require("lazy.manage.process") ---@class LazyTaskDef @@ -6,44 +7,6 @@ local Process = require("lazy.manage.process") ---@alias LazyTaskState {task:LazyTask, thread:thread} -local Scheduler = {} ----@type LazyTaskState[] -Scheduler._queue = {} -Scheduler._executor = assert(vim.loop.new_check()) -Scheduler._running = false - -function Scheduler.step() - Scheduler._running = true - local budget = 1 * 1e6 - local start = vim.loop.hrtime() - local count = #Scheduler._queue - local i = 0 - while #Scheduler._queue > 0 and vim.loop.hrtime() - start < budget do - ---@type LazyTaskState - local state = table.remove(Scheduler._queue, 1) - state.task:_step(state.thread) - if coroutine.status(state.thread) ~= "dead" then - table.insert(Scheduler._queue, state) - end - i = i + 1 - if i >= count then - break - end - end - Scheduler._running = false - if #Scheduler._queue == 0 then - return Scheduler._executor:stop() - end -end - ----@param state LazyTaskState -function Scheduler.add(state) - table.insert(Scheduler._queue, state) - if not Scheduler._executor:is_active() then - Scheduler._executor:start(vim.schedule_wrap(Scheduler.step)) - end -end - ---@class LazyTask ---@field plugin LazyPlugin ---@field name string @@ -55,7 +18,7 @@ end ---@field private _started? number ---@field private _ended? number ---@field private _opts TaskOptions ----@field private _threads thread[] +---@field private _running Async[] local Task = {} ---@class TaskOptions: {[string]:any} @@ -70,7 +33,7 @@ function Task.new(plugin, name, task, opts) __index = Task, }) self._opts = opts or {} - self._threads = {} + self._running = {} self._task = task self._started = nil self.plugin = plugin @@ -137,34 +100,31 @@ end ---@param fn async fun() function Task:async(fn) - local co = coroutine.create(fn) - table.insert(self._threads, co) - Scheduler.add({ task = self, thread = co }) -end - ----@param co thread -function Task:_step(co) - local status = coroutine.status(co) - if status == "suspended" then - local ok, res = coroutine.resume(co) - if not ok then - self:notify_error(tostring(res)) - elseif res then - self:notify(tostring(res)) - end - end - for _, t in ipairs(self._threads) do - if coroutine.status(t) ~= "dead" then - return - end - end - self:_done() + local async = Async.run(fn, { + on_done = function() + self:_done() + end, + on_error = function(err) + self:notify_error(err) + end, + on_yield = function(res) + self:notify(res) + end, + }) + table.insert(self._running, async) end ---@private function Task:_done() assert(self:has_started(), "task not started") assert(not self:has_ended(), "task already done") + + for _, t in ipairs(self._running) do + if t:running() then + return + end + end + self._ended = vim.uv.hrtime() if self._opts.on_done then self._opts.on_done(self) From 765773a176dced0b9e95a0797af4c19f639d71af Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Wed, 26 Jun 2024 17:06:56 +0200 Subject: [PATCH 136/342] refactor: use new async code for runner and simplify task class --- lua/lazy/manage/runner.lua | 208 +++++++++++++------------------- lua/lazy/manage/task/init.lua | 74 ++++-------- lua/lazy/manage/task/plugin.lua | 6 +- tests/manage/runner_spec.lua | 7 +- tests/manage/task_spec.lua | 43 +++---- 5 files changed, 133 insertions(+), 205 deletions(-) diff --git a/lua/lazy/manage/runner.lua b/lua/lazy/manage/runner.lua index 9b766df..31b194b 100644 --- a/lua/lazy/manage/runner.lua +++ b/lua/lazy/manage/runner.lua @@ -1,23 +1,24 @@ +local Async = require("lazy.async") local Config = require("lazy.core.config") local Task = require("lazy.manage.task") -local Util = require("lazy.util") ---@class RunnerOpts ---@field pipeline (string|{[1]:string, [string]:any})[] ---@field plugins? LazyPlugin[]|fun(plugin:LazyPlugin):any? ---@field concurrency? number ----@alias PipelineStep {task:string, opts?:TaskOptions} ----@alias LazyRunnerTask {co:thread, status: {task?:LazyTask, waiting?:boolean}, plugin: string} +---@class RunnerTask +---@field task? LazyTask +---@field step number + +---@alias PipelineStep {task:string, opts?:TaskOptions } ---@class Runner ---@field _plugins table ----@field _running LazyRunnerTask[] ---@field _pipeline PipelineStep[] ----@field _sync PipelineStep[] ---@field _on_done fun()[] ----@field _syncing boolean ---@field _opts RunnerOpts +---@field _running? Async local Runner = {} ---@param opts RunnerOpts @@ -37,7 +38,6 @@ function Runner.new(opts) for _, plugin in ipairs(pp) do self._plugins[plugin.name] = plugin end - self._running = {} self._on_done = {} ---@param step string|(TaskOptions|{[1]:string}) @@ -45,10 +45,6 @@ function Runner.new(opts) return type(step) == "string" and { task = step } or { task = step[1], opts = step } end, self._opts.pipeline) - self._sync = vim.tbl_filter(function(step) - return step.task == "wait" - end, self._pipeline) - return self end @@ -56,139 +52,107 @@ function Runner:plugin(name) return Config.plugins[name] or self._plugins[name] end ----@param entry LazyRunnerTask -function Runner:_resume(entry) - if entry.status.task and not entry.status.task:is_done() then - return true - end - local ok, status = coroutine.resume(entry.co) - if not ok then - Util.error("Could not resume a task\n" .. status) - end - entry.status = ok and status - return entry.status ~= nil -end - -function Runner:resume(waiting) - if self._syncing then - return true - end - if waiting then - local sync = self._sync[1] - table.remove(self._sync, 1) - if sync then - self._syncing = true - vim.schedule(function() - if sync.opts and type(sync.opts.sync) == "function" then - sync.opts.sync(self) - end - for _, entry in ipairs(self._running) do - if entry.status then - if entry.status.waiting then - entry.status.waiting = false - local plugin = self:plugin(entry.plugin) - if plugin then - plugin._.working = true - end - end - end - end - self._syncing = false - end) - end - end - local running = 0 - for _, entry in ipairs(self._running) do - if entry.status then - if not entry.status.waiting and self:_resume(entry) then - running = running + 1 - if self._opts.concurrency and running >= self._opts.concurrency then - break - end - end - end - end - return self._syncing or running > 0 or (not waiting and self:resume(true)) -end - function Runner:start() - ---@type string[] - local names = vim.tbl_keys(self._plugins) - table.sort(names) - for _, name in pairs(names) do - local co = coroutine.create(self.run_pipeline) - local ok, err = coroutine.resume(co, self, name) - if ok then - table.insert(self._running, { co = co, status = {}, plugin = name }) - else - Util.error("Could not start tasks for " .. name .. "\n" .. err) - end - end - - local check = vim.uv.new_check() - check:start(function() - if self:resume() then - return - end - check:stop() - self._running = {} - for _, cb in ipairs(self._on_done) do - vim.schedule(cb) - end - self._on_done = {} - end) + ---@async + self._running = Async.run(function() + self:_start() + end, { + on_done = function() + for _, cb in ipairs(self._on_done) do + cb() + end + end, + }) end ---@async ----@param name string -function Runner:run_pipeline(name) - local plugin = self:plugin(name) - plugin._.working = true - coroutine.yield() - for _, step in ipairs(self._pipeline) do - if step.task == "wait" then - plugin._.working = false - coroutine.yield({ waiting = true }) - plugin._.working = true - else - plugin = self:plugin(name) - local task = self:queue(plugin, step.task, step.opts) - if task then - coroutine.yield({ task = task }) - assert(task:is_done()) - if task.error then +function Runner:_start() + ---@type string[] + local names = vim.tbl_keys(self._plugins) + table.sort(names) + + ---@type table + local state = {} + + local active = 1 + local waiting = 0 + ---@type number? + local wait_step = nil + + ---@param resume? boolean + local function continue(resume) + active = #names + waiting = 0 + wait_step = nil + for _, name in ipairs(names) do + state[name] = state[name] or { step = 0 } + local s = state[name] + local running = s.task and s.task:is_running() + local step = self._pipeline[s.step] + + if step and step.task == "wait" and not resume then + waiting = waiting + 1 + active = active - 1 + wait_step = s.step + elseif not running then + local plugin = self:plugin(name) + if s.task and s.task.error then + active = active - 1 + elseif s.step == #self._pipeline then + s.task = nil + active = active - 1 plugin._.working = false - return + elseif s.step < #self._pipeline then + s.step = s.step + 1 + step = self._pipeline[s.step] + if step.task == "wait" then + plugin._.working = false + else + s.task = self:queue(plugin, step) + plugin._.working = not not s.task + end end end end end - plugin._.working = false + + while active > 0 do + continue() + if active == 0 and waiting > 0 then + local sync = self._pipeline[wait_step] + if sync and sync.opts and type(sync.opts.sync) == "function" then + sync.opts.sync(self) + end + continue(true) + end + coroutine.yield() + end end ---@param plugin LazyPlugin ----@param task_name string ----@param opts? TaskOptions +---@param step PipelineStep ---@return LazyTask? -function Runner:queue(plugin, task_name, opts) - assert(self._running) - local def = vim.split(task_name, ".", { plain = true }) +function Runner:queue(plugin, step) + assert(self._running and self._running:running(), "Runner is not running") + local def = vim.split(step.task, ".", { plain = true }) ---@type LazyTaskDef local task_def = require("lazy.manage.task." .. def[1])[def[2]] - assert(task_def) - opts = opts or {} + assert(task_def, "Task not found: " .. step.task) + local opts = step.opts or {} if not (task_def.skip and task_def.skip(plugin, opts)) then - local task = Task.new(plugin, def[2], task_def.run, opts) - task:start() - return task + return Task.new(plugin, def[2], task_def.run, opts) end end +function Runner:is_running() + return self._running and self._running:running() +end + -- Execute the callback async when done. -- When no callback is specified, this will wait sync ---@param cb? fun() function Runner:wait(cb) - if #self._running == 0 then + if not self:is_running() then if cb then cb() end @@ -199,7 +163,7 @@ function Runner:wait(cb) table.insert(self._on_done, cb) else -- sync wait - while #self._running > 0 do + while self:is_running() do vim.wait(10) end end diff --git a/lua/lazy/manage/task/init.lua b/lua/lazy/manage/task/init.lua index 5a9079d..98c7636 100644 --- a/lua/lazy/manage/task/init.lua +++ b/lua/lazy/manage/task/init.lua @@ -5,7 +5,7 @@ local Process = require("lazy.manage.process") ---@field skip? fun(plugin:LazyPlugin, opts?:TaskOptions):any? ---@field run fun(task:LazyTask, opts:TaskOptions) ----@alias LazyTaskState {task:LazyTask, thread:thread} +---@alias LazyTaskFn async fun(task:LazyTask, opts:TaskOptions) ---@class LazyTask ---@field plugin LazyPlugin @@ -14,11 +14,10 @@ local Process = require("lazy.manage.process") ---@field status string ---@field error? string ---@field warn? string ----@field private _task fun(task:LazyTask, opts:TaskOptions) ---@field private _started? number ---@field private _ended? number ---@field private _opts TaskOptions ----@field private _running Async[] +---@field private _running Async local Task = {} ---@class TaskOptions: {[string]:any} @@ -27,15 +26,10 @@ local Task = {} ---@param plugin LazyPlugin ---@param name string ---@param opts? TaskOptions ----@param task fun(task:LazyTask) +---@param task LazyTaskFn function Task.new(plugin, name, task, opts) - local self = setmetatable({}, { - __index = Task, - }) + local self = setmetatable({}, { __index = Task }) self._opts = opts or {} - self._running = {} - self._task = task - self._started = nil self.plugin = plugin self.name = name self.output = "" @@ -45,6 +39,7 @@ function Task.new(plugin, name, task, opts) return other.name ~= name or other:is_running() end, plugin._.tasks or {}) table.insert(plugin._.tasks, self) + self:_start(task) return self end @@ -56,22 +51,31 @@ function Task:has_ended() return self._ended ~= nil end -function Task:is_done() - return self:has_started() and self:has_ended() -end - function Task:is_running() - return self:has_started() and not self:has_ended() + return not self:has_ended() end -function Task:start() +---@private +---@param task LazyTaskFn +function Task:_start(task) assert(not self:has_started(), "task already started") assert(not self:has_ended(), "task already done") self._started = vim.uv.hrtime() - self:async(function() - self._task(self, self._opts) - end) + ---@async + self._running = Async.run(function() + task(self, self._opts) + end, { + on_done = function() + self:_done() + end, + on_error = function(err) + self:notify_error(err) + end, + on_yield = function(res) + self:notify(res) + end, + }) end ---@param msg string|string[] @@ -98,31 +102,13 @@ function Task:notify_warn(msg) self:notify(msg, vim.diagnostic.severity.WARN) end ----@param fn async fun() -function Task:async(fn) - local async = Async.run(fn, { - on_done = function() - self:_done() - end, - on_error = function(err) - self:notify_error(err) - end, - on_yield = function(res) - self:notify(res) - end, - }) - table.insert(self._running, async) -end - ---@private function Task:_done() assert(self:has_started(), "task not started") assert(not self:has_ended(), "task already done") - for _, t in ipairs(self._running) do - if t:running() then - return - end + if self._running and self._running:running() then + return end self._ended = vim.uv.hrtime() @@ -180,16 +166,6 @@ function Task:spawn(cmd, opts) end end ----@param tasks (LazyTask?)[] -function Task.all_done(tasks) - for _, task in ipairs(tasks) do - if task and not task:is_done() then - return false - end - end - return true -end - function Task:wait() while self:is_running() do vim.wait(10) diff --git a/lua/lazy/manage/task/plugin.lua b/lua/lazy/manage/task/plugin.lua index cb426ec..ddf53a1 100644 --- a/lua/lazy/manage/task/plugin.lua +++ b/lua/lazy/manage/task/plugin.lua @@ -65,9 +65,7 @@ M.build = { ---@cast builders (string|fun(LazyPlugin))[] for _, build in ipairs(builders) do if type(build) == "function" then - self:async(function() - build(self.plugin) - end) + build(self.plugin) elseif build == "rockspec" then Rocks.build(self) elseif build:sub(1, 1) == ":" then @@ -78,7 +76,7 @@ M.build = { if not chunk or err then error(err) end - self:async(chunk) + chunk() else B.shell(self, build) end diff --git a/tests/manage/runner_spec.lua b/tests/manage/runner_spec.lua index ba940e2..2eb1ab1 100644 --- a/tests/manage/runner_spec.lua +++ b/tests/manage/runner_spec.lua @@ -30,12 +30,11 @@ describe("runner", function() end, } package.loaded["lazy.manage.task.test"]["async" .. i] = { + ---@async ---@param task LazyTask run = function(task) - task:async(function() - coroutine.yield() - table.insert(runs, { plugin = task.plugin.name, task = task.name }) - end) + coroutine.yield() + table.insert(runs, { plugin = task.plugin.name, task = task.name }) end, } end diff --git a/tests/manage/task_spec.lua b/tests/manage/task_spec.lua index 546bc34..11487c5 100644 --- a/tests/manage/task_spec.lua +++ b/tests/manage/task_spec.lua @@ -1,3 +1,4 @@ +---@module 'luassert' --# selene:allow(incorrect_standard_library_use) local Task = require("lazy.manage.task") @@ -20,12 +21,10 @@ describe("task", function() it("simple function", function() local task = Task.new(plugin, "test", function() end, opts) - assert(not task:has_started()) - assert(not task:is_running()) - task:start() + assert(task:has_started()) + assert(task:is_running()) task:wait() assert(not task:is_running()) - assert(task:is_done()) assert(task_result.done) end) @@ -33,11 +32,9 @@ describe("task", function() local task = Task.new(plugin, "test", function() error("test") end, opts) - assert(not task:has_started()) - assert(not task:is_running()) - task:start() + assert(task:has_started()) + assert(task:is_running()) task:wait() - assert(task:is_done()) assert(not task:is_running()) assert(task_result.done) assert(task_result.error) @@ -46,21 +43,17 @@ describe("task", function() it("async", function() local running = true - local task = Task.new(plugin, "test", function(task) - task:async(function() - coroutine.yield() - running = false - end) + ---@async + local task = Task.new(plugin, "test", function() + coroutine.yield() + running = false end, opts) - assert(not task:is_running()) - assert(not task:has_started()) - task:start() + assert(task:has_started()) + assert(task:is_running()) assert(running) assert(task:is_running()) - assert(not task:is_done()) task:wait() assert(not running) - assert(task:is_done()) assert(not task:is_running()) assert(task_result.done) assert(not task.error) @@ -70,8 +63,8 @@ describe("task", function() local task = Task.new(plugin, "spawn_errors", function(task) task:spawn("foobar") end, opts) - assert(not task:is_running()) - task:start() + assert(task:has_started()) + assert(task:is_running()) task:wait() assert(not task:is_running()) assert(task_result.done) @@ -82,13 +75,11 @@ describe("task", function() local task = Task.new(plugin, "test", function(task) task:spawn("echo", { args = { "foo" } }) end, opts) - assert(not task:is_running()) - assert(not task:has_started()) - task:start() + assert(task:has_started()) + assert(task:is_running()) assert(task:has_started()) assert(task:is_running()) task:wait() - assert(task:is_done()) assert.same(task.output, "foo\n") assert(task_result.done) assert(not task.error) @@ -99,8 +90,8 @@ describe("task", function() task:spawn("echo", { args = { "foo" } }) task:spawn("echo", { args = { "bar" } }) end, opts) - assert(not task:is_running()) - task:start() + assert(task:has_started()) + assert(task:is_running()) assert(task:is_running()) task:wait() assert(task.output == "foo\nbar\n" or task.output == "bar\nfoo\n", task.output) From 6c7ef7e27a797acd68f6bffcb90d58f03dd8431d Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Wed, 26 Jun 2024 18:31:31 +0200 Subject: [PATCH 137/342] refactor: logging --- lua/lazy/core/plugin.lua | 2 +- lua/lazy/manage/init.lua | 2 +- lua/lazy/manage/runner.lua | 2 +- lua/lazy/manage/task/git.lua | 27 +++++++---- lua/lazy/manage/task/init.lua | 82 ++++++++++++++++++++++----------- lua/lazy/manage/task/plugin.lua | 7 +-- lua/lazy/pkg/rockspec.lua | 6 +-- lua/lazy/view/colors.lua | 5 +- lua/lazy/view/render.lua | 68 +++++++++++++++------------ lua/lazy/view/sections.lua | 9 ++-- 10 files changed, 130 insertions(+), 80 deletions(-) diff --git a/lua/lazy/core/plugin.lua b/lua/lazy/core/plugin.lua index a806b0a..a3cb497 100644 --- a/lua/lazy/core/plugin.lua +++ b/lua/lazy/core/plugin.lua @@ -403,7 +403,7 @@ end ---@param plugin LazyPlugin function M.has_errors(plugin) for _, task in ipairs(plugin._.tasks or {}) do - if task.error then + if task:has_errors() then return true end end diff --git a/lua/lazy/manage/init.lua b/lua/lazy/manage/init.lua index 9737538..e0b2233 100644 --- a/lua/lazy/manage/init.lua +++ b/lua/lazy/manage/init.lua @@ -232,7 +232,7 @@ function M.clear(plugins) if plugin._.tasks then ---@param task LazyTask plugin._.tasks = vim.tbl_filter(function(task) - return task:is_running() or task.error + return task:is_running() or task:has_errors() end, plugin._.tasks) end end diff --git a/lua/lazy/manage/runner.lua b/lua/lazy/manage/runner.lua index 31b194b..e517ddc 100644 --- a/lua/lazy/manage/runner.lua +++ b/lua/lazy/manage/runner.lua @@ -96,7 +96,7 @@ function Runner:_start() wait_step = s.step elseif not running then local plugin = self:plugin(name) - if s.task and s.task.error then + if s.task and s.task:has_errors() then active = active - 1 elseif s.step == #self._pipeline then s.task = nil diff --git a/lua/lazy/manage/task/git.lua b/lua/lazy/manage/task/git.lua index 56d2b73..4bd7134 100644 --- a/lua/lazy/manage/task/git.lua +++ b/lua/lazy/manage/task/git.lua @@ -18,6 +18,7 @@ M.log = { local stat = vim.uv.fs_stat(plugin.dir .. "/.git") return not (stat and stat.type == "directory") end, + ---@async ---@param opts {args?: string[], updated?:boolean, check?:boolean} run = function(self, opts) local args = { @@ -68,6 +69,7 @@ M.clone = { skip = function(plugin) return plugin._.installed or plugin._.is_local end, + ---@async run = function(self) local args = { "clone", @@ -129,6 +131,7 @@ M.branch = { local branch = assert(Git.get_branch(plugin)) return Git.get_commit(plugin.dir, branch, true) end, + ---@async run = function(self) local args = { "remote", @@ -154,14 +157,17 @@ M.origin = { local origin = Git.get_origin(plugin.dir) return origin == plugin.url end, + ---@async ---@param opts {check?:boolean} run = function(self, opts) if opts.check then local origin = Git.get_origin(self.plugin.dir) - self.error = "Origin has changed:\n" - self.error = self.error .. " * old: " .. origin .. "\n" - self.error = self.error .. " * new: " .. self.plugin.url .. "\n" - self.error = self.error .. "Please run update to fix" + self:error({ + "Origin has changed:", + " * old: " .. origin, + " * new: " .. self.plugin.url, + "Please run update to fix", + }) return end require("lazy.manage.task.fs").clean.run(self, opts) @@ -173,6 +179,7 @@ M.status = { skip = function(plugin) return not plugin._.installed or plugin._.is_local end, + ---@async run = function(self) self:spawn("git", { args = { "ls-files", "-d", "-m" }, @@ -180,6 +187,7 @@ M.status = { on_exit = function(ok, output) if ok then local lines = vim.split(output, "\n") + ---@type string[] lines = vim.tbl_filter(function(line) -- Fix doc/tags being marked as modified if line:gsub("[\\/]", "/") == "doc/tags" then @@ -190,12 +198,13 @@ M.status = { return line ~= "" end, lines) if #lines > 0 then - self.error = "You have local changes in `" .. self.plugin.dir .. "`:\n" + local msg = { "You have local changes in `" .. self.plugin.dir .. "`:" } for _, line in ipairs(lines) do - self.error = self.error .. " * " .. line .. "\n" + msg[#msg + 1] = " * " .. line end - self.error = self.error .. "Please remove them to update.\n" - self.error = self.error .. "You can also press `x` to remove the plugin and then `I` to install it again." + msg[#msg + 1] = "Please remove them to update." + msg[#msg + 1] = "You can also press `x` to remove the plugin and then `I` to install it again." + self:error(msg) end end end, @@ -209,6 +218,7 @@ M.fetch = { return not plugin._.installed or plugin._.is_local end, + ---@async run = function(self) local args = { "fetch", @@ -236,6 +246,7 @@ M.checkout = { return not plugin._.installed or plugin._.is_local end, + ---@async ---@param opts {lockfile?:boolean} run = function(self, opts) local info = assert(Git.info(self.plugin.dir)) diff --git a/lua/lazy/manage/task/init.lua b/lua/lazy/manage/task/init.lua index 98c7636..496dac9 100644 --- a/lua/lazy/manage/task/init.lua +++ b/lua/lazy/manage/task/init.lua @@ -3,21 +3,23 @@ local Process = require("lazy.manage.process") ---@class LazyTaskDef ---@field skip? fun(plugin:LazyPlugin, opts?:TaskOptions):any? ----@field run fun(task:LazyTask, opts:TaskOptions) +---@field run async fun(task:LazyTask, opts:TaskOptions) ---@alias LazyTaskFn async fun(task:LazyTask, opts:TaskOptions) +---@class LazyMsg +---@field msg string +---@field level? number + ---@class LazyTask ---@field plugin LazyPlugin ---@field name string ----@field output string ----@field status string ----@field error? string ----@field warn? string +---@field private _log LazyMsg[] ---@field private _started? number ---@field private _ended? number ---@field private _opts TaskOptions ---@field private _running Async +---@field private _level number local Task = {} ---@class TaskOptions: {[string]:any} @@ -30,10 +32,10 @@ local Task = {} function Task.new(plugin, name, task, opts) local self = setmetatable({}, { __index = Task }) self._opts = opts or {} + self._log = {} + self._level = vim.log.levels.TRACE self.plugin = plugin self.name = name - self.output = "" - self.status = "" ---@param other LazyTask plugin._.tasks = vim.tbl_filter(function(other) return other.name ~= name or other:is_running() @@ -43,6 +45,31 @@ function Task.new(plugin, name, task, opts) return self end +---@param level? number +---@return LazyMsg[] +function Task:get_log(level) + level = level or vim.log.levels.DEBUG + return vim.tbl_filter(function(msg) + return msg.level >= level + end, self._log) +end + +---@param level? number +function Task:output(level) + return table.concat( + ---@param m LazyMsg + vim.tbl_map(function(m) + return m.msg + end, self:get_log(level)), + "\n" + ) +end + +function Task:status() + local ret = self._log[#self._log] + return ret and ret.msg or "" +end + function Task:has_started() return self._started ~= nil end @@ -55,6 +82,14 @@ function Task:is_running() return not self:has_ended() end +function Task:has_errors() + return self._level >= vim.log.levels.ERROR +end + +function Task:has_warnings() + return self._level >= vim.log.levels.WARN +end + ---@private ---@param task LazyTaskFn function Task:_start(task) @@ -70,36 +105,33 @@ function Task:_start(task) self:_done() end, on_error = function(err) - self:notify_error(err) + self:error(err) end, on_yield = function(res) - self:notify(res) + self:log(res) end, }) end ---@param msg string|string[] ----@param severity? vim.diagnostic.Severity -function Task:notify(msg, severity) - local var = severity == vim.diagnostic.severity.ERROR and "error" - or severity == vim.diagnostic.severity.WARN and "warn" - or "output" +---@param level? number +function Task:log(msg, level) + level = level or vim.log.levels.DEBUG + self._level = math.max(self._level or 0, level or 0) msg = type(msg) == "table" and table.concat(msg, "\n") or msg ---@cast msg string - ---@diagnostic disable-next-line: no-unknown - self[var] = self[var] and (self[var] .. "\n" .. msg) or msg - self.status = msg + table.insert(self._log, { msg = msg, level = level }) vim.api.nvim_exec_autocmds("User", { pattern = "LazyRender", modeline = false }) end ---@param msg string|string[] -function Task:notify_error(msg) - self:notify(msg, vim.diagnostic.severity.ERROR) +function Task:error(msg) + self:log(msg, vim.log.levels.ERROR) end ---@param msg string|string[] -function Task:notify_warn(msg) - self:notify(msg, vim.diagnostic.severity.WARN) +function Task:warn(msg) + self:log(msg, vim.log.levels.WARN) end ---@private @@ -141,20 +173,16 @@ function Task:spawn(cmd, opts) local on_exit = opts.on_exit function opts.on_line(line) - self.status = line + self:log(line, vim.log.levels.TRACE) if on_line then pcall(on_line, line) end - vim.api.nvim_exec_autocmds("User", { pattern = "LazyRender", modeline = false }) end local running = true ---@param output string function opts.on_exit(ok, output) - self.output = self.output .. output - if not ok then - self.error = self.error and (self.error .. "\n" .. output) or output - end + self:log(output, ok and vim.log.levels.DEBUG or vim.log.levels.ERROR) if on_exit then pcall(on_exit, ok, output) end diff --git a/lua/lazy/manage/task/plugin.lua b/lua/lazy/manage/task/plugin.lua index ddf53a1..fd6c12b 100644 --- a/lua/lazy/manage/task/plugin.lua +++ b/lua/lazy/manage/task/plugin.lua @@ -1,4 +1,3 @@ -local Config = require("lazy.core.config") local Loader = require("lazy.core.loader") local Rocks = require("lazy.pkg.rockspec") local Util = require("lazy.util") @@ -21,9 +20,10 @@ local B = {} ---@param build string function B.cmd(task, build) local cmd = vim.api.nvim_parse_cmd(build:sub(2), {}) --[[@as vim.api.keyset.cmd]] - task.output = vim.api.nvim_cmd(cmd, { output = true }) + task:log(vim.api.nvim_cmd(cmd, { output = true })) end +---@async ---@param task LazyTask ---@param build string function B.shell(task, build) @@ -44,6 +44,7 @@ M.build = { end return not ((plugin._.dirty or plugin._.build) and (plugin.build or get_build_file(plugin))) end, + ---@async run = function(self) vim.cmd([[silent! runtime plugin/rplugin.vim]]) @@ -92,7 +93,7 @@ M.docs = { run = function(self) local docs = self.plugin.dir .. "/doc/" if Util.file_exists(docs) then - self.output = vim.api.nvim_cmd({ cmd = "helptags", args = { docs } }, { output = true }) + self:log(vim.api.nvim_cmd({ cmd = "helptags", args = { docs } }, { output = true })) end end, } diff --git a/lua/lazy/pkg/rockspec.lua b/lua/lazy/pkg/rockspec.lua index 2eca5bd..04ff937 100644 --- a/lua/lazy/pkg/rockspec.lua +++ b/lua/lazy/pkg/rockspec.lua @@ -106,15 +106,15 @@ function M.build(task) if not M.check({ error = function(msg) - task:notify_error(msg:gsub("[{}]", "`")) + task:error(msg:gsub("[{}]", "`")) end, warn = function(msg) - task:notify_warn(msg) + task:warn(msg) end, ok = function(msg) end, }) then - task:notify_warn({ + task:log({ "", "This plugin requires `luarocks`. Try one of the following:", " - fix your `luarocks` installation", diff --git a/lua/lazy/view/colors.lua b/lua/lazy/view/colors.lua index e55c56b..c1dbe50 100644 --- a/lua/lazy/view/colors.lua +++ b/lua/lazy/view/colors.lua @@ -30,8 +30,9 @@ M.colors = { Button = "CursorLine", ButtonActive = "Visual", TaskOutput = "MsgArea", -- task output - TaskError = "ErrorMsg", -- task errors - TaskWarning = "WarningMsg", -- task errors + Error = "DiagnosticError", -- task errors + Warning = "DiagnosticWarn", -- task errors + Info = "DiagnosticInfo", -- task errors Dir = "@markup.link", -- directory Url = "@markup.link", -- url Bold = { bold = true }, diff --git a/lua/lazy/view/render.lua b/lua/lazy/view/render.lua index a2c33c1..00ebd8f 100644 --- a/lua/lazy/view/render.lua +++ b/lua/lazy/view/render.lua @@ -354,6 +354,31 @@ end ---@param plugin LazyPlugin function M:diagnostics(plugin) + local skip = false + for _, task in ipairs(plugin._.tasks or {}) do + if task:is_running() then + self:diagnostic({ + severity = vim.diagnostic.severity.WARN, + message = task.name .. (task:status() and (": " .. task:status()) or ""), + }) + skip = true + elseif task:has_errors() then + self:diagnostic({ + message = task.name .. " failed", + severity = vim.diagnostic.severity.ERROR, + }) + skip = true + elseif task:has_warnings() then + self:diagnostic({ + message = task.name .. " warning", + severity = vim.diagnostic.severity.WARN, + }) + skip = true + end + end + if skip then + return + end if plugin._.updated then if plugin._.updated.from == plugin._.updated.to then self:diagnostic({ @@ -383,24 +408,6 @@ function M:diagnostics(plugin) }) end end - for _, task in ipairs(plugin._.tasks or {}) do - if task:is_running() then - self:diagnostic({ - severity = vim.diagnostic.severity.WARN, - message = task.name .. (task.status == "" and "" or (": " .. task.status)), - }) - elseif task.error then - self:diagnostic({ - message = task.name .. " failed", - severity = vim.diagnostic.severity.ERROR, - }) - elseif task.warn then - self:diagnostic({ - message = task.name .. " warning", - severity = vim.diagnostic.severity.WARN, - }) - end - end end ---@param plugin LazyPlugin @@ -463,24 +470,27 @@ function M:tasks(plugin) self:append(" " .. math.floor((task:time()) * 100) / 100 .. "ms", "Bold") self:nl() end - if task.error then - self:markdown(task.error, "LazyTaskError", { indent = 6 }) - end - if task.warn then - self:markdown(task.warn, "LazyTaskWarning", { indent = 6 }) - end - if not task.error and not task.warn and task.name == "log" then + + if not task:has_warnings() and task.name == "log" then self:log(task) - end - if (self.view:is_selected(plugin) or (task.error or task.warn)) and task.output ~= task.error then - self:markdown(vim.trim(task.output), "LazyTaskOutput", { indent = 6 }) + else + local hls = { + [vim.log.levels.ERROR] = "LazyError", + [vim.log.levels.WARN] = "LazyWarning", + [vim.log.levels.INFO] = "LazyInfo", + } + for _, msg in ipairs(task:get_log()) do + if task:has_warnings() or self.view:is_selected(plugin) then + self:markdown(msg.msg, hls[msg.level] or "LazyTaskOutput", { indent = 6 }) + end + end end end end ---@param task LazyTask function M:log(task) - local log = vim.trim(task.output) + local log = vim.trim(task:output()) if log ~= "" then local lines = vim.split(log, "\n") for _, line in ipairs(lines) do diff --git a/lua/lazy/view/sections.lua b/lua/lazy/view/sections.lua index 5dfb57e..e2892a2 100644 --- a/lua/lazy/view/sections.lua +++ b/lua/lazy/view/sections.lua @@ -17,7 +17,7 @@ return { { filter = function(plugin) return has_task(plugin, function(task) - return task.error ~= nil + return task:has_errors() end) end, title = "Failed", @@ -39,8 +39,7 @@ return { if task.name ~= "log" then return end - local lines = vim.split(task.output, "\n") - for _, line in ipairs(lines) do + for _, line in ipairs(vim.split(task:output(), "\n")) do if line:find("^%w+ %S+!:") then return true end @@ -71,7 +70,7 @@ return { { filter = function(plugin) return has_task(plugin, function(task) - return task.name == "log" and vim.trim(task.output) ~= "" + return task.name == "log" and vim.trim(task:output()) ~= "" end) end, title = "Log", @@ -89,7 +88,7 @@ return { title = "Not Installed", }, { - filter = function (plugin) + filter = function(plugin) return plugin._.outdated end, title = "Outdated", From 206d2080189e44c536d107f15c2ba2dc6fc1b6ea Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Wed, 26 Jun 2024 18:42:52 +0200 Subject: [PATCH 138/342] test: fix tests --- lua/lazy/manage/runner.lua | 15 ++++++++------- lua/lazy/manage/task/init.lua | 2 +- tests/manage/task_spec.lua | 14 +++++++------- 3 files changed, 16 insertions(+), 15 deletions(-) diff --git a/lua/lazy/manage/runner.lua b/lua/lazy/manage/runner.lua index e517ddc..0b0e5c4 100644 --- a/lua/lazy/manage/runner.lua +++ b/lua/lazy/manage/runner.lua @@ -81,7 +81,7 @@ function Runner:_start() ---@param resume? boolean local function continue(resume) - active = #names + active = 0 waiting = 0 wait_step = nil for _, name in ipairs(names) do @@ -90,19 +90,18 @@ function Runner:_start() local running = s.task and s.task:is_running() local step = self._pipeline[s.step] - if step and step.task == "wait" and not resume then + if s.task and s.task:has_errors() then + local ignore = true + elseif step and step.task == "wait" and not resume then waiting = waiting + 1 - active = active - 1 wait_step = s.step elseif not running then local plugin = self:plugin(name) - if s.task and s.task:has_errors() then - active = active - 1 - elseif s.step == #self._pipeline then + if s.step == #self._pipeline then s.task = nil - active = active - 1 plugin._.working = false elseif s.step < #self._pipeline then + active = active + 1 s.step = s.step + 1 step = self._pipeline[s.step] if step.task == "wait" then @@ -112,6 +111,8 @@ function Runner:_start() plugin._.working = not not s.task end end + else + active = active + 1 end end end diff --git a/lua/lazy/manage/task/init.lua b/lua/lazy/manage/task/init.lua index 496dac9..8c5f83f 100644 --- a/lua/lazy/manage/task/init.lua +++ b/lua/lazy/manage/task/init.lua @@ -182,7 +182,7 @@ function Task:spawn(cmd, opts) local running = true ---@param output string function opts.on_exit(ok, output) - self:log(output, ok and vim.log.levels.DEBUG or vim.log.levels.ERROR) + self:log(vim.trim(output), ok and vim.log.levels.DEBUG or vim.log.levels.ERROR) if on_exit then pcall(on_exit, ok, output) end diff --git a/tests/manage/task_spec.lua b/tests/manage/task_spec.lua index 11487c5..adb01e8 100644 --- a/tests/manage/task_spec.lua +++ b/tests/manage/task_spec.lua @@ -38,7 +38,7 @@ describe("task", function() assert(not task:is_running()) assert(task_result.done) assert(task_result.error) - assert(task.error and task.error:find("test")) + assert(task:has_errors() and task:output(vim.log.levels.ERROR):find("test")) end) it("async", function() @@ -56,7 +56,7 @@ describe("task", function() assert(not running) assert(not task:is_running()) assert(task_result.done) - assert(not task.error) + assert(not task:has_errors()) end) it("spawn errors", function() @@ -68,7 +68,7 @@ describe("task", function() task:wait() assert(not task:is_running()) assert(task_result.done) - assert(task.error and task.error:find("Failed to spawn"), task.output) + assert(task:has_errors() and task:output(vim.log.levels.ERROR):find("Failed to spawn"), task.output) end) it("spawn", function() @@ -80,9 +80,9 @@ describe("task", function() assert(task:has_started()) assert(task:is_running()) task:wait() - assert.same(task.output, "foo\n") + assert.same(task:output(), "foo") assert(task_result.done) - assert(not task.error) + assert(not task:has_errors()) end) it("spawn 2x", function() @@ -94,8 +94,8 @@ describe("task", function() assert(task:is_running()) assert(task:is_running()) task:wait() - assert(task.output == "foo\nbar\n" or task.output == "bar\nfoo\n", task.output) + assert(task:output() == "foo\nbar" or task:output() == "bar\nfoo", task:output()) assert(task_result.done) - assert(not task.error) + assert(not task:has_errors()) end) end) From 56075b57c421fc5e751c1da7a7f1bf18ec1499a7 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Wed, 26 Jun 2024 18:45:40 +0200 Subject: [PATCH 139/342] fix(runner): bring concurrency back --- lua/lazy/manage/runner.lua | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/lua/lazy/manage/runner.lua b/lua/lazy/manage/runner.lua index 0b0e5c4..eac6b3e 100644 --- a/lua/lazy/manage/runner.lua +++ b/lua/lazy/manage/runner.lua @@ -96,19 +96,21 @@ function Runner:_start() waiting = waiting + 1 wait_step = s.step elseif not running then - local plugin = self:plugin(name) - if s.step == #self._pipeline then - s.task = nil - plugin._.working = false - elseif s.step < #self._pipeline then - active = active + 1 - s.step = s.step + 1 - step = self._pipeline[s.step] - if step.task == "wait" then + if not self._opts.concurrency or active < self._opts.concurrency then + local plugin = self:plugin(name) + if s.step == #self._pipeline then + s.task = nil plugin._.working = false - else - s.task = self:queue(plugin, step) - plugin._.working = not not s.task + elseif s.step < #self._pipeline then + active = active + 1 + s.step = s.step + 1 + step = self._pipeline[s.step] + if step.task == "wait" then + plugin._.working = false + else + s.task = self:queue(plugin, step) + plugin._.working = not not s.task + end end end else From 20af3fcc4ef2fef0cb4021543c70410567fcf9aa Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 26 Jun 2024 18:47:38 +0200 Subject: [PATCH 140/342] chore(main): release 11.4.2 (#1558) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 18 ++++++++++++++++++ lua/lazy/core/config.lua | 2 +- 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index 8aab173..6d1ef85 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "11.4.1" + ".": "11.4.2" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 741e766..e54cefe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,23 @@ # Changelog +## [11.4.2](https://github.com/folke/lazy.nvim/compare/v11.4.1...v11.4.2) (2024-06-26) + + +### Bug Fixes + +* **config:** dont start checker/change_detection when running headless ([2aa8e06](https://github.com/folke/lazy.nvim/commit/2aa8e061f22579b0cabc74f05a90f7344d92195c)) +* **git:** fetch commit from origin or local to check if branch was changed. See [#1549](https://github.com/folke/lazy.nvim/issues/1549) ([28e435b](https://github.com/folke/lazy.nvim/commit/28e435b7f34eecd8b90bc87ac71c70b79fcb03b3)) +* **rocks:** build.type instead of build.build_type ([aa1c957](https://github.com/folke/lazy.nvim/commit/aa1c9572aa1916e582f9b9c3d43e272b4f23b326)) +* **rockspec:** dont lazy-load rock deps ([4733611](https://github.com/folke/lazy.nvim/commit/473361139cc05936cd5afb08ab68e5bee1ebb5b3)) +* **runner:** bring concurrency back ([56075b5](https://github.com/folke/lazy.nvim/commit/56075b57c421fc5e751c1da7a7f1bf18ec1499a7)) +* **ui:** don't show output when it's the same as error ([e79805d](https://github.com/folke/lazy.nvim/commit/e79805d706f815a62467260cb307844c368c3dba)) + + +### Performance Improvements + +* tasks are now fully async ([0614ca6](https://github.com/folke/lazy.nvim/commit/0614ca6ca629704cb1846c0d6f9a250b526900b9)) +* **util:** improve impl of throttle ([3695215](https://github.com/folke/lazy.nvim/commit/36952153ecb5b196c74e2d9a28eb0e01a9eb02fe)) + ## [11.4.1](https://github.com/folke/lazy.nvim/compare/v11.4.0...v11.4.1) (2024-06-25) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 73e0970..a6d3c3a 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -197,7 +197,7 @@ M.defaults = { debug = false, } -M.version = "11.4.1" -- x-release-please-version +M.version = "11.4.2" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 804cae0a65ade8b1638eb1ccb537c2ff793459ce Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Wed, 26 Jun 2024 19:38:45 +0200 Subject: [PATCH 141/342] refactor: hererocks check --- lua/lazy/core/plugin.lua | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lua/lazy/core/plugin.lua b/lua/lazy/core/plugin.lua index a3cb497..84660e6 100644 --- a/lua/lazy/core/plugin.lua +++ b/lua/lazy/core/plugin.lua @@ -264,10 +264,8 @@ function M.update_rocks_state() end) for _, plugin in pairs(Config.plugins) do - if plugin.build == "rockspec" then + if plugin.build == "rockspec" or plugin.name == "hererocks" then plugin._.build = not installed[plugin.name] - elseif plugin.name == "hererocks" then - plugin._.build = not vim.uv.fs_stat(Config.options.rocks.root .. "/hererocks") end end end From 97f4df0824da13b2b0d065f0dc43c49862581a01 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Wed, 26 Jun 2024 19:39:08 +0200 Subject: [PATCH 142/342] fix(runner): only use Config.plugins when updated. Fixes #1560 --- lua/lazy/manage/init.lua | 8 ++++++-- lua/lazy/manage/runner.lua | 9 ++++++++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/lua/lazy/manage/init.lua b/lua/lazy/manage/init.lua index e0b2233..9818764 100644 --- a/lua/lazy/manage/init.lua +++ b/lua/lazy/manage/init.lua @@ -85,9 +85,11 @@ function M.install(opts) "plugin.docs", { "wait", - sync = function() + ---@param runner Runner + sync = function(runner) require("lazy.pkg").update() Plugin.load() + runner:update() end, }, "plugin.build", @@ -114,9 +116,11 @@ function M.update(opts) "plugin.docs", { "wait", - sync = function() + ---@param runner Runner + sync = function(runner) require("lazy.pkg").update() Plugin.load() + runner:update() end, }, "plugin.build", diff --git a/lua/lazy/manage/runner.lua b/lua/lazy/manage/runner.lua index eac6b3e..8828412 100644 --- a/lua/lazy/manage/runner.lua +++ b/lua/lazy/manage/runner.lua @@ -49,7 +49,14 @@ function Runner.new(opts) end function Runner:plugin(name) - return Config.plugins[name] or self._plugins[name] + return self._plugins[name] +end + +--- Update plugins +function Runner:update() + for name in pairs(self._plugins) do + self._plugins[name] = Config.plugins[name] or self._plugins[name] + end end function Runner:start() From 66a4170f0e9ab238972f73a268582cf65026a017 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Wed, 26 Jun 2024 19:58:45 +0200 Subject: [PATCH 143/342] fix(runner): properly do concurrency --- lua/lazy/manage/runner.lua | 58 +++++++++++++++++++++++------------- tests/manage/runner_spec.lua | 2 +- 2 files changed, 38 insertions(+), 22 deletions(-) diff --git a/lua/lazy/manage/runner.lua b/lua/lazy/manage/runner.lua index 8828412..66d5f9c 100644 --- a/lua/lazy/manage/runner.lua +++ b/lua/lazy/manage/runner.lua @@ -91,37 +91,53 @@ function Runner:_start() active = 0 waiting = 0 wait_step = nil + local next = {} ---@type string[] + + -- check running tasks for _, name in ipairs(names) do state[name] = state[name] or { step = 0 } local s = state[name] - local running = s.task and s.task:is_running() + local is_running = s.task and s.task:is_running() local step = self._pipeline[s.step] + -- selene:allow(empty_if) if s.task and s.task:has_errors() then - local ignore = true + -- don't continue tasks if there are errors elseif step and step.task == "wait" and not resume then + -- waiting for sync waiting = waiting + 1 wait_step = s.step - elseif not running then - if not self._opts.concurrency or active < self._opts.concurrency then - local plugin = self:plugin(name) - if s.step == #self._pipeline then - s.task = nil - plugin._.working = false - elseif s.step < #self._pipeline then - active = active + 1 - s.step = s.step + 1 - step = self._pipeline[s.step] - if step.task == "wait" then - plugin._.working = false - else - s.task = self:queue(plugin, step) - plugin._.working = not not s.task - end - end - end - else + elseif is_running then + -- still running active = active + 1 + else + next[#next + 1] = name + end + end + + -- schedule next tasks + for _, name in ipairs(next) do + if self._opts.concurrency and active >= self._opts.concurrency then + break + end + local s = state[name] + local plugin = self:plugin(name) + if s.step == #self._pipeline then + -- done + s.task = nil + plugin._.working = false + elseif s.step < #self._pipeline then + -- next + s.step = s.step + 1 + local step = self._pipeline[s.step] + if step.task == "wait" then + plugin._.working = false + waiting = waiting + 1 + else + s.task = self:queue(plugin, step) + plugin._.working = not not s.task + active = active + 1 + end end end end diff --git a/tests/manage/runner_spec.lua b/tests/manage/runner_spec.lua index 2eb1ab1..925aaf1 100644 --- a/tests/manage/runner_spec.lua +++ b/tests/manage/runner_spec.lua @@ -64,7 +64,7 @@ describe("runner", function() local runner = Runner.new({ plugins = plugins, pipeline = { "test.test1", "test.skip", "test.test2" } }) runner:start() runner:wait() - assert.equal(4, #runs) + assert.equal(4, #runs, runs) end) it("handles opts", function() From 93b3a77286c4212850e21a6b3e31d328b5a86df4 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Wed, 26 Jun 2024 20:17:32 +0200 Subject: [PATCH 144/342] fix(runner): wait_step --- lua/lazy/manage/runner.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/lua/lazy/manage/runner.lua b/lua/lazy/manage/runner.lua index 66d5f9c..2d707c2 100644 --- a/lua/lazy/manage/runner.lua +++ b/lua/lazy/manage/runner.lua @@ -133,6 +133,7 @@ function Runner:_start() if step.task == "wait" then plugin._.working = false waiting = waiting + 1 + wait_step = s.step else s.task = self:queue(plugin, step) plugin._.working = not not s.task From a0a51c06c2fcddda925667142516c89777eb0c8e Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Wed, 26 Jun 2024 21:38:28 +0200 Subject: [PATCH 145/342] feat: added `opts.headless` to control ansi output when running headless --- lua/lazy/core/config.lua | 11 ++++++ lua/lazy/manage/process.lua | 6 +++ lua/lazy/manage/task/init.lua | 59 ++++++++++++++++++++++++++++- lua/lazy/terminal.lua | 71 +++++++++++++++++++++++++++++++++++ tests/busted.lua | 16 ++++---- 5 files changed, 153 insertions(+), 10 deletions(-) create mode 100644 lua/lazy/terminal.lua diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index a6d3c3a..89a89bd 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -130,6 +130,17 @@ M.defaults = { }, }, }, + -- Output options for headless mode + headless = { + -- show the output from process commands like git + process = true, + -- show log messages + log = true, + -- show task start/end + task = true, + -- use ansi colors + colors = true, + }, diff = { -- diff command can be one of: -- * browser: opens the github compare view. Note that this is always mapped to as well, diff --git a/lua/lazy/manage/process.lua b/lua/lazy/manage/process.lua index 5bb2716..7c568cb 100644 --- a/lua/lazy/manage/process.lua +++ b/lua/lazy/manage/process.lua @@ -48,6 +48,7 @@ local uv = vim.uv ---@field cwd? string ---@field on_line? fun(string) ---@field on_exit? fun(ok:boolean, output:string) +---@field on_data? fun(string) ---@field timeout? number ---@field env? table @@ -145,6 +146,11 @@ function M.spawn(cmd, opts) assert(not err, err) if data then + if opts.on_data then + vim.schedule(function() + opts.on_data(data) + end) + end output = output .. data:gsub("\r\n", "\n") local lines = vim.split(vim.trim(output:gsub("\r$", "")):gsub("[^\n\r]+\r", ""), "\n") diff --git a/lua/lazy/manage/task/init.lua b/lua/lazy/manage/task/init.lua index 8c5f83f..d561151 100644 --- a/lua/lazy/manage/task/init.lua +++ b/lua/lazy/manage/task/init.lua @@ -1,5 +1,9 @@ local Async = require("lazy.async") +local Config = require("lazy.core.config") local Process = require("lazy.manage.process") +local Terminal = require("lazy.terminal") + +local colors = Config.options.headless.colors ---@class LazyTaskDef ---@field skip? fun(plugin:LazyPlugin, opts?:TaskOptions):any? @@ -96,6 +100,10 @@ function Task:_start(task) assert(not self:has_started(), "task already started") assert(not self:has_ended(), "task already done") + if Config.headless() and Config.options.headless.task then + self:log("Running task " .. self.name, vim.log.levels.INFO) + end + self._started = vim.uv.hrtime() ---@async self._running = Async.run(function() @@ -122,6 +130,27 @@ function Task:log(msg, level) ---@cast msg string table.insert(self._log, { msg = msg, level = level }) vim.api.nvim_exec_autocmds("User", { pattern = "LazyRender", modeline = false }) + if Config.headless() then + self:headless() + end +end + +function Task:headless() + if not Config.options.headless.log then + return + end + local msg = self._log[#self._log] + if not msg or msg.level == vim.log.levels.TRACE then + return + end + local map = { + [vim.log.levels.ERROR] = Terminal.red, + [vim.log.levels.WARN] = Terminal.yellow, + [vim.log.levels.INFO] = Terminal.blue, + } + local color = Config.options.headless.colors and map[msg.level] + io.write(Terminal.prefix(color and color(msg.msg) or msg.msg, self:prefix())) + io.write("\n") end ---@param msg string|string[] @@ -143,6 +172,10 @@ function Task:_done() return end + if Config.headless() and Config.options.headless.task then + local ms = math.floor(self:time() + 0.5) + self:log("Finished task " .. self.name .. " in " .. ms .. "ms", vim.log.levels.INFO) + end self._ended = vim.uv.hrtime() if self._opts.on_done then self._opts.on_done(self) @@ -172,8 +205,12 @@ function Task:spawn(cmd, opts) local on_line = opts.on_line local on_exit = opts.on_exit + local headless = Config.headless() and Config.options.headless.process + function opts.on_line(line) - self:log(line, vim.log.levels.TRACE) + if not headless then + return self:log(line, vim.log.levels.TRACE) + end if on_line then pcall(on_line, line) end @@ -182,18 +219,36 @@ function Task:spawn(cmd, opts) local running = true ---@param output string function opts.on_exit(ok, output) - self:log(vim.trim(output), ok and vim.log.levels.DEBUG or vim.log.levels.ERROR) + if not headless then + self:log(vim.trim(output), ok and vim.log.levels.DEBUG or vim.log.levels.ERROR) + end if on_exit then pcall(on_exit, ok, output) end running = false end + + if headless then + opts.on_data = function(data) + -- prefix with plugin name + local prefix = self:prefix() + io.write(Terminal.prefix(data, prefix)) + end + end Process.spawn(cmd, opts) while running do coroutine.yield() end end +function Task:prefix() + local plugin = "[" .. self.plugin.name .. "] " + local task = string.rep(" ", 20 - #(self.name .. self.plugin.name)) .. self.name + + return colors and Terminal.magenta(plugin) .. Terminal.cyan(task) .. Terminal.bright_black(" | ") + or plugin .. " " .. task .. " | " +end + function Task:wait() while self:is_running() do vim.wait(10) diff --git a/lua/lazy/terminal.lua b/lua/lazy/terminal.lua new file mode 100644 index 0000000..a1bcb84 --- /dev/null +++ b/lua/lazy/terminal.lua @@ -0,0 +1,71 @@ +---@class Ansi: table +local M = {} + +M.colors = { + reset = "\27[0m", + black = "\27[30m", + red = "\27[31m", + green = "\27[32m", + yellow = "\27[33m", + blue = "\27[34m", + magenta = "\27[35m", + cyan = "\27[36m", + white = "\27[37m", + bright_black = "\27[90m", + bright_red = "\27[91m", + bright_green = "\27[92m", + bright_yellow = "\27[93m", + bright_blue = "\27[94m", + bright_magenta = "\27[95m", + bright_cyan = "\27[96m", + bright_white = "\27[97m", +} + +function M.color(text, color) + return M.colors[color] .. text .. M.colors.reset +end + +-- stylua: ignore start +function M.black(text) return M.color(text, "black") end +function M.red(text) return M.color(text, "red") end +function M.green(text) return M.color(text, "green") end +function M.yellow(text) return M.color(text, "yellow") end +function M.blue(text) return M.color(text, "blue") end +function M.magenta(text) return M.color(text, "magenta") end +function M.cyan(text) return M.color(text, "cyan") end +function M.white(text) return M.color(text, "white") end +function M.bright_black(text) return M.color(text, "bright_black") end +function M.bright_red(text) return M.color(text, "bright_red") end +function M.bright_green(text) return M.color(text, "bright_green") end +function M.bright_yellow(text) return M.color(text, "bright_yellow") end +function M.bright_blue(text) return M.color(text, "bright_blue") end +function M.bright_magenta(text) return M.color(text, "bright_magenta") end +function M.bright_cyan(text) return M.color(text, "bright_cyan") end +function M.bright_white(text) return M.color(text, "bright_white") end +-- stylua: ignore end + +---@param data string +---@param prefix string +function M.prefix(data, prefix) + -- Normalize Windows-style newlines to simple newlines + data = data:gsub("\r\n", "\n") + + -- Handle prefix for the first line, if data starts immediately + data = prefix .. data + + -- Prefix new lines ensuring not to double prefix if a line starts with \r + data = data:gsub("(\n)([^\r])", "%1" .. prefix .. "%2") + + -- Handle carriage returns properly to avoid double prefixing + -- Replace any \r not followed by \n with \r, then add a prefix only if the following character isn't the start of our prefix + data = data:gsub("\r([^\n])", function(nextChar) + if nextChar:sub(1, #prefix) == prefix then + return "\r" .. nextChar + else + return "\r" .. prefix .. nextChar + end + end) + return data +end + +return M diff --git a/tests/busted.lua b/tests/busted.lua index 146ab96..8fd4f28 100755 --- a/tests/busted.lua +++ b/tests/busted.lua @@ -6,22 +6,22 @@ for _, name in ipairs({ "config", "data", "state", "cache" }) do vim.env[("XDG_%s_HOME"):format(name:upper())] = root .. "/" .. name end --- -- Bootstrap lazy.nvim --- local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" --- if not (vim.uv or vim.loop).fs_stat(lazypath) then --- local lazyrepo = "https://github.com/folke/lazy.nvim.git" --- vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) --- end --- vim.opt.rtp:prepend(lazypath) vim.opt.rtp:prepend(".") vim.o.loadplugins = true -- enable since nvim -l disables plugins -- Setup lazy.nvim require("lazy").setup({ - "lunarmodules/busted", -- add busted + spec = { + "lunarmodules/busted", -- add busted + }, + rocks = { hererocks = true }, }) +local Config = require("lazy.core.config") +-- disable termnial output for the tests +Config.options.headless = {} + -- run busted return pcall(require("busted.runner"), { standalone = false, From 249902ab3194226efec0dbc3e000e758c43b4714 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Wed, 26 Jun 2024 22:44:57 +0200 Subject: [PATCH 146/342] fix(ui): diagnostics without status --- lua/lazy/manage/task/init.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lua/lazy/manage/task/init.lua b/lua/lazy/manage/task/init.lua index d561151..6693adc 100644 --- a/lua/lazy/manage/task/init.lua +++ b/lua/lazy/manage/task/init.lua @@ -71,7 +71,8 @@ end function Task:status() local ret = self._log[#self._log] - return ret and ret.msg or "" + local msg = ret and vim.trim(ret.msg) or "" + return msg ~= "" and msg or nil end function Task:has_started() From 591ded8309e45806ae3fb58b7b68fe58785a3ada Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Wed, 26 Jun 2024 22:45:21 +0200 Subject: [PATCH 147/342] feat(ui): keep cursor position when rendering view --- lua/lazy/manage/runner.lua | 2 +- lua/lazy/view/init.lua | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/lua/lazy/manage/runner.lua b/lua/lazy/manage/runner.lua index 2d707c2..6a01609 100644 --- a/lua/lazy/manage/runner.lua +++ b/lua/lazy/manage/runner.lua @@ -136,7 +136,7 @@ function Runner:_start() wait_step = s.step else s.task = self:queue(plugin, step) - plugin._.working = not not s.task + plugin._.working = true active = active + 1 end end diff --git a/lua/lazy/view/init.lua b/lua/lazy/view/init.lua index 5702531..c531927 100644 --- a/lua/lazy/view/init.lua +++ b/lua/lazy/view/init.lua @@ -146,7 +146,11 @@ end function M:update() if self.buf and vim.api.nvim_buf_is_valid(self.buf) then vim.bo[self.buf].modifiable = true + local view = vim.api.nvim_win_call(self.view.win, vim.fn.winsaveview) self.render:update() + vim.api.nvim_win_call(self.view.win, function() + vim.fn.winrestview(view) + end) vim.bo[self.buf].modifiable = false vim.cmd.redraw() end From 24a86d5ca4652a77f0f2c78dd7c693a3c369ab68 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Thu, 27 Jun 2024 09:48:37 +0200 Subject: [PATCH 148/342] fix(pkg): only show pkg changed when effectively changing a pkg file. Fixes #1567 --- lua/lazy/core/config.lua | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 89a89bd..d5c21b0 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -311,11 +311,10 @@ function M.setup(opts) vim.api.nvim_create_autocmd("BufWritePost", { pattern = { "lazy.lua", "pkg.json", "*.rockspec" }, callback = function() - require("lazy").pkg({ - plugins = { - require("lazy.core.plugin").find(vim.uv.cwd() .. "/lua/"), - }, - }) + local plugin = require("lazy.core.plugin").find(vim.uv.cwd() .. "/lua/") + if plugin then + require("lazy").pkg({ plugins = { plugin } }) + end end, }) end, From 6a423278a10ff7b1a76795275111d01632851c48 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Thu, 27 Jun 2024 10:21:54 +0200 Subject: [PATCH 149/342] fix(meta): resolve deps from meta instead of fragments. Fixes #1566 --- lua/lazy/core/meta.lua | 5 +- tests/core/plugin_spec.lua | 99 ++++++++++++++++++++++++++++---------- 2 files changed, 77 insertions(+), 27 deletions(-) diff --git a/lua/lazy/core/meta.lua b/lua/lazy/core/meta.lua index 52b0549..6e781a0 100644 --- a/lua/lazy/core/meta.lua +++ b/lua/lazy/core/meta.lua @@ -198,7 +198,10 @@ function M:_rebuild(name) -- dependencies for _, dep in ipairs(fragment.deps or {}) do - table.insert(plugin.dependencies, self.fragments:get(dep).name) + local dep_meta = self.frag_to_meta[dep] + if dep_meta then + table.insert(plugin.dependencies, dep_meta.name) + end end end end diff --git a/tests/core/plugin_spec.lua b/tests/core/plugin_spec.lua index 87cea77..d810339 100644 --- a/tests/core/plugin_spec.lua +++ b/tests/core/plugin_spec.lua @@ -8,20 +8,27 @@ local function inspect(obj) return vim.inspect(obj):gsub("%s+", " ") end ----@param plugins LazyPlugin[]|LazyPlugin +---@param plugin LazyPlugin +local function resolve(plugin) + local meta = getmetatable(plugin) + local ret = meta and type(meta.__index) == "table" and resolve(meta.__index) or {} + for k, v in pairs(plugin) do + ret[k] = v + end + return ret +end + +---@param plugins LazyPlugin[] local function clean(plugins) - local p = plugins - plugins = type(plugins) == "table" and plugins or { plugins } - for _, plugin in pairs(plugins) do - plugin._.fid = nil - plugin._.fpid = nil - plugin._.fdeps = nil + return vim.tbl_map(function(plugin) + plugin = resolve(plugin) + plugin[1] = nil plugin._.frags = nil if plugin._.dep == false then plugin._.dep = nil end - end - return p + return plugin + end, plugins) end describe("plugin spec url/name", function() @@ -168,14 +175,12 @@ describe("plugin spec opt", function() end assert.same({ bar = { - "foo/bar", _ = {}, dependencies = { "dep1", "dep2" }, name = "bar", url = "https://github.com/foo/bar.git", }, dep1 = { - "foo/dep1", _ = { dep = true, }, @@ -183,7 +188,6 @@ describe("plugin spec opt", function() url = "https://github.com/foo/dep1.git", }, dep2 = { - "foo/dep2", _ = { dep = true, }, @@ -198,13 +202,13 @@ describe("plugin spec opt", function() before_each(function() Handler.init() end) - it("handles dep names", function() - Config.options.defaults.lazy = false - local tests = { - { { "foo/bar", dependencies = { { "dep1" }, "foo/dep2" } }, "foo/dep1" }, - { "foo/dep1", { "foo/bar", dependencies = { { "dep1" }, "foo/dep2" } } }, - } - for _, test in ipairs(tests) do + Config.options.defaults.lazy = false + local tests = { + { { "foo/bar", dependencies = { { "dep1" }, "foo/dep2" } }, "foo/dep1" }, + { "foo/dep1", { "foo/bar", dependencies = { { "dep1" }, "foo/dep2" } } }, + } + for _, test in ipairs(tests) do + it("handles dep names " .. inspect(test), function() local spec = Plugin.Spec.new(vim.deepcopy(test)) assert(#spec.notifs == 0) Config.plugins = spec.plugins @@ -213,31 +217,74 @@ describe("plugin spec opt", function() for _, plugin in pairs(spec.plugins) do plugin.dir = nil end - assert.same(clean(spec.plugins), { + assert.same({ bar = { - "foo/bar", _ = {}, dependencies = { "dep1", "dep2" }, name = "bar", url = "https://github.com/foo/bar.git", }, dep1 = { - "foo/dep1", _ = {}, name = "dep1", url = "https://github.com/foo/dep1.git", }, dep2 = { - "foo/dep2", _ = { dep = true, }, name = "dep2", url = "https://github.com/foo/dep2.git", }, - }) - end - end) + }, clean(spec.plugins)) + end) + end + + Config.options.defaults.lazy = false + local tests = { + { + { "foo/baz", name = "bar" }, + { "foo/fee", dependencies = { "foo/baz" } }, + }, + { + { "foo/fee", dependencies = { "foo/baz" } }, + { "foo/baz", name = "bar" }, + }, + -- { + -- { "foo/baz", name = "bar" }, + -- { "foo/fee", dependencies = { "baz" } }, + -- }, + { + { "foo/baz", name = "bar" }, + { "foo/fee", dependencies = { "bar" } }, + }, + } + for _, test in ipairs(tests) do + it("handles dep names " .. inspect(test), function() + local spec = Plugin.Spec.new(vim.deepcopy(test)) + assert(#spec.notifs == 0) + Config.plugins = spec.plugins + Plugin.update_state() + spec = Plugin.Spec.new(test) + spec.meta:rebuild() + for _, plugin in pairs(spec.plugins) do + plugin.dir = nil + end + assert.same({ + bar = { + _ = {}, + name = "bar", + url = "https://github.com/foo/baz.git", + }, + fee = { + _ = {}, + name = "fee", + url = "https://github.com/foo/fee.git", + dependencies = { "bar" }, + }, + }, clean(spec.plugins)) + end) + end it("handles opt from dep", function() Config.options.defaults.lazy = false From 9c8e7a48406109458370f3b52f6f058943db40f4 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Thu, 27 Jun 2024 10:44:35 +0200 Subject: [PATCH 150/342] feat(health): show user's lazy.nvim version in checkhealth --- lua/lazy/health.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/lua/lazy/health.lua b/lua/lazy/health.lua index 86e805d..2e5781e 100644 --- a/lua/lazy/health.lua +++ b/lua/lazy/health.lua @@ -62,6 +62,7 @@ end function M.check() start("lazy.nvim") + info("{lazy.nvim} version `" .. Config.version .. "`") M.have("git") From 2e1167df4ab055e8327317ac38210b111cbaec83 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Thu, 27 Jun 2024 11:30:29 +0200 Subject: [PATCH 151/342] feat: added localleader-i to inspect a plugin --- lua/lazy/core/config.lua | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index d5c21b0..63c52c8 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -120,6 +120,16 @@ M.defaults = { desc = "Open lazygit log", }, + ["i"] = { + function(plugin) + Util.notify(vim.inspect(plugin), { + title = "Inspect " .. plugin.name, + lang = "lua", + }) + end, + desc = "Inspect Plugin", + }, + ["t"] = { function(plugin) require("lazy.util").float_term(nil, { From 53f314d9e6ef594677acdf5f038a4a042a7f3e38 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Thu, 27 Jun 2024 11:31:20 +0200 Subject: [PATCH 152/342] feat(ui): show indication of plugins that need build. See #1563 --- lua/lazy/view/render.lua | 7 ++++++- lua/lazy/view/sections.lua | 6 ++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/lua/lazy/view/render.lua b/lua/lazy/view/render.lua index 00ebd8f..6d0e758 100644 --- a/lua/lazy/view/render.lua +++ b/lua/lazy/view/render.lua @@ -379,7 +379,12 @@ function M:diagnostics(plugin) if skip then return end - if plugin._.updated then + if plugin._.build then + self:diagnostic({ + message = "needs build", + severity = vim.diagnostic.severity.WARN, + }) + elseif plugin._.updated then if plugin._.updated.from == plugin._.updated.to then self:diagnostic({ message = "already up to date", diff --git a/lua/lazy/view/sections.lua b/lua/lazy/view/sections.lua index e2892a2..c9fd9a7 100644 --- a/lua/lazy/view/sections.lua +++ b/lua/lazy/view/sections.lua @@ -33,6 +33,12 @@ return { end, title = "Working", }, + { + filter = function(plugin) + return plugin._.build + end, + title = "Build", + }, { filter = function(plugin) return has_task(plugin, function(task) From a0391c3e21e063df9dee70f17ae7891497cdcec9 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Thu, 27 Jun 2024 11:32:00 +0200 Subject: [PATCH 153/342] fix(manage): dont skip install for plugins that need a build, but dont have an url (like local plugins). Fixes #1563 --- lua/lazy/manage/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/lazy/manage/init.lua b/lua/lazy/manage/init.lua index 9818764..55c5076 100644 --- a/lua/lazy/manage/init.lua +++ b/lua/lazy/manage/init.lua @@ -95,7 +95,7 @@ function M.install(opts) "plugin.build", }, plugins = function(plugin) - return plugin.url and not (plugin._.installed and not plugin._.build) + return not (plugin._.installed and not plugin._.build) end, }, opts):wait(function() require("lazy.manage.lock").update() From e02c5b1b5787210dfbf89681d94e7861b30aa139 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Thu, 27 Jun 2024 11:32:30 +0200 Subject: [PATCH 154/342] fix(runner): only check for errors when a task is no longer running --- lua/lazy/manage/runner.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lua/lazy/manage/runner.lua b/lua/lazy/manage/runner.lua index 6a01609..74d6254 100644 --- a/lua/lazy/manage/runner.lua +++ b/lua/lazy/manage/runner.lua @@ -100,16 +100,16 @@ function Runner:_start() local is_running = s.task and s.task:is_running() local step = self._pipeline[s.step] + if is_running then + -- still running + active = active + 1 -- selene:allow(empty_if) - if s.task and s.task:has_errors() then + elseif s.task and s.task:has_errors() then -- don't continue tasks if there are errors elseif step and step.task == "wait" and not resume then -- waiting for sync waiting = waiting + 1 wait_step = s.step - elseif is_running then - -- still running - active = active + 1 else next[#next + 1] = name end From 82276321f5132c680a852bec0bb9b55694ab2a21 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Thu, 27 Jun 2024 11:33:11 +0200 Subject: [PATCH 155/342] fix(rocks): if installing with luarocks (binaries) fails, then build from source. Fixes #1563 --- lua/lazy/manage/task/init.lua | 10 +++++++++- lua/lazy/pkg/rockspec.lua | 27 ++++++++++++++++++++++++++- 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/lua/lazy/manage/task/init.lua b/lua/lazy/manage/task/init.lua index 6693adc..8dbffc5 100644 --- a/lua/lazy/manage/task/init.lua +++ b/lua/lazy/manage/task/init.lua @@ -37,7 +37,7 @@ function Task.new(plugin, name, task, opts) local self = setmetatable({}, { __index = Task }) self._opts = opts or {} self._log = {} - self._level = vim.log.levels.TRACE + self:set_level() self.plugin = plugin self.name = name ---@param other LazyTask @@ -95,6 +95,11 @@ function Task:has_warnings() return self._level >= vim.log.levels.WARN end +---@param level? number +function Task:set_level(level) + self._level = level or vim.log.levels.TRACE +end + ---@private ---@param task LazyTaskFn function Task:_start(task) @@ -218,6 +223,7 @@ function Task:spawn(cmd, opts) end local running = true + local ret = true ---@param output string function opts.on_exit(ok, output) if not headless then @@ -226,6 +232,7 @@ function Task:spawn(cmd, opts) if on_exit then pcall(on_exit, ok, output) end + ret = ok running = false end @@ -240,6 +247,7 @@ function Task:spawn(cmd, opts) while running do coroutine.yield() end + return ret end function Task:prefix() diff --git a/lua/lazy/pkg/rockspec.lua b/lua/lazy/pkg/rockspec.lua index 04ff937..2580afa 100644 --- a/lua/lazy/pkg/rockspec.lua +++ b/lua/lazy/pkg/rockspec.lua @@ -101,6 +101,7 @@ function M.check(opts) return ok end +---@async ---@param task LazyTask function M.build(task) if @@ -163,7 +164,7 @@ function M.build(task) ) local root = Config.options.rocks.root .. "/" .. task.plugin.name - task:spawn(luarocks, { + local ok = task:spawn(luarocks, { args = { "--tree", root, @@ -181,6 +182,30 @@ function M.build(task) cwd = task.plugin.dir, env = env, }) + + if ok then + return + end + + task:warn("Failed installing " .. rockspec.package .. " with `luarocks`.\nTrying to build from source.") + + -- install failed, so try building from source + task:set_level() -- reset level + task:spawn(luarocks, { + args = { + "--tree", + root, + "--dev", + "--lua-version", + "5.1", + "make", + "--force-fast", + "--deps-mode", + "one", + }, + cwd = task.plugin.dir, + env = env, + }) end ---@param rockspec RockSpec From c0fd59b020dc4efb91b226b0bbc4a22f28c12321 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Thu, 27 Jun 2024 12:31:58 +0200 Subject: [PATCH 156/342] feat(health): show steps to get luarocks working. See #1570 --- lua/lazy/health.lua | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/lua/lazy/health.lua b/lua/lazy/health.lua index 2e5781e..60cb61e 100644 --- a/lua/lazy/health.lua +++ b/lua/lazy/health.lua @@ -145,11 +145,21 @@ function M.check() info("you have some plugins that require `luarocks`:\n" .. table.concat(lines, "\n")) end - require("lazy.pkg.rockspec").check({ + local ok = require("lazy.pkg.rockspec").check({ error = #need_luarocks > 0 and error or warn, warn = warn, ok = ok, }) + if not ok then + warn(table.concat({ + "Lazy won't be able to install plugins that require `luarocks`.", + "Here's what you can do:", + " - fix your `luarocks` installation", + Config.options.rocks.hererocks and " - disable *hererocks* with `opts.rocks.hererocks = false`" + or " - enable `hererocks` with `opts.rocks.hererocks = true`", + " - disable `luarocks` support completely with `opts.rocks.enabled = false`", + }, "\n")) + end else ok("luarocks disabled") end From e3e431480d6c9ab460cf08b1e35311c2ab2c05c4 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Thu, 27 Jun 2024 12:38:47 +0200 Subject: [PATCH 157/342] feat(ui): remap gx -> K. Fixes #1561 --- lua/lazy/view/init.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lua/lazy/view/init.lua b/lua/lazy/view/init.lua index c531927..26383da 100644 --- a/lua/lazy/view/init.lua +++ b/lua/lazy/view/init.lua @@ -86,6 +86,8 @@ function M.create() return ViewConfig.keys.abort end, { silent = true, buffer = self.buf, expr = true }) + vim.keymap.set("n", "gx", "K", { buffer = self.buf, remap = true }) + -- plugin details self:on_key(ViewConfig.keys.details, function() local plugin = self.render:get_plugin() From 79bcc02d17edf026065bc4313e13363f1717f2d4 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Thu, 27 Jun 2024 12:48:50 +0200 Subject: [PATCH 158/342] ci: make simple test script --- .github/workflows/ci.yml | 2 +- lua/lazy/view/text.lua | 4 +--- tests/run | 3 +++ 3 files changed, 5 insertions(+), 4 deletions(-) create mode 100755 tests/run diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 647365c..d1f514d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -25,7 +25,7 @@ jobs: run: | nvim --version [ ! -d tests ] && exit 0 - nvim -l tests/busted.lua tests -o utfTerminal + ./tests/run community: runs-on: ubuntu-latest steps: diff --git a/lua/lazy/view/text.lua b/lua/lazy/view/text.lua index 3e83d5a..6a664a3 100644 --- a/lua/lazy/view/text.lua +++ b/lua/lazy/view/text.lua @@ -11,9 +11,7 @@ local Util = require("lazy.util") local Text = {} function Text.new() - local self = setmetatable({}, { - __index = Text, - }) + local self = setmetatable({}, { __index = Text }) self._lines = {} return self diff --git a/tests/run b/tests/run new file mode 100755 index 0000000..7c8bb34 --- /dev/null +++ b/tests/run @@ -0,0 +1,3 @@ +#!/bin/sh + +nvim -l tests/busted.lua tests -o utfTerminal From 68cee30cdb1f7a29d10b44b00506aafa092b6cee Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Thu, 27 Jun 2024 13:06:39 +0200 Subject: [PATCH 159/342] perf: prevent active waiting in coroutines. suspend/resume instead --- lua/lazy/async.lua | 28 +++++++++++++++++++++++++++- lua/lazy/manage/task/init.lua | 8 +++++--- lua/lazy/util.lua | 10 +++------- 3 files changed, 35 insertions(+), 11 deletions(-) diff --git a/lua/lazy/async.lua b/lua/lazy/async.lua index a7bcfac..1d348e9 100644 --- a/lua/lazy/async.lua +++ b/lua/lazy/async.lua @@ -9,10 +9,14 @@ local M = {} M._queue = {} M._executor = assert(vim.loop.new_check()) M._running = false +M.SLEEP = "sleep" +---@type Async +M.current = nil ---@class Async ---@field co thread ---@field opts AsyncOpts +---@field sleeping? boolean local Async = {} ---@param fn async fun() @@ -29,16 +33,38 @@ function Async:running() return coroutine.status(self.co) ~= "dead" end +function Async:sleep(ms) + self.sleeping = true + vim.defer_fn(function() + self.sleeping = false + end, ms) +end + +function Async:suspend() + self.sleeping = true +end + +function Async:resume() + self.sleeping = false +end + function Async:step() + if self.sleeping then + return true + end local status = coroutine.status(self.co) if status == "suspended" then + M.current = self local ok, res = coroutine.resume(self.co) + M.current = nil if not ok then if self.opts.on_error then self.opts.on_error(tostring(res)) end elseif res then - if self.opts.on_yield then + if res == M.SLEEP then + self.sleeping = true + elseif self.opts.on_yield then self.opts.on_yield(res) end end diff --git a/lua/lazy/manage/task/init.lua b/lua/lazy/manage/task/init.lua index 8dbffc5..e651f63 100644 --- a/lua/lazy/manage/task/init.lua +++ b/lua/lazy/manage/task/init.lua @@ -222,6 +222,8 @@ function Task:spawn(cmd, opts) end end + self._running:suspend() + local running = true local ret = true ---@param output string @@ -234,6 +236,7 @@ function Task:spawn(cmd, opts) end ret = ok running = false + self._running:resume() end if headless then @@ -244,9 +247,8 @@ function Task:spawn(cmd, opts) end end Process.spawn(cmd, opts) - while running do - coroutine.yield() - end + coroutine.yield() + assert(not running, "process still running?") return ret end diff --git a/lua/lazy/util.lua b/lua/lazy/util.lua index 09e4f54..4a3073e 100644 --- a/lua/lazy/util.lua +++ b/lua/lazy/util.lua @@ -232,13 +232,9 @@ end ---@async ---@param ms number function M.sleep(ms) - local continue = false - vim.defer_fn(function() - continue = true - end, ms) - while not continue do - coroutine.yield() - end + local async = require("lazy.async").current + assert(async, "Not in an async context") + async:sleep(ms) end function M._dump(value, result) From 37c7163f8d27243993ac07db8477e44cd5275027 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 27 Jun 2024 17:34:05 +0200 Subject: [PATCH 160/342] chore(main): release 11.5.0 (#1565) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 31 +++++++++++++++++++++++++++ lua/lazy/core/config.lua | 2 +- 3 files changed, 33 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index 6d1ef85..1d395f3 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "11.4.2" + ".": "11.5.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index e54cefe..4c9fdb0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,36 @@ # Changelog +## [11.5.0](https://github.com/folke/lazy.nvim/compare/v11.4.2...v11.5.0) (2024-06-27) + + +### Features + +* added `opts.headless` to control ansi output when running headless ([a0a51c0](https://github.com/folke/lazy.nvim/commit/a0a51c06c2fcddda925667142516c89777eb0c8e)) +* added localleader-i to inspect a plugin ([2e1167d](https://github.com/folke/lazy.nvim/commit/2e1167df4ab055e8327317ac38210b111cbaec83)) +* **health:** show steps to get luarocks working. See [#1570](https://github.com/folke/lazy.nvim/issues/1570) ([c0fd59b](https://github.com/folke/lazy.nvim/commit/c0fd59b020dc4efb91b226b0bbc4a22f28c12321)) +* **health:** show user's lazy.nvim version in checkhealth ([9c8e7a4](https://github.com/folke/lazy.nvim/commit/9c8e7a48406109458370f3b52f6f058943db40f4)) +* **ui:** keep cursor position when rendering view ([591ded8](https://github.com/folke/lazy.nvim/commit/591ded8309e45806ae3fb58b7b68fe58785a3ada)) +* **ui:** remap gx -> K. Fixes [#1561](https://github.com/folke/lazy.nvim/issues/1561) ([e3e4314](https://github.com/folke/lazy.nvim/commit/e3e431480d6c9ab460cf08b1e35311c2ab2c05c4)) +* **ui:** show indication of plugins that need build. See [#1563](https://github.com/folke/lazy.nvim/issues/1563) ([53f314d](https://github.com/folke/lazy.nvim/commit/53f314d9e6ef594677acdf5f038a4a042a7f3e38)) + + +### Bug Fixes + +* **manage:** dont skip install for plugins that need a build, but dont have an url (like local plugins). Fixes [#1563](https://github.com/folke/lazy.nvim/issues/1563) ([a0391c3](https://github.com/folke/lazy.nvim/commit/a0391c3e21e063df9dee70f17ae7891497cdcec9)) +* **meta:** resolve deps from meta instead of fragments. Fixes [#1566](https://github.com/folke/lazy.nvim/issues/1566) ([6a42327](https://github.com/folke/lazy.nvim/commit/6a423278a10ff7b1a76795275111d01632851c48)) +* **pkg:** only show pkg changed when effectively changing a pkg file. Fixes [#1567](https://github.com/folke/lazy.nvim/issues/1567) ([24a86d5](https://github.com/folke/lazy.nvim/commit/24a86d5ca4652a77f0f2c78dd7c693a3c369ab68)) +* **rocks:** if installing with luarocks (binaries) fails, then build from source. Fixes [#1563](https://github.com/folke/lazy.nvim/issues/1563) ([8227632](https://github.com/folke/lazy.nvim/commit/82276321f5132c680a852bec0bb9b55694ab2a21)) +* **runner:** only check for errors when a task is no longer running ([e02c5b1](https://github.com/folke/lazy.nvim/commit/e02c5b1b5787210dfbf89681d94e7861b30aa139)) +* **runner:** only use Config.plugins when updated. Fixes [#1560](https://github.com/folke/lazy.nvim/issues/1560) ([97f4df0](https://github.com/folke/lazy.nvim/commit/97f4df0824da13b2b0d065f0dc43c49862581a01)) +* **runner:** properly do concurrency ([66a4170](https://github.com/folke/lazy.nvim/commit/66a4170f0e9ab238972f73a268582cf65026a017)) +* **runner:** wait_step ([93b3a77](https://github.com/folke/lazy.nvim/commit/93b3a77286c4212850e21a6b3e31d328b5a86df4)) +* **ui:** diagnostics without status ([249902a](https://github.com/folke/lazy.nvim/commit/249902ab3194226efec0dbc3e000e758c43b4714)) + + +### Performance Improvements + +* prevent active waiting in coroutines. suspend/resume instead ([68cee30](https://github.com/folke/lazy.nvim/commit/68cee30cdb1f7a29d10b44b00506aafa092b6cee)) + ## [11.4.2](https://github.com/folke/lazy.nvim/compare/v11.4.1...v11.4.2) (2024-06-26) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 63c52c8..501f579 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -218,7 +218,7 @@ M.defaults = { debug = false, } -M.version = "11.4.2" -- x-release-please-version +M.version = "11.5.0" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 461552474c0646204399316228488edda63e9046 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Thu, 27 Jun 2024 14:43:35 +0200 Subject: [PATCH 161/342] refactor: cleanup --- lua/lazy/async.lua | 12 ++++++++---- lua/lazy/manage/task/init.lua | 22 +++++++--------------- lua/lazy/util.lua | 8 -------- tests/manage/task_spec.lua | 7 ------- 4 files changed, 15 insertions(+), 34 deletions(-) diff --git a/lua/lazy/async.lua b/lua/lazy/async.lua index 1d348e9..8a0a798 100644 --- a/lua/lazy/async.lua +++ b/lua/lazy/async.lua @@ -9,7 +9,6 @@ local M = {} M._queue = {} M._executor = assert(vim.loop.new_check()) M._running = false -M.SLEEP = "sleep" ---@type Async M.current = nil @@ -62,9 +61,7 @@ function Async:step() self.opts.on_error(tostring(res)) end elseif res then - if res == M.SLEEP then - self.sleeping = true - elseif self.opts.on_yield then + if self.opts.on_yield then self.opts.on_yield(res) end end @@ -130,4 +127,11 @@ function M.wrap(fn, opts) end end +---@async +---@param ms number +function M.sleep(ms) + assert(M.current, "Not in an async context") + M.current:sleep(ms) +end + return M diff --git a/lua/lazy/manage/task/init.lua b/lua/lazy/manage/task/init.lua index e651f63..a142cf4 100644 --- a/lua/lazy/manage/task/init.lua +++ b/lua/lazy/manage/task/init.lua @@ -75,16 +75,8 @@ function Task:status() return msg ~= "" and msg or nil end -function Task:has_started() - return self._started ~= nil -end - -function Task:has_ended() - return self._ended ~= nil -end - function Task:is_running() - return not self:has_ended() + return self._ended == nil end function Task:has_errors() @@ -103,8 +95,8 @@ end ---@private ---@param task LazyTaskFn function Task:_start(task) - assert(not self:has_started(), "task already started") - assert(not self:has_ended(), "task already done") + assert(not self._started, "task already started") + assert(not self._ended, "task already done") if Config.headless() and Config.options.headless.task then self:log("Running task " .. self.name, vim.log.levels.INFO) @@ -171,8 +163,8 @@ end ---@private function Task:_done() - assert(self:has_started(), "task not started") - assert(not self:has_ended(), "task already done") + assert(self._started, "task not started") + assert(not self._ended, "task already done") if self._running and self._running:running() then return @@ -194,10 +186,10 @@ function Task:_done() end function Task:time() - if not self:has_started() then + if not self._started then return 0 end - if not self:has_ended() then + if not self._ended then return (vim.uv.hrtime() - self._started) / 1e6 end return (self._ended - self._started) / 1e6 diff --git a/lua/lazy/util.lua b/lua/lazy/util.lua index 4a3073e..1c3cee3 100644 --- a/lua/lazy/util.lua +++ b/lua/lazy/util.lua @@ -229,14 +229,6 @@ function M.markdown(msg, opts) ) end ----@async ----@param ms number -function M.sleep(ms) - local async = require("lazy.async").current - assert(async, "Not in an async context") - async:sleep(ms) -end - function M._dump(value, result) local t = type(value) if t == "number" or t == "boolean" then diff --git a/tests/manage/task_spec.lua b/tests/manage/task_spec.lua index adb01e8..7df638a 100644 --- a/tests/manage/task_spec.lua +++ b/tests/manage/task_spec.lua @@ -21,7 +21,6 @@ describe("task", function() it("simple function", function() local task = Task.new(plugin, "test", function() end, opts) - assert(task:has_started()) assert(task:is_running()) task:wait() assert(not task:is_running()) @@ -32,7 +31,6 @@ describe("task", function() local task = Task.new(plugin, "test", function() error("test") end, opts) - assert(task:has_started()) assert(task:is_running()) task:wait() assert(not task:is_running()) @@ -48,7 +46,6 @@ describe("task", function() coroutine.yield() running = false end, opts) - assert(task:has_started()) assert(task:is_running()) assert(running) assert(task:is_running()) @@ -63,7 +60,6 @@ describe("task", function() local task = Task.new(plugin, "spawn_errors", function(task) task:spawn("foobar") end, opts) - assert(task:has_started()) assert(task:is_running()) task:wait() assert(not task:is_running()) @@ -75,9 +71,7 @@ describe("task", function() local task = Task.new(plugin, "test", function(task) task:spawn("echo", { args = { "foo" } }) end, opts) - assert(task:has_started()) assert(task:is_running()) - assert(task:has_started()) assert(task:is_running()) task:wait() assert.same(task:output(), "foo") @@ -90,7 +84,6 @@ describe("task", function() task:spawn("echo", { args = { "foo" } }) task:spawn("echo", { args = { "bar" } }) end, opts) - assert(task:has_started()) assert(task:is_running()) assert(task:is_running()) task:wait() From 60fe75c88db22025989600bb53dba247654d9ed5 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Fri, 28 Jun 2024 00:35:38 +0200 Subject: [PATCH 162/342] fix(task): run on_exit async. See #1569 --- lua/lazy/async.lua | 1 + lua/lazy/manage/process.lua | 16 +++++++++++++++- lua/lazy/manage/task/init.lua | 13 +++++++------ 3 files changed, 23 insertions(+), 7 deletions(-) diff --git a/lua/lazy/async.lua b/lua/lazy/async.lua index 8a0a798..9f39a5c 100644 --- a/lua/lazy/async.lua +++ b/lua/lazy/async.lua @@ -37,6 +37,7 @@ function Async:sleep(ms) vim.defer_fn(function() self.sleeping = false end, ms) + coroutine.yield() end function Async:suspend() diff --git a/lua/lazy/manage/process.lua b/lua/lazy/manage/process.lua index 7c568cb..03becf2 100644 --- a/lua/lazy/manage/process.lua +++ b/lua/lazy/manage/process.lua @@ -197,7 +197,21 @@ function M.exec(cmd, opts) lines = _lines end, }) - vim.fn.jobwait({ job }) + + if job <= 0 then + error("Failed to start job: " .. vim.inspect(cmd)) + end + + local Async = require("lazy.async") + local async = Async.current + if async then + while vim.fn.jobwait({ job }, 0)[1] == -1 do + async:sleep(10) + end + else + vim.fn.jobwait({ job }) + end + return lines end diff --git a/lua/lazy/manage/task/init.lua b/lua/lazy/manage/task/init.lua index a142cf4..989f362 100644 --- a/lua/lazy/manage/task/init.lua +++ b/lua/lazy/manage/task/init.lua @@ -217,16 +217,13 @@ function Task:spawn(cmd, opts) self._running:suspend() local running = true - local ret = true + local ret = { ok = true, output = "" } ---@param output string function opts.on_exit(ok, output) if not headless then self:log(vim.trim(output), ok and vim.log.levels.DEBUG or vim.log.levels.ERROR) end - if on_exit then - pcall(on_exit, ok, output) - end - ret = ok + ret = { ok = ok, output = output } running = false self._running:resume() end @@ -241,7 +238,11 @@ function Task:spawn(cmd, opts) Process.spawn(cmd, opts) coroutine.yield() assert(not running, "process still running?") - return ret + if on_exit then + pcall(on_exit, ret.ok, ret.output) + end + coroutine.yield() + return ret.ok end function Task:prefix() From 4319846b8c8a05975c4139b0bc9f7e6e7a9e6e21 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Fri, 28 Jun 2024 16:07:49 +0200 Subject: [PATCH 163/342] fix(rocks): lua-5.1. Closes #1575 --- lua/lazy/pkg/rockspec.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/lazy/pkg/rockspec.lua b/lua/lazy/pkg/rockspec.lua index 2580afa..c89ab3c 100644 --- a/lua/lazy/pkg/rockspec.lua +++ b/lua/lazy/pkg/rockspec.lua @@ -90,7 +90,7 @@ function M.check(opts) ok = Health.have("luarocks", opts) ok = ( Health.have( - { "lua5.1", "lua" }, + { "lua5.1", "lua", "lua-5.1" }, vim.tbl_extend("force", opts, { version = "-v", version_pattern = "5.1", From a36ebd2a75145cd8a377b1847a7a1ccf31b2ab7a Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Fri, 28 Jun 2024 16:08:26 +0200 Subject: [PATCH 164/342] refactor: async processes --- lua/lazy/async.lua | 150 +++++++++----- lua/lazy/manage/init.lua | 2 +- lua/lazy/manage/process.lua | 378 ++++++++++++++++++---------------- lua/lazy/manage/runner.lua | 22 +- lua/lazy/manage/task/init.lua | 111 ++++------ lua/lazy/util.lua | 12 +- lua/lazy/view/render.lua | 4 +- lua/lazy/view/sections.lua | 2 +- tests/manage/process_spec.lua | 20 ++ tests/manage/task_spec.lua | 28 +-- tests/run | 2 +- vim.toml | 42 +--- 12 files changed, 394 insertions(+), 379 deletions(-) create mode 100644 tests/manage/process_spec.lua diff --git a/lua/lazy/async.lua b/lua/lazy/async.lua index 9f39a5c..6ad2d6a 100644 --- a/lua/lazy/async.lua +++ b/lua/lazy/async.lua @@ -1,78 +1,122 @@ ----@class AsyncOpts ----@field on_done? fun() ----@field on_error? fun(err:string) ----@field on_yield? fun(res:any) - local M = {} ---@type Async[] M._queue = {} M._executor = assert(vim.loop.new_check()) M._running = false ----@type Async -M.current = nil + +---@type table +M._threads = setmetatable({}, { __mode = "k" }) + +---@alias AsyncEvent "done" | "error" | "yield" | "ok" ---@class Async ----@field co thread ----@field opts AsyncOpts ----@field sleeping? boolean +---@field _co thread +---@field _fn fun() +---@field _suspended? boolean +---@field _on table local Async = {} ---@param fn async fun() ----@param opts? AsyncOpts ---@return Async -function Async.new(fn, opts) +function Async.new(fn) local self = setmetatable({}, { __index = Async }) - self.co = coroutine.create(fn) - self.opts = opts or {} + return self:init(fn) +end + +---@param fn async fun() +---@return Async +function Async:init(fn) + self._fn = fn + self._on = {} + self._co = coroutine.create(function() + local ok, err = pcall(self._fn) + if not ok then + self:_emit("error", err) + end + self:_emit("done") + end) + M._threads[self._co] = self + return M.add(self) +end + +function Async:restart() + assert(not self:running(), "Cannot restart a running async") + self:init(self._fn) +end + +---@param event AsyncEvent +---@param cb async fun(res:any, async:Async) +function Async:on(event, cb) + self._on[event] = self._on[event] or {} + table.insert(self._on[event], cb) return self end -function Async:running() - return coroutine.status(self.co) ~= "dead" +---@private +---@param event AsyncEvent +---@param res any +function Async:_emit(event, res) + for _, cb in ipairs(self._on[event] or {}) do + cb(res, self) + end end +function Async:running() + return coroutine.status(self._co) ~= "dead" +end + +---@async function Async:sleep(ms) - self.sleeping = true + self._suspended = true vim.defer_fn(function() - self.sleeping = false + self._suspended = false end, ms) coroutine.yield() end +---@async function Async:suspend() - self.sleeping = true + self._suspended = true + if coroutine.running() == self._co then + coroutine.yield() + end end function Async:resume() - self.sleeping = false + self._suspended = false +end + +function Async:wait() + local async = M.running() + if coroutine.running() == self._co then + error("Cannot wait on self") + end + + while self:running() do + if async then + coroutine.yield() + else + vim.wait(10) + end + end + return self end function Async:step() - if self.sleeping then + if self._suspended then return true end - local status = coroutine.status(self.co) + local status = coroutine.status(self._co) if status == "suspended" then - M.current = self - local ok, res = coroutine.resume(self.co) - M.current = nil + local ok, res = coroutine.resume(self._co) if not ok then - if self.opts.on_error then - self.opts.on_error(tostring(res)) - end + error(res) elseif res then - if self.opts.on_yield then - self.opts.on_yield(res) - end + self:_emit("yield", res) end end - if self:running() then - return true - end - if self.opts.on_done then - self.opts.on_done() - end + return self:running() end function M.step() @@ -107,32 +151,24 @@ function M.add(async) return async end ----@param fn async fun() ----@param opts? AsyncOpts -function M.run(fn, opts) - return M.add(Async.new(fn, opts)) -end - ----@generic T: async fun() ----@param fn T ----@param opts? AsyncOpts ----@return T -function M.wrap(fn, opts) - return function(...) - local args = { ... } - ---@async - local wrapped = function() - return fn(unpack(args)) - end - return M.run(wrapped, opts) +function M.running() + local co = coroutine.running() + if co then + local async = M._threads[co] + assert(async, "In coroutine without async context") + return async end end ---@async ---@param ms number function M.sleep(ms) - assert(M.current, "Not in an async context") - M.current:sleep(ms) + local async = M.running() + assert(async, "Not in an async context") + async:sleep(ms) end +M.Async = Async +M.new = Async.new + return M diff --git a/lua/lazy/manage/init.lua b/lua/lazy/manage/init.lua index 55c5076..ac9ba14 100644 --- a/lua/lazy/manage/init.lua +++ b/lua/lazy/manage/init.lua @@ -236,7 +236,7 @@ function M.clear(plugins) if plugin._.tasks then ---@param task LazyTask plugin._.tasks = vim.tbl_filter(function(task) - return task:is_running() or task:has_errors() + return task:running() or task:has_errors() end, plugin._.tasks) end end diff --git a/lua/lazy/manage/process.lua b/lua/lazy/manage/process.lua index 03becf2..f29d978 100644 --- a/lua/lazy/manage/process.lua +++ b/lua/lazy/manage/process.lua @@ -1,67 +1,133 @@ +local Async = require("lazy.async") local Config = require("lazy.core.config") -local M = {} - ----@type table -M.running = {} - -M.signals = { - "HUP", - "INT", - "QUIT", - "ILL", - "TRAP", - "ABRT", - "BUS", - "FPE", - "KILL", - "USR1", - "SEGV", - "USR2", - "PIPE", - "ALRM", - "TERM", - "CHLD", - "CONT", - "STOP", - "TSTP", - "TTIN", - "TTOU", - "URG", - "XCPU", - "XFSZ", - "VTALRM", - "PROF", - "WINCH", - "IO", - "PWR", - "EMT", - "SYS", - "INFO", -} - ---@diagnostic disable-next-line: no-unknown local uv = vim.uv ---@class ProcessOpts ---@field args string[] ---@field cwd? string ----@field on_line? fun(string) +---@field on_line? fun(line:string) ---@field on_exit? fun(ok:boolean, output:string) ----@field on_data? fun(string) +---@field on_data? fun(data:string, is_stderr?:boolean) ---@field timeout? number ---@field env? table ----@param opts? ProcessOpts ----@param cmd string -function M.spawn(cmd, opts) - opts = opts or {} - opts.timeout = opts.timeout or (Config.options.git and Config.options.git.timeout * 1000) +local M = {} +---@type table +M.running = setmetatable({}, { __mode = "k" }) + +---@class LazyProcess: Async +---@field handle? uv_process_t +---@field pid? number +---@field cmd string +---@field opts ProcessOpts +---@field timeout? uv_timer_t +---@field timedout? boolean +---@field data string +---@field check? uv_check_t +---@field code? number +---@field signal? number +local Process = setmetatable({}, { __index = Async.Async }) + +---@param cmd string|string[] +---@param opts? ProcessOpts +function Process.new(cmd, opts) + local self = setmetatable({}, { __index = Process }) + ---@async + Process.init(self, function() + self:_run() + end) + opts = opts or {} + opts.args = opts.args or {} + if type(cmd) == "table" then + self.cmd = table.remove(cmd, 1) + vim.list_extend(opts.args, cmd) + else + self.cmd = cmd + end + opts.timeout = opts.timeout or (Config.options.git and Config.options.git.timeout * 1000) + -- make sure the cwd is valid + if not opts.cwd and type(uv.cwd()) ~= "string" then + opts.cwd = uv.os_homedir() + end + opts.on_line = opts.on_line and vim.schedule_wrap(opts.on_line) or nil + opts.on_data = opts.on_data and vim.schedule_wrap(opts.on_data) or nil + self.data = "" + self.opts = opts + self.code = 1 + self.signal = 0 + return self +end + +---@async +function Process:_run() + self:guard() + local stdout = assert(uv.new_pipe()) + local stderr = assert(uv.new_pipe()) + self.handle = uv.spawn(self.cmd, { + stdio = { nil, stdout, stderr }, + args = self.opts.args, + cwd = self.opts.cwd, + env = self:env(), + }, function(code, signal) + self.code = code + self.signal = signal + if self.timeout then + self.timeout:stop() + end + self.handle:close() + stdout:close() + stderr:close() + self:resume() + end) + + if self.handle then + M.running[self.handle] = self + stdout:read_start(function(err, data) + self:on_data(err, data) + end) + stderr:read_start(function(err, data) + self:on_data(err, data, true) + end) + self:suspend() + while not (self.handle:is_closing() and stdout:is_closing() and stderr:is_closing()) do + coroutine.yield() + end + else + self.data = "Failed to spawn process " .. self.cmd .. " " .. vim.inspect(self.opts) + end + self:on_exit() +end + +function Process:on_exit() + self.data = self.data:gsub("[^\r\n]+\r", "") + if self.timedout then + self.data = self.data .. "\n" .. "Process was killed because it reached the timeout" + elseif self.signal ~= 0 then + self.data = self.data .. "\n" .. "Process was killed with SIG" .. M.signals[self.signal]:upper() + end + if self.opts.on_exit then + self.opts.on_exit(self.code == 0 and self.signal == 0, self.data) + end +end + +function Process:guard() + if self.opts.timeout then + self.timeout = assert(uv.new_timer()) + self.timeout:start(self.opts.timeout, 0, function() + self.timedout = true + self:kill() + end) + end +end + +function Process:env() ---@type table local env = vim.tbl_extend("force", { GIT_SSH_COMMAND = "ssh -oBatchMode=yes", - }, uv.os_environ(), opts.env or {}) + }, uv.os_environ(), self.opts.env or {}) env.GIT_DIR = nil env.GIT_WORK_TREE = nil env.GIT_TERMINAL_PROMPT = "0" @@ -72,147 +138,105 @@ function M.spawn(cmd, opts) for k, v in pairs(env) do env_flat[#env_flat + 1] = k .. "=" .. v end - - local stdout = assert(uv.new_pipe()) - local stderr = assert(uv.new_pipe()) - - local output = "" - ---@type uv_process_t? - local handle = nil - - ---@type uv_timer_t - local timeout - local killed = false - if opts.timeout then - timeout = assert(uv.new_timer()) - timeout:start(opts.timeout, 0, function() - if M.kill(handle) then - killed = true - end - end) - end - - -- make sure the cwd is valid - if not opts.cwd and type(uv.cwd()) ~= "string" then - opts.cwd = uv.os_homedir() - end - - handle = uv.spawn(cmd, { - stdio = { nil, stdout, stderr }, - args = opts.args, - cwd = opts.cwd, - env = env_flat, - }, function(exit_code, signal) - ---@cast handle uv_process_t - M.running[handle] = nil - if timeout then - timeout:stop() - timeout:close() - end - handle:close() - stdout:close() - stderr:close() - local check = assert(uv.new_check()) - check:start(function() - if not stdout:is_closing() or not stderr:is_closing() then - return - end - check:stop() - if opts.on_exit then - output = output:gsub("[^\r\n]+\r", "") - if killed then - output = output .. "\n" .. "Process was killed because it reached the timeout" - elseif signal ~= 0 then - output = output .. "\n" .. "Process was killed with SIG" .. M.signals[signal] - end - - vim.schedule(function() - opts.on_exit(exit_code == 0 and signal == 0, output) - end) - end - end) - end) - - if not handle then - if opts.on_exit then - opts.on_exit(false, "Failed to spawn process " .. cmd .. " " .. vim.inspect(opts)) - end - return - end - M.running[handle] = true - - ---@param data? string - local function on_output(err, data) - assert(not err, err) - - if data then - if opts.on_data then - vim.schedule(function() - opts.on_data(data) - end) - end - output = output .. data:gsub("\r\n", "\n") - local lines = vim.split(vim.trim(output:gsub("\r$", "")):gsub("[^\n\r]+\r", ""), "\n") - - if opts.on_line then - vim.schedule(function() - opts.on_line(lines[#lines]) - end) - end - end - end - - uv.read_start(stdout, on_output) - uv.read_start(stderr, on_output) - - return handle + return env_flat end -function M.kill(handle) - if handle and not handle:is_closing() then - M.running[handle] = nil - uv.process_kill(handle, "sigint") - return true +---@param signals uv.aliases.signals|uv.aliases.signals[]|nil +function Process:kill(signals) + if not self.handle or self.handle:is_closing() then + return end + signals = signals or { "sigterm", "sigkill" } + signals = type(signals) == "table" and signals or { signals } + ---@cast signals uv.aliases.signals[] + local timer = assert(uv.new_timer()) + timer:start(0, 1000, function() + if self.handle and not self.handle:is_closing() and #signals > 0 then + self.handle:kill(table.remove(signals, 1)) + else + timer:stop() + end + end) +end + +---@param err? string +---@param data? string +---@param is_stderr? boolean +function Process:on_data(err, data, is_stderr) + assert(not err, err) + if not data then + return + end + + if self.opts.on_data then + self.opts.on_data(data, is_stderr) + end + self.data = self.data .. data:gsub("\r\n", "\n") + local lines = vim.split(vim.trim(self.data:gsub("\r$", "")):gsub("[^\n\r]+\r", ""), "\n") + + if self.opts.on_line then + self.opts.on_line(lines[#lines]) + end +end + +M.signals = { + "hup", + "int", + "quit", + "ill", + "trap", + "abrt", + "bus", + "fpe", + "kill", + "usr1", + "segv", + "usr2", + "pipe", + "alrm", + "term", + "chld", + "cont", + "stop", + "tstp", + "ttin", + "ttou", + "urg", + "xcpu", + "xfsz", + "vtalrm", + "prof", + "winch", + "io", + "pwr", + "emt", + "sys", + "info", +} + +---@param cmd string|string[] +---@param opts? ProcessOpts +function M.spawn(cmd, opts) + return Process.new(cmd, opts) end function M.abort() - for handle in pairs(M.running) do - M.kill(handle) + for _, proc in pairs(M.running) do + proc:kill() end end ----@param cmd string[] ----@param opts? {cwd:string, env:table} +---@async +---@param cmd string|string[] +---@param opts? ProcessOpts function M.exec(cmd, opts) opts = opts or {} - ---@type string[] - local lines - local job = vim.fn.jobstart(cmd, { - cwd = opts.cwd, - pty = false, - env = opts.env, - stdout_buffered = true, - on_stdout = function(_, _lines) - lines = _lines - end, - }) - - if job <= 0 then - error("Failed to start job: " .. vim.inspect(cmd)) + local proc = M.spawn(cmd, opts) + proc:wait() + if proc.code ~= 0 then + error("Process failed with code " .. proc.code) end - - local Async = require("lazy.async") - local async = Async.current - if async then - while vim.fn.jobwait({ job }, 0)[1] == -1 do - async:sleep(10) - end - else - vim.fn.jobwait({ job }) - end - - return lines + return vim.split(proc.data, "\n") end return M diff --git a/lua/lazy/manage/runner.lua b/lua/lazy/manage/runner.lua index 74d6254..c5f5c75 100644 --- a/lua/lazy/manage/runner.lua +++ b/lua/lazy/manage/runner.lua @@ -16,7 +16,6 @@ local Task = require("lazy.manage.task") ---@class Runner ---@field _plugins table ---@field _pipeline PipelineStep[] ----@field _on_done fun()[] ---@field _opts RunnerOpts ---@field _running? Async local Runner = {} @@ -38,7 +37,6 @@ function Runner.new(opts) for _, plugin in ipairs(pp) do self._plugins[plugin.name] = plugin end - self._on_done = {} ---@param step string|(TaskOptions|{[1]:string}) self._pipeline = vim.tbl_map(function(step) @@ -61,15 +59,9 @@ end function Runner:start() ---@async - self._running = Async.run(function() + self._running = Async.new(function() self:_start() - end, { - on_done = function() - for _, cb in ipairs(self._on_done) do - cb() - end - end, - }) + end) end ---@async @@ -97,7 +89,7 @@ function Runner:_start() for _, name in ipairs(names) do state[name] = state[name] or { step = 0 } local s = state[name] - local is_running = s.task and s.task:is_running() + local is_running = s.task and s.task:running() local step = self._pipeline[s.step] if is_running then @@ -185,14 +177,10 @@ function Runner:wait(cb) end return self end - if cb then - table.insert(self._on_done, cb) + self._running:on("done", cb) else - -- sync wait - while self:is_running() do - vim.wait(10) - end + self._running:wait() end return self end diff --git a/lua/lazy/manage/task/init.lua b/lua/lazy/manage/task/init.lua index 989f362..1470379 100644 --- a/lua/lazy/manage/task/init.lua +++ b/lua/lazy/manage/task/init.lua @@ -15,16 +15,15 @@ local colors = Config.options.headless.colors ---@field msg string ---@field level? number ----@class LazyTask +---@class LazyTask: Async ---@field plugin LazyPlugin ---@field name string ---@field private _log LazyMsg[] ----@field private _started? number +---@field private _started number ---@field private _ended? number ---@field private _opts TaskOptions ----@field private _running Async ---@field private _level number -local Task = {} +local Task = setmetatable({}, { __index = Async.Async }) ---@class TaskOptions: {[string]:any} ---@field on_done? fun(task:LazyTask) @@ -35,17 +34,21 @@ local Task = {} ---@param task LazyTaskFn function Task.new(plugin, name, task, opts) local self = setmetatable({}, { __index = Task }) + ---@async + Task.init(self, function() + self:_run(task) + end) + self:set_level() self._opts = opts or {} self._log = {} - self:set_level() self.plugin = plugin self.name = name + self._started = vim.uv.hrtime() ---@param other LazyTask plugin._.tasks = vim.tbl_filter(function(other) - return other.name ~= name or other:is_running() + return other.name ~= name or other:running() end, plugin._.tasks or {}) table.insert(plugin._.tasks, self) - self:_start(task) return self end @@ -75,10 +78,6 @@ function Task:status() return msg ~= "" and msg or nil end -function Task:is_running() - return self._ended == nil -end - function Task:has_errors() return self._level >= vim.log.levels.ERROR end @@ -92,31 +91,24 @@ function Task:set_level(level) self._level = level or vim.log.levels.TRACE end ----@private +---@async ---@param task LazyTaskFn -function Task:_start(task) - assert(not self._started, "task already started") - assert(not self._ended, "task already done") - +function Task:_run(task) if Config.headless() and Config.options.headless.task then self:log("Running task " .. self.name, vim.log.levels.INFO) end - self._started = vim.uv.hrtime() - ---@async - self._running = Async.run(function() - task(self, self._opts) - end, { - on_done = function() + self + :on("done", function() self:_done() - end, - on_error = function(err) + end) + :on("error", function(err) self:error(err) - end, - on_yield = function(res) - self:log(res) - end, - }) + end) + :on("yield", function(msg) + self:log(msg) + end) + task(self, self._opts) end ---@param msg string|string[] @@ -163,13 +155,6 @@ end ---@private function Task:_done() - assert(self._started, "task not started") - assert(not self._ended, "task already done") - - if self._running and self._running:running() then - return - end - if Config.headless() and Config.options.headless.task then local ms = math.floor(self:time() + 0.5) self:log("Finished task " .. self.name .. " in " .. ms .. "ms", vim.log.levels.INFO) @@ -186,13 +171,7 @@ function Task:_done() end function Task:time() - if not self._started then - return 0 - end - if not self._ended then - return (vim.uv.hrtime() - self._started) / 1e6 - end - return (self._ended - self._started) / 1e6 + return ((self._ended or vim.uv.hrtime()) - self._started) / 1e6 end ---@async @@ -201,7 +180,6 @@ end function Task:spawn(cmd, opts) opts = opts or {} local on_line = opts.on_line - local on_exit = opts.on_exit local headless = Config.headless() and Config.options.headless.process @@ -214,35 +192,28 @@ function Task:spawn(cmd, opts) end end - self._running:suspend() - - local running = true - local ret = { ok = true, output = "" } - ---@param output string - function opts.on_exit(ok, output) - if not headless then - self:log(vim.trim(output), ok and vim.log.levels.DEBUG or vim.log.levels.ERROR) - end - ret = { ok = ok, output = output } - running = false - self._running:resume() - end - if headless then opts.on_data = function(data) -- prefix with plugin name - local prefix = self:prefix() - io.write(Terminal.prefix(data, prefix)) + io.write(Terminal.prefix(data, self:prefix())) end end - Process.spawn(cmd, opts) - coroutine.yield() - assert(not running, "process still running?") - if on_exit then - pcall(on_exit, ret.ok, ret.output) + + local proc = Process.spawn(cmd, opts) + proc:wait() + + local ok = proc.code == 0 and proc.signal == 0 + if not headless then + local msg = vim.trim(proc.data) + if #msg > 0 then + self:log(vim.trim(proc.data), ok and vim.log.levels.DEBUG or vim.log.levels.ERROR) + end end - coroutine.yield() - return ret.ok + + if opts.on_exit then + pcall(opts.on_exit, ok, proc.data) + end + return ok end function Task:prefix() @@ -253,10 +224,4 @@ function Task:prefix() or plugin .. " " .. task .. " | " end -function Task:wait() - while self:is_running() do - vim.wait(10) - end -end - return Task diff --git a/lua/lazy/util.lua b/lua/lazy/util.lua index 1c3cee3..9f1088d 100644 --- a/lua/lazy/util.lua +++ b/lua/lazy/util.lua @@ -76,6 +76,13 @@ function M.throttle(ms, fn) local timer = vim.uv.new_timer() local pending = false + ---@type Async + local async + + local function running() + return async and async:running() + end + return function() if timer:is_active() then pending = true @@ -85,7 +92,10 @@ function M.throttle(ms, fn) 0, ms, vim.schedule_wrap(function() - fn() + if running() then + return + end + async = require("lazy.async").new(fn) if pending then pending = false else diff --git a/lua/lazy/view/render.lua b/lua/lazy/view/render.lua index 6d0e758..640e9b0 100644 --- a/lua/lazy/view/render.lua +++ b/lua/lazy/view/render.lua @@ -51,7 +51,7 @@ function M:update() if plugin._.tasks then for _, task in ipairs(plugin._.tasks) do self.progress.total = self.progress.total + 1 - if not task:is_running() then + if not task:running() then self.progress.done = self.progress.done + 1 end end @@ -356,7 +356,7 @@ end function M:diagnostics(plugin) local skip = false for _, task in ipairs(plugin._.tasks or {}) do - if task:is_running() then + if task:running() then self:diagnostic({ severity = vim.diagnostic.severity.WARN, message = task.name .. (task:status() and (": " .. task:status()) or ""), diff --git a/lua/lazy/view/sections.lua b/lua/lazy/view/sections.lua index c9fd9a7..c1681a8 100644 --- a/lua/lazy/view/sections.lua +++ b/lua/lazy/view/sections.lua @@ -28,7 +28,7 @@ return { return true end return has_task(plugin, function(task) - return task:is_running() + return task:running() end) end, title = "Working", diff --git a/tests/manage/process_spec.lua b/tests/manage/process_spec.lua new file mode 100644 index 0000000..0fbbe89 --- /dev/null +++ b/tests/manage/process_spec.lua @@ -0,0 +1,20 @@ +---@module 'luassert' +local Async = require("lazy.async") +local Process = require("lazy.manage.process") + +describe("process", function() + it("runs sync", function() + local lines = Process.exec({ "echo", "-n", "hello" }) + assert.are.same({ "hello" }, lines) + end) + + it("runs sync from async context", function() + local lines ---@type string[] + local async = Async.new(function() + lines = Process.exec({ "echo", "-n", "hello" }) + end) + async:wait() + + assert.are.same({ "hello" }, lines) + end) +end) diff --git a/tests/manage/task_spec.lua b/tests/manage/task_spec.lua index 7df638a..e161fa2 100644 --- a/tests/manage/task_spec.lua +++ b/tests/manage/task_spec.lua @@ -21,9 +21,9 @@ describe("task", function() it("simple function", function() local task = Task.new(plugin, "test", function() end, opts) - assert(task:is_running()) + assert(task:running()) task:wait() - assert(not task:is_running()) + assert(not task:running()) assert(task_result.done) end) @@ -31,9 +31,9 @@ describe("task", function() local task = Task.new(plugin, "test", function() error("test") end, opts) - assert(task:is_running()) + assert(task:running()) task:wait() - assert(not task:is_running()) + assert(not task:running()) assert(task_result.done) assert(task_result.error) assert(task:has_errors() and task:output(vim.log.levels.ERROR):find("test")) @@ -46,12 +46,12 @@ describe("task", function() coroutine.yield() running = false end, opts) - assert(task:is_running()) + assert(task:running()) assert(running) - assert(task:is_running()) + assert(task:running()) task:wait() assert(not running) - assert(not task:is_running()) + assert(not task:running()) assert(task_result.done) assert(not task:has_errors()) end) @@ -60,19 +60,19 @@ describe("task", function() local task = Task.new(plugin, "spawn_errors", function(task) task:spawn("foobar") end, opts) - assert(task:is_running()) + assert(task:running()) task:wait() - assert(not task:is_running()) + assert(not task:running()) assert(task_result.done) - assert(task:has_errors() and task:output(vim.log.levels.ERROR):find("Failed to spawn"), task.output) + assert(task:has_errors() and task:output(vim.log.levels.ERROR):find("Failed to spawn"), task:output()) end) it("spawn", function() local task = Task.new(plugin, "test", function(task) task:spawn("echo", { args = { "foo" } }) end, opts) - assert(task:is_running()) - assert(task:is_running()) + assert(task:running()) + assert(task:running()) task:wait() assert.same(task:output(), "foo") assert(task_result.done) @@ -84,8 +84,8 @@ describe("task", function() task:spawn("echo", { args = { "foo" } }) task:spawn("echo", { args = { "bar" } }) end, opts) - assert(task:is_running()) - assert(task:is_running()) + assert(task:running()) + assert(task:running()) task:wait() assert(task:output() == "foo\nbar" or task:output() == "bar\nfoo", task:output()) assert(task_result.done) diff --git a/tests/run b/tests/run index 7c8bb34..7872f5a 100755 --- a/tests/run +++ b/tests/run @@ -1,3 +1,3 @@ #!/bin/sh -nvim -l tests/busted.lua tests -o utfTerminal +nvim -l tests/busted.lua tests -o utfTerminal "$@" diff --git a/vim.toml b/vim.toml index 4206f6c..df7e67e 100644 --- a/vim.toml +++ b/vim.toml @@ -8,42 +8,14 @@ any = true [jit] any = true -[[describe.args]] -type = "string" -[[describe.args]] -type = "function" - -[[it.args]] -type = "string" -[[it.args]] -type = "function" - -[[before_each.args]] -type = "function" -[[after_each.args]] -type = "function" - -[assert.is_not] +[assert] any = true -[[assert.equals.args]] -type = "any" -[[assert.equals.args]] -type = "any" -[[assert.equals.args]] -type = "any" -required = false +[describe] +any = true -[[assert.same.args]] -type = "any" -[[assert.same.args]] -type = "any" +[it] +any = true -[[assert.truthy.args]] -type = "any" - -[[assert.spy.args]] -type = "any" - -[[assert.stub.args]] -type = "any" +[before_each.args] +any = true From ab46edbd47fa9f380db65dbf0a7c35d18d810b19 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Fri, 28 Jun 2024 17:44:21 +0200 Subject: [PATCH 165/342] perf: async render --- lua/lazy/manage/task/init.lua | 21 +++++++++++++++------ lua/lazy/util.lua | 34 +++++++++++----------------------- 2 files changed, 26 insertions(+), 29 deletions(-) diff --git a/lua/lazy/manage/task/init.lua b/lua/lazy/manage/task/init.lua index 1470379..2b21001 100644 --- a/lua/lazy/manage/task/init.lua +++ b/lua/lazy/manage/task/init.lua @@ -49,6 +49,7 @@ function Task.new(plugin, name, task, opts) return other.name ~= name or other:running() end, plugin._.tasks or {}) table.insert(plugin._.tasks, self) + self:render() return self end @@ -119,12 +120,18 @@ function Task:log(msg, level) msg = type(msg) == "table" and table.concat(msg, "\n") or msg ---@cast msg string table.insert(self._log, { msg = msg, level = level }) - vim.api.nvim_exec_autocmds("User", { pattern = "LazyRender", modeline = false }) + self:render() if Config.headless() then self:headless() end end +function Task:render() + vim.schedule(function() + vim.api.nvim_exec_autocmds("User", { pattern = "LazyRender", modeline = false }) + end) +end + function Task:headless() if not Config.options.headless.log then return @@ -163,11 +170,13 @@ function Task:_done() if self._opts.on_done then self._opts.on_done(self) end - vim.api.nvim_exec_autocmds("User", { pattern = "LazyRender", modeline = false }) - vim.api.nvim_exec_autocmds("User", { - pattern = "LazyPlugin" .. self.name:sub(1, 1):upper() .. self.name:sub(2), - data = { plugin = self.plugin.name }, - }) + vim.schedule(function() + self:render() + vim.api.nvim_exec_autocmds("User", { + pattern = "LazyPlugin" .. self.name:sub(1, 1):upper() .. self.name:sub(2), + data = { plugin = self.plugin.name }, + }) + end) end function Task:time() diff --git a/lua/lazy/util.lua b/lua/lazy/util.lua index 9f1088d..d1ae7fd 100644 --- a/lua/lazy/util.lua +++ b/lua/lazy/util.lua @@ -73,36 +73,24 @@ end ---@param fn F ---@return F function M.throttle(ms, fn) - local timer = vim.uv.new_timer() - local pending = false - ---@type Async local async - - local function running() - return async and async:running() - end + local pending = false return function() - if timer:is_active() then + if async and async:running() then pending = true return end - timer:start( - 0, - ms, - vim.schedule_wrap(function() - if running() then - return - end - async = require("lazy.async").new(fn) - if pending then - pending = false - else - timer:stop() - end - end) - ) + ---@async + async = require("lazy.async").new(function() + repeat + pending = false + fn() + async:sleep(ms) + + until not pending + end) end end From f85575ab23c81eb897fb2cb1240a0fa1cb41f7f4 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Fri, 28 Jun 2024 17:44:43 +0200 Subject: [PATCH 166/342] perf: use timer instead of check for async executor --- lua/lazy/async.lua | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/lua/lazy/async.lua b/lua/lazy/async.lua index 6ad2d6a..356f4b1 100644 --- a/lua/lazy/async.lua +++ b/lua/lazy/async.lua @@ -2,8 +2,10 @@ local M = {} ---@type Async[] M._queue = {} -M._executor = assert(vim.loop.new_check()) -M._running = false +M._executor = assert(vim.loop.new_timer()) + +M.TIMER = 10 +M.BUDGET = 100 ---@type table M._threads = setmetatable({}, { __mode = "k" }) @@ -68,11 +70,10 @@ end ---@async function Async:sleep(ms) - self._suspended = true vim.defer_fn(function() - self._suspended = false + self:resume() end, ms) - coroutine.yield() + self:suspend() end ---@async @@ -120,12 +121,11 @@ function Async:step() end function M.step() - M._running = true - local budget = 1 * 1e6 - local start = vim.loop.hrtime() + local budget = M.BUDGET * 1e6 + local start = vim.uv.hrtime() local count = #M._queue local i = 0 - while #M._queue > 0 and vim.loop.hrtime() - start < budget do + while #M._queue > 0 and vim.uv.hrtime() - start < budget do ---@type Async local state = table.remove(M._queue, 1) if state:step() then @@ -136,7 +136,6 @@ function M.step() break end end - M._running = false if #M._queue == 0 then return M._executor:stop() end @@ -146,7 +145,7 @@ end function M.add(async) table.insert(M._queue, async) if not M._executor:is_active() then - M._executor:start(vim.schedule_wrap(M.step)) + M._executor:start(1, M.TIMER, vim.schedule_wrap(M.step)) end return async end From a617d9f47b05b80cce595cce0966b88332c75b49 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 28 Jun 2024 17:47:04 +0200 Subject: [PATCH 167/342] chore(main): release 11.5.1 (#1573) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 14 ++++++++++++++ lua/lazy/core/config.lua | 2 +- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index 1d395f3..063a909 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "11.5.0" + ".": "11.5.1" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 4c9fdb0..b939887 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## [11.5.1](https://github.com/folke/lazy.nvim/compare/v11.5.0...v11.5.1) (2024-06-28) + + +### Bug Fixes + +* **rocks:** lua-5.1. Closes [#1575](https://github.com/folke/lazy.nvim/issues/1575) ([4319846](https://github.com/folke/lazy.nvim/commit/4319846b8c8a05975c4139b0bc9f7e6e7a9e6e21)) +* **task:** run on_exit async. See [#1569](https://github.com/folke/lazy.nvim/issues/1569) ([60fe75c](https://github.com/folke/lazy.nvim/commit/60fe75c88db22025989600bb53dba247654d9ed5)) + + +### Performance Improvements + +* async render ([ab46edb](https://github.com/folke/lazy.nvim/commit/ab46edbd47fa9f380db65dbf0a7c35d18d810b19)) +* use timer instead of check for async executor ([f85575a](https://github.com/folke/lazy.nvim/commit/f85575ab23c81eb897fb2cb1240a0fa1cb41f7f4)) + ## [11.5.0](https://github.com/folke/lazy.nvim/compare/v11.4.2...v11.5.0) (2024-06-27) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 501f579..c087527 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -218,7 +218,7 @@ M.defaults = { debug = false, } -M.version = "11.5.0" -- x-release-please-version +M.version = "11.5.1" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 2a6a2dce1b14f35e7eb7cbe8f25202ed83cba697 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Fri, 28 Jun 2024 18:31:10 +0200 Subject: [PATCH 168/342] fix(git): tagrefs --- lua/lazy/manage/git.lua | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lua/lazy/manage/git.lua b/lua/lazy/manage/git.lua index 6b0ab58..a365824 100644 --- a/lua/lazy/manage/git.lua +++ b/lua/lazy/manage/git.lua @@ -184,7 +184,12 @@ function M.get_tag_refs(repo, tagref) tagref = tagref or "--tags" ---@type table local tags = {} - local lines = Process.exec({ "git", "show-ref", "-d", tagref }, { cwd = repo }) + local ok, lines = pcall(function() + return Process.exec({ "git", "show-ref", "-d", tagref }, { cwd = repo }) + end) + if not ok then + return {} + end for _, line in ipairs(lines) do local ref, tag = line:match("^(%w+) refs/tags/([^%^]+)%^?{?}?$") if ref then From ec95702ae617308df35f35ad93c469c86d47346f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 28 Jun 2024 18:33:22 +0200 Subject: [PATCH 169/342] chore(main): release 11.5.2 (#1577) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 7 +++++++ lua/lazy/core/config.lua | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index 063a909..d7f1664 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "11.5.1" + ".": "11.5.2" } diff --git a/CHANGELOG.md b/CHANGELOG.md index b939887..5d30b82 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [11.5.2](https://github.com/folke/lazy.nvim/compare/v11.5.1...v11.5.2) (2024-06-28) + + +### Bug Fixes + +* **git:** tagrefs ([2a6a2dc](https://github.com/folke/lazy.nvim/commit/2a6a2dce1b14f35e7eb7cbe8f25202ed83cba697)) + ## [11.5.1](https://github.com/folke/lazy.nvim/compare/v11.5.0...v11.5.1) (2024-06-28) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index c087527..2a66a57 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -218,7 +218,7 @@ M.defaults = { debug = false, } -M.version = "11.5.1" -- x-release-please-version +M.version = "11.5.2" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 9cf745939d792204a18d7ad10a54d22386ececf3 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Fri, 28 Jun 2024 20:17:34 +0200 Subject: [PATCH 170/342] feat(task): build procs can now yield a LazyMsg for more control --- lua/lazy/manage/task/init.lua | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lua/lazy/manage/task/init.lua b/lua/lazy/manage/task/init.lua index 2b21001..277a592 100644 --- a/lua/lazy/manage/task/init.lua +++ b/lua/lazy/manage/task/init.lua @@ -112,9 +112,13 @@ function Task:_run(task) task(self, self._opts) end ----@param msg string|string[] +---@param msg string|string[]|LazyMsg ---@param level? number function Task:log(msg, level) + if type(msg) == "table" and msg.msg then + level = msg.level or level + msg = msg.msg + end level = level or vim.log.levels.DEBUG self._level = math.max(self._level or 0, level or 0) msg = type(msg) == "table" and table.concat(msg, "\n") or msg @@ -170,8 +174,8 @@ function Task:_done() if self._opts.on_done then self._opts.on_done(self) end + self:render() vim.schedule(function() - self:render() vim.api.nvim_exec_autocmds("User", { pattern = "LazyPlugin" .. self.name:sub(1, 1):upper() .. self.name:sub(2), data = { plugin = self.plugin.name }, From a1fffe18f9355030fbb483156c762f50f5e0db73 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 28 Jun 2024 18:22:55 +0000 Subject: [PATCH 171/342] chore(build): auto-generate docs --- doc/lazy.nvim.txt | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index e88747b..65fbe06 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -1226,7 +1226,7 @@ BEST PRACTICES *lazy.nvim-🔥-developers-best-practices* loaded. Lua plugins/libraries are automatically loaded when they are `require()`d, so they don’t need to be in `dependencies`. - Inside a `build` function or `*.lua` build file, use - `coroutine.yield(status_msg)` to show progress. + `coroutine.yield(msg:string|LazyMsg)` to show progress. - Don’t change the `cwd` in your build function, since builds run in parallel and changing the `cwd` will affect other builds. @@ -1245,9 +1245,19 @@ The spec **build** property can be one of the following: - if no `build` is specified, but a `build.lua` file exists, that will be used instead. Build functions and `*.lua` files run asynchronously in a coroutine. Use -`coroutine.yield(status_msg)` to show progress. Yielding will also schedule the -next `coroutine.resume()` to run in the next tick, so you can do long-running -tasks without blocking Neovim. +`coroutine.yield(msg:string|LazyMsg)` to show progress. + +Yielding will also schedule the next `coroutine.resume()` to run in the next +tick, so you can do long-running tasks without blocking Neovim. + +>lua + ---@class LazyMsg + ---@field msg string + ---@field level? number vim.log.levels.XXX +< + +Use `vim.log.levels.TRACE` to only show the message as a **status** message for +the task. ============================================================================== From ba1a9c5392915c306cb12ed0b64b9b3e6372a1d5 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 29 Jun 2024 07:12:16 +0200 Subject: [PATCH 172/342] ci: bootstrap script --- bootstrap.lua | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 bootstrap.lua diff --git a/bootstrap.lua b/bootstrap.lua new file mode 100644 index 0000000..3b30f1f --- /dev/null +++ b/bootstrap.lua @@ -0,0 +1,48 @@ +-- Lay Bootstrapper +-- Usage: +-- ```lua +-- load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() +-- ``` +local M = {} + +function M.setup() + if vim.env.LAZY_STDPATH then + local root = vim.fn.fnamemodify(vim.env.LAZY_STDPATH, ":p") + for _, name in ipairs({ "config", "data", "state", "cache" }) do + vim.env[("XDG_%s_HOME"):format(name:upper())] = root .. "/" .. name + end + end + + local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" + if not (vim.uv or vim.loop).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", "--branch=stable", 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() + vim.cmd([[quit]]) + end + end + vim.opt.rtp:prepend(lazypath) +end +M.setup() + +return M From c93eb359a39bc924578a08ac6dacca4b82f97c97 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 29 Jun 2024 07:15:22 +0200 Subject: [PATCH 173/342] ci: minit (minimal init) --- lua/lazy/minit.lua | 57 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 lua/lazy/minit.lua diff --git a/lua/lazy/minit.lua b/lua/lazy/minit.lua new file mode 100644 index 0000000..01ac238 --- /dev/null +++ b/lua/lazy/minit.lua @@ -0,0 +1,57 @@ +---@diagnostic disable: inject-field +---@class LazyMinit:LazyConfig +---@field stdpath? string + +local islist = vim.islist or vim.tbl_islist + +---@alias MinitSetup (fun(spec:LazySpec, opts: LazyMinit):LazyMinit?) | (fun(opts: LazyMinit):LazyMinit?) | (fun(spec:LazySpec, opts: LazyMinit):LazyMinit?) + +local M = {} + +---@param opts LazyMinit +---@return LazySpec[] +local function get_spec(opts) + local ret = opts.spec or {} + return ret and type(ret) == "table" and islist(ret) and ret or { ret } +end + +---@param defaults LazyMinit +---@param opts LazyMinit +function M.extend(defaults, opts) + local spec = {} + vim.list_extend(spec, get_spec(defaults)) + vim.list_extend(spec, get_spec(opts)) + return vim.tbl_deep_extend("force", defaults, opts, { spec = spec }) +end + +function M.setup(opts) + opts = M.extend({ spec = { { dir = vim.fn.expand(".") } } }, opts) + + -- set stdpaths to use .tests + local root = opts.stdpath or ".minit" + root = vim.fn.fnamemodify(root, ":p") + for _, name in ipairs({ "config", "data", "state", "cache" }) do + vim.env[("XDG_%s_HOME"):format(name:upper())] = root .. "/" .. name + end + + vim.o.loadplugins = true + require("lazy").setup(opts) +end + +---@param opts LazyMinit +function M.busted(opts) + opts = M.extend({ spec = { "lunarmodules/busted" }, rocks = { hererocks = true } }, opts) + + M.setup(opts) + + local Config = require("lazy.core.config") + -- disable termnial output for the tests + Config.options.headless = {} + + -- run busted + return pcall(require("busted.runner"), { + standalone = false, + }) or os.exit(1) +end + +return M From cfdfb786b13ca0e37562a0f68b0930869c75af7f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 29 Jun 2024 07:17:01 +0200 Subject: [PATCH 174/342] chore(main): release 11.6.0 (#1579) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 7 +++++++ lua/lazy/core/config.lua | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index d7f1664..888664e 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "11.5.2" + ".": "11.6.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 5d30b82..f310801 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [11.6.0](https://github.com/folke/lazy.nvim/compare/v11.5.2...v11.6.0) (2024-06-29) + + +### Features + +* **task:** build procs can now yield a LazyMsg for more control ([9cf7459](https://github.com/folke/lazy.nvim/commit/9cf745939d792204a18d7ad10a54d22386ececf3)) + ## [11.5.2](https://github.com/folke/lazy.nvim/compare/v11.5.1...v11.5.2) (2024-06-28) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 2a66a57..0ff2ca6 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -218,7 +218,7 @@ M.defaults = { debug = false, } -M.version = "11.5.2" -- x-release-please-version +M.version = "11.6.0" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From f47ab692f1bc84116d3c95808bba2e2b86fbd450 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 29 Jun 2024 07:26:39 +0200 Subject: [PATCH 175/342] ci: allow to run busted script with nvim -u to inspect env --- lua/lazy/minit.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lua/lazy/minit.lua b/lua/lazy/minit.lua index 01ac238..52a0059 100644 --- a/lua/lazy/minit.lua +++ b/lua/lazy/minit.lua @@ -48,6 +48,9 @@ function M.busted(opts) -- disable termnial output for the tests Config.options.headless = {} + if not require("lazy.core.config").headless() then + return vim.notify("busted can only run in headless mode. Please run with `nvim -l`", vim.log.levels.WARN) + end -- run busted return pcall(require("busted.runner"), { standalone = false, From b1821ca2fa193526246057f1659ee631be3912f7 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 29 Jun 2024 07:26:49 +0200 Subject: [PATCH 176/342] ci: tests using minit --- tests/busted.lua | 25 +++---------------------- 1 file changed, 3 insertions(+), 22 deletions(-) diff --git a/tests/busted.lua b/tests/busted.lua index 8fd4f28..0bc764b 100755 --- a/tests/busted.lua +++ b/tests/busted.lua @@ -1,28 +1,9 @@ #!/usr/bin/env -S nvim -l --- set stdpaths to use .tests -local root = vim.fn.fnamemodify("./.tests", ":p") -for _, name in ipairs({ "config", "data", "state", "cache" }) do - vim.env[("XDG_%s_HOME"):format(name:upper())] = root .. "/" .. name -end - vim.opt.rtp:prepend(".") -vim.o.loadplugins = true -- enable since nvim -l disables plugins - -- Setup lazy.nvim -require("lazy").setup({ - spec = { - "lunarmodules/busted", -- add busted - }, - rocks = { hererocks = true }, +require("lazy.minit").busted({ + spec = {}, + stdpath = ".tests", }) - -local Config = require("lazy.core.config") --- disable termnial output for the tests -Config.options.headless = {} - --- run busted -return pcall(require("busted.runner"), { - standalone = false, -}) or os.exit(1) From 0e106c085c7b7bb6553fcd770b7d059e69a62c90 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 29 Jun 2024 07:46:41 +0200 Subject: [PATCH 177/342] ci(minit): added repro --- lua/lazy/minit.lua | 40 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/lua/lazy/minit.lua b/lua/lazy/minit.lua index 52a0059..d4e03d5 100644 --- a/lua/lazy/minit.lua +++ b/lua/lazy/minit.lua @@ -25,7 +25,9 @@ function M.extend(defaults, opts) end function M.setup(opts) - opts = M.extend({ spec = { { dir = vim.fn.expand(".") } } }, opts) + opts = M.extend({ + change_detection = { enabled = false }, + }, opts) -- set stdpaths to use .tests local root = opts.stdpath or ".minit" @@ -36,11 +38,45 @@ function M.setup(opts) vim.o.loadplugins = true require("lazy").setup(opts) + require("lazy").update():wait() + if vim.bo.filetype == "lazy" then + local errors = false + for _, plugin in pairs(require("lazy.core.config").spec.plugins) do + errors = errors or require("lazy.core.plugin").has_errors(plugin) + end + if not errors then + vim.cmd.close() + end + end +end + +function M.repro(opts) + opts = M.extend({ + spec = { + { + "folke/tokyonight.nvim", + priority = 1000, + lazy = false, + config = function() + require("tokyonight").setup({ style = "moon" }) + require("tokyonight").load() + end, + }, + }, + install = { colorscheme = { "tokyonight" } }, + }, opts) + M.setup(opts) end ---@param opts LazyMinit function M.busted(opts) - opts = M.extend({ spec = { "lunarmodules/busted" }, rocks = { hererocks = true } }, opts) + opts = M.extend({ + spec = { + "lunarmodules/busted", + { dir = vim.fn.fnamemodify(".", ":p") }, + }, + rocks = { hererocks = true }, + }, opts) M.setup(opts) From cdfea60506121d4704f37b8018fb24a135fb2f54 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 29 Jun 2024 08:03:06 +0200 Subject: [PATCH 178/342] build(bootstrap): added support for custom lazypath --- bootstrap.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bootstrap.lua b/bootstrap.lua index 3b30f1f..e39db4d 100644 --- a/bootstrap.lua +++ b/bootstrap.lua @@ -13,8 +13,8 @@ function M.setup() end end - local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" - if not (vim.uv or vim.loop).fs_stat(lazypath) then + local lazypath = vim.env.LAZY_PATH or vim.fn.stdpath("data") .. "/lazy/lazy.nvim" + if not vim.env.LAZY_PATH and not (vim.uv or vim.loop).fs_stat(lazypath) then vim.api.nvim_echo({ { "Cloning lazy.nvim\n\n", From 307868826360bc1bda7502b002a4b6049d82ebaa Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 29 Jun 2024 08:03:37 +0200 Subject: [PATCH 179/342] ci(minit): LAZY_STDPATH --- lua/lazy/minit.lua | 21 +++++++++------------ tests/busted.lua | 2 ++ 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/lua/lazy/minit.lua b/lua/lazy/minit.lua index d4e03d5..01f89c0 100644 --- a/lua/lazy/minit.lua +++ b/lua/lazy/minit.lua @@ -1,22 +1,18 @@ ---@diagnostic disable: inject-field ----@class LazyMinit:LazyConfig ----@field stdpath? string local islist = vim.islist or vim.tbl_islist ----@alias MinitSetup (fun(spec:LazySpec, opts: LazyMinit):LazyMinit?) | (fun(opts: LazyMinit):LazyMinit?) | (fun(spec:LazySpec, opts: LazyMinit):LazyMinit?) - local M = {} ----@param opts LazyMinit +---@param opts LazyConfig ---@return LazySpec[] local function get_spec(opts) local ret = opts.spec or {} return ret and type(ret) == "table" and islist(ret) and ret or { ret } end ----@param defaults LazyMinit ----@param opts LazyMinit +---@param defaults LazyConfig +---@param opts LazyConfig function M.extend(defaults, opts) local spec = {} vim.list_extend(spec, get_spec(defaults)) @@ -30,10 +26,11 @@ function M.setup(opts) }, opts) -- set stdpaths to use .tests - local root = opts.stdpath or ".minit" - root = vim.fn.fnamemodify(root, ":p") - for _, name in ipairs({ "config", "data", "state", "cache" }) do - vim.env[("XDG_%s_HOME"):format(name:upper())] = root .. "/" .. name + if vim.env.LAZY_STDPATH then + local root = vim.fn.fnamemodify(vim.env.LAZY_STDPATH, ":p") + for _, name in ipairs({ "config", "data", "state", "cache" }) do + vim.env[("XDG_%s_HOME"):format(name:upper())] = root .. "/" .. name + end end vim.o.loadplugins = true @@ -68,7 +65,7 @@ function M.repro(opts) M.setup(opts) end ----@param opts LazyMinit +---@param opts LazyConfig function M.busted(opts) opts = M.extend({ spec = { diff --git a/tests/busted.lua b/tests/busted.lua index 0bc764b..7292d3e 100755 --- a/tests/busted.lua +++ b/tests/busted.lua @@ -1,5 +1,7 @@ #!/usr/bin/env -S nvim -l +vim.env.LAZY_STDPATH = ".tests" + vim.opt.rtp:prepend(".") -- Setup lazy.nvim From 88f4d13e5f489eb30959db03a94ebfa10a78b47f Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 29 Jun 2024 08:11:42 +0200 Subject: [PATCH 180/342] feat(minit): fallback to habamax when no colorscheme set --- lua/lazy/minit.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lua/lazy/minit.lua b/lua/lazy/minit.lua index 01f89c0..7da2b2a 100644 --- a/lua/lazy/minit.lua +++ b/lua/lazy/minit.lua @@ -35,6 +35,9 @@ function M.setup(opts) vim.o.loadplugins = true require("lazy").setup(opts) + if vim.g.colors_name == nil then + vim.cmd("colorscheme habamax") + end require("lazy").update():wait() if vim.bo.filetype == "lazy" then local errors = false From cece2a9b4a649ee5fa45fe83590a6dd11c5d4eb7 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 29 Jun 2024 08:13:24 +0200 Subject: [PATCH 181/342] chore(main): release 11.7.0 (#1582) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 7 +++++++ lua/lazy/core/config.lua | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index 888664e..2f14177 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "11.6.0" + ".": "11.7.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index f310801..0fd257c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [11.7.0](https://github.com/folke/lazy.nvim/compare/v11.6.0...v11.7.0) (2024-06-29) + + +### Features + +* **minit:** fallback to habamax when no colorscheme set ([88f4d13](https://github.com/folke/lazy.nvim/commit/88f4d13e5f489eb30959db03a94ebfa10a78b47f)) + ## [11.6.0](https://github.com/folke/lazy.nvim/compare/v11.5.2...v11.6.0) (2024-06-29) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 0ff2ca6..4d6bca7 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -218,7 +218,7 @@ M.defaults = { debug = false, } -M.version = "11.6.0" -- x-release-please-version +M.version = "11.7.0" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 7af8a317e24e31f4ee276ecb6d1f5f44e5bd11e2 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 29 Jun 2024 06:29:46 +0000 Subject: [PATCH 182/342] chore(build): auto-generate docs --- doc/lazy.nvim.txt | 85 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index 65fbe06..eae1268 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -39,6 +39,7 @@ Table of Contents *lazy.nvim-table-of-contents* 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| ============================================================================== @@ -1260,6 +1261,90 @@ Use `vim.log.levels.TRACE` to only show the message as a **status** message for the task. + +MINIT (MINIMAL INIT) *lazy.nvim-🔥-developers-minit-(minimal-init)* + +**lazy.nvim** comes with some built-in functionality to help you create a +minimal init for your plugin. + +I mainly use this for testing and for users to create a `repro.lua`. + +When running in **headless** mode, **lazy.nvim** will log any messages to the +terminal. See `opts.headless` for more info. + +**minit** will install/load all your specs and will always run an update as +well. + + +BOOTSTRAP ~ + +>lua + -- setting this env will override all XDG paths + vim.env.LAZY_STDPATH = ".tests" + -- this will install lazy in your stdpath + load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() +< + + +TESTING WITH BUSTED ~ + +This will add `"lunarmodules/busted"`, configure `hererocks` and run `busted`. + +Below is an example of how I use **minit** to run tests with busted + in **LazyVim**. + +>lua + #!/usr/bin/env -S nvim -l + + vim.env.LAZY_STDPATH = ".tests" + load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() + + -- Setup lazy.nvim + require("lazy.minit").busted({ + spec = { + "LazyVim/starter", + "williamboman/mason-lspconfig.nvim", + "williamboman/mason.nvim", + "nvim-treesitter/nvim-treesitter", + }, + }) +< + +To use this, you can run: + +>sh + nvim -l ./tests/busted.lua tests +< + +If you want to inspect the test environment, run: + +>sh + nvim -u ./tests/busted.lua +< + + +REPRO.LUA ~ + +>lua + vim.env.LAZY_STDPATH = ".repro" + load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() + + require("lazy.minit").repro({ + spec = { + "stevearc/conform.nvim", + "nvim-neotest/nvim-nio", + }, + }) + + -- do anything else you need to do to reproduce the issue +< + +Then run it with: + +>sh + nvim -u repro.lua +< + ============================================================================== 9. Links *lazy.nvim-links* From 695a05872a5b44e366e5532eb2fe38a64fae8357 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 29 Jun 2024 10:18:31 +0200 Subject: [PATCH 183/342] feat(plugin): allow loading specs without pkg --- lua/lazy/core/plugin.lua | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lua/lazy/core/plugin.lua b/lua/lazy/core/plugin.lua index 84660e6..f917b19 100644 --- a/lua/lazy/core/plugin.lua +++ b/lua/lazy/core/plugin.lua @@ -21,7 +21,7 @@ M.Spec = Spec M.LOCAL_SPEC = ".lazy.lua" ---@param spec? LazySpec ----@param opts? {optional?:boolean} +---@param opts? {optional?:boolean, pkg?:boolean} function Spec.new(spec, opts) local self = setmetatable({}, Spec) self.meta = Meta.new(self) @@ -30,7 +30,9 @@ function Spec.new(spec, opts) self.notifs = {} self.ignore_installed = {} self.optional = opts and opts.optional - self.meta:load_pkgs() + if not (opts and opts.pkg == false) then + self.meta:load_pkgs() + end if spec then self:parse(spec) end From 00c23e72a387614e4c2c8988181c8c07a2e81cf0 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 29 Jun 2024 10:20:23 +0200 Subject: [PATCH 184/342] chore(main): release 11.8.0 (#1583) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 7 +++++++ lua/lazy/core/config.lua | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index 2f14177..28170d0 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "11.7.0" + ".": "11.8.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 0fd257c..17ff0cd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [11.8.0](https://github.com/folke/lazy.nvim/compare/v11.7.0...v11.8.0) (2024-06-29) + + +### Features + +* **plugin:** allow loading specs without pkg ([695a058](https://github.com/folke/lazy.nvim/commit/695a05872a5b44e366e5532eb2fe38a64fae8357)) + ## [11.7.0](https://github.com/folke/lazy.nvim/compare/v11.6.0...v11.7.0) (2024-06-29) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 4d6bca7..415a2b8 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -218,7 +218,7 @@ M.defaults = { debug = false, } -M.version = "11.7.0" -- x-release-please-version +M.version = "11.8.0" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 3513227a9a41c8e6366e1719f4cefbe891ca73d2 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 29 Jun 2024 10:36:35 +0200 Subject: [PATCH 185/342] fix(async): remove debug assert --- lua/lazy/async.lua | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lua/lazy/async.lua b/lua/lazy/async.lua index 356f4b1..58145a6 100644 --- a/lua/lazy/async.lua +++ b/lua/lazy/async.lua @@ -153,9 +153,7 @@ end function M.running() local co = coroutine.running() if co then - local async = M._threads[co] - assert(async, "In coroutine without async context") - return async + return M._threads[co] end end From 8dd947fccddbf70893a1f0ae6522361cc1777609 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 29 Jun 2024 10:37:55 +0200 Subject: [PATCH 186/342] chore(main): release 11.8.1 (#1584) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 7 +++++++ lua/lazy/core/config.lua | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index 28170d0..01a094f 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "11.8.0" + ".": "11.8.1" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 17ff0cd..ec7ec51 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [11.8.1](https://github.com/folke/lazy.nvim/compare/v11.8.0...v11.8.1) (2024-06-29) + + +### Bug Fixes + +* **async:** remove debug assert ([3513227](https://github.com/folke/lazy.nvim/commit/3513227a9a41c8e6366e1719f4cefbe891ca73d2)) + ## [11.8.0](https://github.com/folke/lazy.nvim/compare/v11.7.0...v11.8.0) (2024-06-29) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 415a2b8..f3ce188 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -218,7 +218,7 @@ M.defaults = { debug = false, } -M.version = "11.8.0" -- x-release-please-version +M.version = "11.8.1" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 9ab306169060eeab7ebca00653318683e72ab62d Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 29 Jun 2024 11:44:31 +0200 Subject: [PATCH 187/342] perf(rocks): `vim.fn.executable` is slow on WSL2, so only check for `luarocks` when needed. Closes #1585 --- lua/lazy/core/config.lua | 14 ++++++++++++-- lua/lazy/core/plugin.lua | 8 ++++---- lua/lazy/health.lua | 4 ++-- lua/lazy/pkg/rockspec.lua | 6 +++--- 4 files changed, 21 insertions(+), 11 deletions(-) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index f3ce188..cb360ec 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -49,8 +49,11 @@ M.defaults = { enabled = true, root = vim.fn.stdpath("data") .. "/lazy-rocks", server = "https://nvim-neorocks.github.io/rocks-binaries/", - -- use hererocks to install luarocks. - hererocks = vim.fn.executable("luarocks") == 0, + -- use hererocks to install luarocks? + -- set to `nil` to use hererocks when luarocks is not found + -- set to `true` to always use hererocks + -- set to `false` to always use luarocks + hererocks = nil, }, dev = { ---@type string | fun(plugin: LazyPlugin): string directory where you store your local plugin projects @@ -218,6 +221,13 @@ M.defaults = { debug = false, } +function M.hererocks() + if M.options.rocks.hererocks == nil then + M.options.rocks.hererocks = vim.fn.executable("luarocks") == 0 + end + return M.options.rocks.hererocks +end + M.version = "11.8.1" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") diff --git a/lua/lazy/core/plugin.lua b/lua/lazy/core/plugin.lua index f917b19..26b3f6e 100644 --- a/lua/lazy/core/plugin.lua +++ b/lua/lazy/core/plugin.lua @@ -336,16 +336,16 @@ function M.load() end -- add hererocks when enabled and needed - if Config.options.rocks.hererocks then - for _, plugin in pairs(Config.spec.plugins) do - if plugin.build == "rockspec" then + for _, plugin in pairs(Config.spec.plugins) do + if plugin.build == "rockspec" then + if Config.hererocks() then Config.spec.meta:add({ "luarocks/hererocks", build = "rockspec", lazy = true, }) - break end + break end end diff --git a/lua/lazy/health.lua b/lua/lazy/health.lua index 60cb61e..b3bf6f2 100644 --- a/lua/lazy/health.lua +++ b/lua/lazy/health.lua @@ -125,7 +125,7 @@ function M.check() start("luarocks") if Config.options.rocks.enabled then - if Config.options.rocks.hererocks then + if Config.hererocks() then info("checking `hererocks` installation") else info("checking `luarocks` installation") @@ -155,7 +155,7 @@ function M.check() "Lazy won't be able to install plugins that require `luarocks`.", "Here's what you can do:", " - fix your `luarocks` installation", - Config.options.rocks.hererocks and " - disable *hererocks* with `opts.rocks.hererocks = false`" + Config.hererocks() and " - disable *hererocks* with `opts.rocks.hererocks = false`" or " - enable `hererocks` with `opts.rocks.hererocks = true`", " - disable `luarocks` support completely with `opts.rocks.enabled = false`", }, "\n")) diff --git a/lua/lazy/pkg/rockspec.lua b/lua/lazy/pkg/rockspec.lua index c89ab3c..e1d2c6e 100644 --- a/lua/lazy/pkg/rockspec.lua +++ b/lua/lazy/pkg/rockspec.lua @@ -72,7 +72,7 @@ function M.check(opts) }, opts or {}) local ok = false - if Config.options.rocks.hererocks then + if Config.hererocks() then if M.hererocks.building() then ok = true else @@ -119,7 +119,7 @@ function M.build(task) "", "This plugin requires `luarocks`. Try one of the following:", " - fix your `luarocks` installation", - Config.options.rocks.hererocks and " - disable *hererocks* with `opts.rocks.hererocks = false`" + Config.hererocks() and " - disable *hererocks* with `opts.rocks.hererocks = false`" or " - enable `hererocks` with `opts.rocks.hererocks = true`", " - disable `luarocks` support completely with `opts.rocks.enabled = false`", }) @@ -132,7 +132,7 @@ function M.build(task) local env = {} local luarocks = "luarocks" - if Config.options.rocks.hererocks then + if Config.hererocks() then -- hererocks is still building, so skip for now -- a new build will happen in the next round if M.hererocks.building() then From 09f69bae4bb9661318599b3668e9fd19954cd7c7 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 29 Jun 2024 12:00:15 +0200 Subject: [PATCH 188/342] ci: dispatch docs gen from main --- .github/workflows/ci.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d1f514d..678322d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,6 +26,13 @@ jobs: nvim --version [ ! -d tests ] && exit 0 ./tests/run + docs: + runs-on: ubuntu-latest + needs: tests + steps: + - name: Generate Docs + shell: bash + run: gh workflow run "Deploy to Github Pages" --ref docs community: runs-on: ubuntu-latest steps: @@ -61,6 +68,7 @@ jobs: if: ${{ github.ref == 'refs/heads/main' }} needs: - tests + - docs runs-on: ubuntu-latest steps: - uses: googleapis/release-please-action@v4 From 07ccb49ace9ea4a5c1426ea0f620ad8fda28bf43 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 29 Jun 2024 12:01:52 +0200 Subject: [PATCH 189/342] ci: set env for docs --- .github/workflows/ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 678322d..cd2ff10 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -29,6 +29,8 @@ jobs: docs: runs-on: ubuntu-latest needs: tests + env: + GH_TOKEN: ${{ github.token }} steps: - name: Generate Docs shell: bash From 440999fc5aa5073edd542a187c6cd65df2788a16 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 29 Jun 2024 12:03:42 +0200 Subject: [PATCH 190/342] ci: fix --- .github/workflows/ci.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index cd2ff10..6b9c8e6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -32,13 +32,16 @@ jobs: env: GH_TOKEN: ${{ github.token }} steps: + - uses: actions/checkout@v4 + with: + ref: docs - name: Generate Docs shell: bash run: gh workflow run "Deploy to Github Pages" --ref docs community: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Install Neovim shell: bash run: | From 332a7ff9b3d226529d8afda4e61979e8b410f350 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 29 Jun 2024 12:06:54 +0200 Subject: [PATCH 191/342] ci: auto-commit-action v5 --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6b9c8e6..029531d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -62,7 +62,7 @@ jobs: run: | nvim -l lua/lazy/build.lua - name: Push changes - uses: stefanzweifel/git-auto-commit-action@v4 + uses: stefanzweifel/git-auto-commit-action@v5 with: commit_message: "chore(build): auto-generate rockspec mappings" commit_user_name: "github-actions[bot]" From a75d950b8f356733ad2d20c4bdb794179e6d4ff1 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 29 Jun 2024 13:52:50 +0200 Subject: [PATCH 192/342] fix(process): deal with process errors --- lua/lazy/manage/process.lua | 9 +++------ lua/lazy/util.lua | 13 +++++++++++-- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/lua/lazy/manage/process.lua b/lua/lazy/manage/process.lua index f29d978..c4a4baf 100644 --- a/lua/lazy/manage/process.lua +++ b/lua/lazy/manage/process.lua @@ -42,8 +42,8 @@ function Process.new(cmd, opts) opts = opts or {} opts.args = opts.args or {} if type(cmd) == "table" then - self.cmd = table.remove(cmd, 1) - vim.list_extend(opts.args, cmd) + self.cmd = cmd[1] + vim.list_extend(opts.args, vim.list_slice(cmd, 2)) else self.cmd = cmd end @@ -233,10 +233,7 @@ function M.exec(cmd, opts) opts = opts or {} local proc = M.spawn(cmd, opts) proc:wait() - if proc.code ~= 0 then - error("Process failed with code " .. proc.code) - end - return vim.split(proc.data, "\n") + return vim.split(proc.data, "\n"), proc.code end return M diff --git a/lua/lazy/util.lua b/lua/lazy/util.lua index d1ae7fd..fed140c 100644 --- a/lua/lazy/util.lua +++ b/lua/lazy/util.lua @@ -162,12 +162,21 @@ end ---@param opts? LazyCmdOptions|{filetype?:string} function M.float_cmd(cmd, opts) opts = opts or {} + local Process = require("lazy.manage.process") + local lines, code = Process.exec(cmd, { cwd = opts.cwd }) + if code ~= 0 then + M.error({ + "`" .. table.concat(cmd, " ") .. "`", + "", + "## Error", + table.concat(lines, "\n"), + }, { title = "Command Failed (" .. code .. ")" }) + return + end local float = M.float(opts) if opts.filetype then vim.bo[float.buf].filetype = opts.filetype end - local Process = require("lazy.manage.process") - local lines = Process.exec(cmd, { cwd = opts.cwd }) vim.api.nvim_buf_set_lines(float.buf, 0, -1, false, lines) vim.bo[float.buf].modifiable = false return float From 5d334b9f579aacd09603dd9e19b6730fbfcf4c72 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 29 Jun 2024 13:58:13 +0200 Subject: [PATCH 193/342] fix(ui): save/restore view right before/after rendering --- lua/lazy/view/init.lua | 6 ------ lua/lazy/view/render.lua | 10 ++++++++++ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/lua/lazy/view/init.lua b/lua/lazy/view/init.lua index 26383da..b27a17e 100644 --- a/lua/lazy/view/init.lua +++ b/lua/lazy/view/init.lua @@ -147,13 +147,7 @@ end function M:update() if self.buf and vim.api.nvim_buf_is_valid(self.buf) then - vim.bo[self.buf].modifiable = true - local view = vim.api.nvim_win_call(self.view.win, vim.fn.winsaveview) self.render:update() - vim.api.nvim_win_call(self.view.win, function() - vim.fn.winrestview(view) - end) - vim.bo[self.buf].modifiable = false vim.cmd.redraw() end end diff --git a/lua/lazy/view/render.lua b/lua/lazy/view/render.lua index 640e9b0..b7bd884 100644 --- a/lua/lazy/view/render.lua +++ b/lua/lazy/view/render.lua @@ -74,7 +74,17 @@ function M:update() end self:trim() + + vim.bo[self.view.buf].modifiable = true + local view = vim.api.nvim_win_call(self.view.win, vim.fn.winsaveview) + self:render(self.view.buf) + + vim.api.nvim_win_call(self.view.win, function() + vim.fn.winrestview(view) + end) + vim.bo[self.view.buf].modifiable = false + vim.diagnostic.set( Config.ns, self.view.buf, From 5bddef2415240b0fe620bb3dfec31a678bd670d9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 29 Jun 2024 13:59:37 +0200 Subject: [PATCH 194/342] chore(main): release 11.8.2 (#1586) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 13 +++++++++++++ lua/lazy/core/config.lua | 2 +- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index 01a094f..a30099e 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "11.8.1" + ".": "11.8.2" } diff --git a/CHANGELOG.md b/CHANGELOG.md index ec7ec51..3fe0915 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [11.8.2](https://github.com/folke/lazy.nvim/compare/v11.8.1...v11.8.2) (2024-06-29) + + +### Bug Fixes + +* **process:** deal with process errors ([a75d950](https://github.com/folke/lazy.nvim/commit/a75d950b8f356733ad2d20c4bdb794179e6d4ff1)) +* **ui:** save/restore view right before/after rendering ([5d334b9](https://github.com/folke/lazy.nvim/commit/5d334b9f579aacd09603dd9e19b6730fbfcf4c72)) + + +### Performance Improvements + +* **rocks:** `vim.fn.executable` is slow on WSL2, so only check for `luarocks` when needed. Closes [#1585](https://github.com/folke/lazy.nvim/issues/1585) ([9ab3061](https://github.com/folke/lazy.nvim/commit/9ab306169060eeab7ebca00653318683e72ab62d)) + ## [11.8.1](https://github.com/folke/lazy.nvim/compare/v11.8.0...v11.8.1) (2024-06-29) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index cb360ec..4dc2419 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -228,7 +228,7 @@ function M.hererocks() return M.options.rocks.hererocks end -M.version = "11.8.1" -- x-release-please-version +M.version = "11.8.2" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 37729140751577e87318c137d90d0e6bb00ceff1 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 29 Jun 2024 14:12:57 +0200 Subject: [PATCH 195/342] fix(ui): when closing details, jump to plugin header. Closes #1338 --- lua/lazy/view/init.lua | 12 +++++++++++- lua/lazy/view/render.lua | 9 +++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/lua/lazy/view/init.lua b/lua/lazy/view/init.lua index b27a17e..6ff3c81 100644 --- a/lua/lazy/view/init.lua +++ b/lua/lazy/view/init.lua @@ -96,7 +96,17 @@ function M.create() name = plugin.name, kind = plugin._.kind, } - self.state.plugin = not vim.deep_equal(self.state.plugin, selected) and selected or nil + + local open = not vim.deep_equal(self.state.plugin, selected) + + if not open then + local row = self.render:get_row(selected) + if row then + vim.api.nvim_win_set_cursor(self.view.win, { row, 8 }) + end + end + + self.state.plugin = open and selected or nil self:update() end end) diff --git a/lua/lazy/view/render.lua b/lua/lazy/view/render.lua index b7bd884..c128147 100644 --- a/lua/lazy/view/render.lua +++ b/lua/lazy/view/render.lua @@ -122,6 +122,15 @@ function M:get_plugin(row) end end +---@param selected {name:string, kind?: LazyPluginKind} +function M:get_row(selected) + for _, loc in ipairs(self.locations) do + if loc.kind == selected.kind and loc.name == selected.name then + return loc.from + end + end +end + function M:title() self:nl() local modes = vim.tbl_filter(function(c) From 5e3c112cb32c9cb6e8622aab4446358e039def7c Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 29 Jun 2024 14:22:53 +0200 Subject: [PATCH 196/342] feat(ui): use [[ & ]] to navigate between plugins. Fixes #1463 --- lua/lazy/view/config.lua | 2 ++ lua/lazy/view/init.lua | 22 ++++++++++++++++++++++ lua/lazy/view/render.lua | 10 +++++++++- 3 files changed, 33 insertions(+), 1 deletion(-) diff --git a/lua/lazy/view/config.lua b/lua/lazy/view/config.lua index e834573..d65f03c 100644 --- a/lua/lazy/view/config.lua +++ b/lua/lazy/view/config.lua @@ -34,6 +34,8 @@ M.keys = { profile_sort = "", profile_filter = "", abort = "", + next = "]]", + prev = "[[", } ---@type table diff --git a/lua/lazy/view/init.lua b/lua/lazy/view/init.lua index 6ff3c81..468ac8a 100644 --- a/lua/lazy/view/init.lua +++ b/lua/lazy/view/init.lua @@ -111,6 +111,28 @@ function M.create() end end) + self:on_key(ViewConfig.keys.next, function() + local cursor = vim.api.nvim_win_get_cursor(self.view.win) + for l = 1, #self.render.locations, 1 do + local loc = self.render.locations[l] + if loc.from > cursor[1] then + vim.api.nvim_win_set_cursor(self.view.win, { loc.from, 8 }) + return + end + end + end) + + self:on_key(ViewConfig.keys.prev, function() + local cursor = vim.api.nvim_win_get_cursor(self.view.win) + for l = #self.render.locations, 1, -1 do + local loc = self.render.locations[l] + if loc.from < cursor[1] then + vim.api.nvim_win_set_cursor(self.view.win, { loc.from, 8 }) + return + end + end + end) + self:on_key(ViewConfig.keys.profile_sort, function() if self.state.mode == "profile" then self.state.profile.sort_time_taken = not self.state.profile.sort_time_taken diff --git a/lua/lazy/view/render.lua b/lua/lazy/view/render.lua index c128147..e1eec6c 100644 --- a/lua/lazy/view/render.lua +++ b/lua/lazy/view/render.lua @@ -201,7 +201,15 @@ function M:help() :nl() self:append("or the plugin was just updated. Otherwise the plugin webpage will open."):nl():nl() - self:append("Use "):append("", "LazySpecial"):append(" on a commit or plugin to open the diff view"):nl() + self:append("Use "):append("", "LazySpecial"):append(" on a commit or plugin to open the diff view"):nl():nl() + self + :append("Use ") + :append("<]]>", "LazySpecial") + :append(" and ") + :append("<[[>", "LazySpecial") + :append(" to navigate between plugins") + :nl() + :nl() self:nl() self:append("Keyboard Shortcuts", "LazyH2"):nl() From 0507e19289539396313503f6eb6b02bbe8a5e483 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 29 Jun 2024 17:01:41 +0200 Subject: [PATCH 197/342] chore(main): release 11.9.0 (#1587) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 12 ++++++++++++ lua/lazy/core/config.lua | 2 +- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index a30099e..9918aa5 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "11.8.2" + ".": "11.9.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 3fe0915..d8fe701 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,17 @@ # Changelog +## [11.9.0](https://github.com/folke/lazy.nvim/compare/v11.8.2...v11.9.0) (2024-06-29) + + +### Features + +* **ui:** use [[ & ]] to navigate between plugins. Fixes [#1463](https://github.com/folke/lazy.nvim/issues/1463) ([5e3c112](https://github.com/folke/lazy.nvim/commit/5e3c112cb32c9cb6e8622aab4446358e039def7c)) + + +### Bug Fixes + +* **ui:** when closing details, jump to plugin header. Closes [#1338](https://github.com/folke/lazy.nvim/issues/1338) ([3772914](https://github.com/folke/lazy.nvim/commit/37729140751577e87318c137d90d0e6bb00ceff1)) + ## [11.8.2](https://github.com/folke/lazy.nvim/compare/v11.8.1...v11.8.2) (2024-06-29) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 4dc2419..9319999 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -228,7 +228,7 @@ function M.hererocks() return M.options.rocks.hererocks end -M.version = "11.8.2" -- x-release-please-version +M.version = "11.9.0" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From c7ed87f9ca03ea412134d6a6ea55b43232eb6b0c Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sun, 30 Jun 2024 08:48:03 +0200 Subject: [PATCH 198/342] perf: automatically suspend the scheduler when all threads are waiting (#1591) * perf: automatically suspend the scheduler when all threads are waiting * ci: fix ci * test: cleanup --- .github/workflows/ci.yml | 4 +- lua/lazy/async.lua | 85 ++++++++++++++++++++++------------- lua/lazy/manage/runner.lua | 39 +++++++++------- lua/lazy/manage/task/git.lua | 1 + tests/core/init_spec.lua | 1 - tests/core/plugin_spec.lua | 2 - tests/handlers/keys_spec.lua | 1 - tests/manage/process_spec.lua | 1 - tests/manage/task_spec.lua | 1 - 9 files changed, 81 insertions(+), 54 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 029531d..1a2ed40 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -28,6 +28,7 @@ jobs: ./tests/run docs: runs-on: ubuntu-latest + if: ${{ github.ref == 'refs/heads/main' && github.repository_owner == 'folke' }} needs: tests env: GH_TOKEN: ${{ github.token }} @@ -40,6 +41,7 @@ jobs: run: gh workflow run "Deploy to Github Pages" --ref docs community: runs-on: ubuntu-latest + if: ${{ github.ref == 'refs/heads/main' && github.repository_owner == 'folke' }} steps: - uses: actions/checkout@v4 - name: Install Neovim @@ -70,7 +72,7 @@ jobs: commit_author: "github-actions[bot] " release: name: release - if: ${{ github.ref == 'refs/heads/main' }} + if: ${{ github.ref == 'refs/heads/main' && github.repository_owner == 'folke' }} needs: - tests - docs diff --git a/lua/lazy/async.lua b/lua/lazy/async.lua index 58145a6..7848b7d 100644 --- a/lua/lazy/async.lua +++ b/lua/lazy/async.lua @@ -1,11 +1,14 @@ +local Util = require("lazy.core.util") + local M = {} ---@type Async[] -M._queue = {} -M._executor = assert(vim.loop.new_timer()) +M._active = {} +---@type Async[] +M._suspended = {} +M._executor = assert(vim.loop.new_check()) -M.TIMER = 10 -M.BUDGET = 100 +M.BUDGET = 10 ---@type table M._threads = setmetatable({}, { __mode = "k" }) @@ -42,11 +45,6 @@ function Async:init(fn) return M.add(self) end -function Async:restart() - assert(not self:running(), "Cannot restart a running async") - self:init(self._fn) -end - ---@param event AsyncEvent ---@param cb async fun(res:any, async:Async) function Async:on(event, cb) @@ -77,27 +75,41 @@ function Async:sleep(ms) end ---@async -function Async:suspend() +---@param yield? boolean +function Async:suspend(yield) self._suspended = true - if coroutine.running() == self._co then + if coroutine.running() == self._co and yield ~= false then coroutine.yield() end end function Async:resume() self._suspended = false + M._run() end -function Async:wait() +---@async +---@param yield? boolean +function Async:wake(yield) local async = M.running() + assert(async, "Not in an async context") + self:on("done", function() + async:resume() + end) + async:suspend(yield) +end + +---@async +function Async:wait() if coroutine.running() == self._co then error("Cannot wait on self") end - while self:running() do - if async then - coroutine.yield() - else + local async = M.running() + if async then + self:wake() + else + while self:running() do vim.wait(10) end end @@ -121,35 +133,44 @@ function Async:step() end function M.step() - local budget = M.BUDGET * 1e6 local start = vim.uv.hrtime() - local count = #M._queue - local i = 0 - while #M._queue > 0 and vim.uv.hrtime() - start < budget do - ---@type Async - local state = table.remove(M._queue, 1) - if state:step() then - table.insert(M._queue, state) - end - i = i + 1 - if i >= count then + for _ = 1, #M._active do + if vim.uv.hrtime() - start > M.BUDGET * 1e6 then break end + local state = table.remove(M._active, 1) + if state:step() then + if state._suspended then + table.insert(M._suspended, state) + else + table.insert(M._active, state) + end + end end - if #M._queue == 0 then + for _ = 1, #M._suspended do + local state = table.remove(M._suspended, 1) + table.insert(state._suspended and M._suspended or M._active, state) + end + + -- print("step", #M._active, #M._suspended) + if #M._active == 0 then return M._executor:stop() end end ---@param async Async function M.add(async) - table.insert(M._queue, async) - if not M._executor:is_active() then - M._executor:start(1, M.TIMER, vim.schedule_wrap(M.step)) - end + table.insert(M._active, async) + M._run() return async end +function M._run() + if not M._executor:is_active() then + M._executor:start(vim.schedule_wrap(M.step)) + end +end + function M.running() local co = coroutine.running() if co then diff --git a/lua/lazy/manage/runner.lua b/lua/lazy/manage/runner.lua index c5f5c75..d551ce5 100644 --- a/lua/lazy/manage/runner.lua +++ b/lua/lazy/manage/runner.lua @@ -78,6 +78,7 @@ function Runner:_start() ---@type number? local wait_step = nil + ---@async ---@param resume? boolean local function continue(resume) active = 0 @@ -114,22 +115,30 @@ function Runner:_start() end local s = state[name] local plugin = self:plugin(name) - if s.step == #self._pipeline then - -- done - s.task = nil - plugin._.working = false - elseif s.step < #self._pipeline then - -- next - s.step = s.step + 1 - local step = self._pipeline[s.step] - if step.task == "wait" then + while s.step <= #self._pipeline do + if s.step == #self._pipeline then + -- done + s.task = nil plugin._.working = false - waiting = waiting + 1 - wait_step = s.step - else - s.task = self:queue(plugin, step) - plugin._.working = true - active = active + 1 + break + elseif s.step < #self._pipeline then + -- next + s.step = s.step + 1 + local step = self._pipeline[s.step] + if step.task == "wait" then + plugin._.working = false + waiting = waiting + 1 + wait_step = s.step + break + else + s.task = self:queue(plugin, step) + plugin._.working = true + if s.task then + active = active + 1 + s.task:wake(false) + break + end + end end end end diff --git a/lua/lazy/manage/task/git.lua b/lua/lazy/manage/task/git.lua index 4bd7134..774df16 100644 --- a/lua/lazy/manage/task/git.lua +++ b/lua/lazy/manage/task/git.lua @@ -21,6 +21,7 @@ M.log = { ---@async ---@param opts {args?: string[], updated?:boolean, check?:boolean} run = function(self, opts) + -- self:spawn({ "sleep", "5" }) local args = { "log", "--pretty=format:%h %s (%cr)", diff --git a/tests/core/init_spec.lua b/tests/core/init_spec.lua index 4970871..356f8e4 100644 --- a/tests/core/init_spec.lua +++ b/tests/core/init_spec.lua @@ -1,4 +1,3 @@ ----@module 'luassert' local Util = require("lazy.core.util") describe("init", function() diff --git a/tests/core/plugin_spec.lua b/tests/core/plugin_spec.lua index d810339..166dc2a 100644 --- a/tests/core/plugin_spec.lua +++ b/tests/core/plugin_spec.lua @@ -1,5 +1,3 @@ ----@module 'luassert' - local Config = require("lazy.core.config") local Handler = require("lazy.core.handler") local Plugin = require("lazy.core.plugin") diff --git a/tests/handlers/keys_spec.lua b/tests/handlers/keys_spec.lua index d6a9df4..6254db8 100644 --- a/tests/handlers/keys_spec.lua +++ b/tests/handlers/keys_spec.lua @@ -1,4 +1,3 @@ ----@module 'luassert' local Keys = require("lazy.core.handler.keys") describe("keys", function() diff --git a/tests/manage/process_spec.lua b/tests/manage/process_spec.lua index 0fbbe89..03b653e 100644 --- a/tests/manage/process_spec.lua +++ b/tests/manage/process_spec.lua @@ -1,4 +1,3 @@ ----@module 'luassert' local Async = require("lazy.async") local Process = require("lazy.manage.process") diff --git a/tests/manage/task_spec.lua b/tests/manage/task_spec.lua index e161fa2..fdd9c35 100644 --- a/tests/manage/task_spec.lua +++ b/tests/manage/task_spec.lua @@ -1,4 +1,3 @@ ----@module 'luassert' --# selene:allow(incorrect_standard_library_use) local Task = require("lazy.manage.task") From 2f4ac035bcc66292250de7134d73007b147f64e8 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sun, 30 Jun 2024 09:13:04 +0200 Subject: [PATCH 199/342] perf: suspend when tasks are active --- lua/lazy/async.lua | 19 ++++++++++++++++++- lua/lazy/manage/runner.lua | 4 +++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/lua/lazy/async.lua b/lua/lazy/async.lua index 7848b7d..5cbdb1b 100644 --- a/lua/lazy/async.lua +++ b/lua/lazy/async.lua @@ -152,12 +152,29 @@ function M.step() table.insert(state._suspended and M._suspended or M._active, state) end - -- print("step", #M._active, #M._suspended) + -- M.debug() if #M._active == 0 then return M._executor:stop() end end +function M.debug() + local lines = { + "- active: " .. #M._active, + "- suspended: " .. #M._suspended, + } + for _, async in ipairs(M._active) do + local info = debug.getinfo(async._fn) + local file = vim.fn.fnamemodify(info.short_src:sub(1), ":~:.") + table.insert(lines, ("%s:%d"):format(file, info.linedefined)) + if #lines > 10 then + break + end + end + local msg = table.concat(lines, "\n") + M._notif = vim.notify(msg, nil, { replace = M._notif }) +end + ---@param async Async function M.add(async) table.insert(M._active, async) diff --git a/lua/lazy/manage/runner.lua b/lua/lazy/manage/runner.lua index d551ce5..81dcde0 100644 --- a/lua/lazy/manage/runner.lua +++ b/lua/lazy/manage/runner.lua @@ -153,7 +153,9 @@ function Runner:_start() end continue(true) end - coroutine.yield() + if active > 0 then + self._running:suspend() + end end end From c882227f1fdc4580d14212df8f814a0772951e3d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 30 Jun 2024 12:47:41 +0200 Subject: [PATCH 200/342] chore(main): release 11.9.1 (#1592) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 8 ++++++++ lua/lazy/core/config.lua | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index 9918aa5..67fa05d 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "11.9.0" + ".": "11.9.1" } diff --git a/CHANGELOG.md b/CHANGELOG.md index d8fe701..01bbc13 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## [11.9.1](https://github.com/folke/lazy.nvim/compare/v11.9.0...v11.9.1) (2024-06-30) + + +### Performance Improvements + +* automatically suspend the scheduler when all threads are waiting ([#1591](https://github.com/folke/lazy.nvim/issues/1591)) ([c7ed87f](https://github.com/folke/lazy.nvim/commit/c7ed87f9ca03ea412134d6a6ea55b43232eb6b0c)) +* suspend when tasks are active ([2f4ac03](https://github.com/folke/lazy.nvim/commit/2f4ac035bcc66292250de7134d73007b147f64e8)) + ## [11.9.0](https://github.com/folke/lazy.nvim/compare/v11.8.2...v11.9.0) (2024-06-29) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 9319999..c51f680 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -228,7 +228,7 @@ function M.hererocks() return M.options.rocks.hererocks end -M.version = "11.9.0" -- x-release-please-version +M.version = "11.9.1" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 1fad61712bd3937dda925775a7736b8efbcbf1a7 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sun, 30 Jun 2024 13:35:11 +0200 Subject: [PATCH 201/342] fix(async): make asyncs abortable --- lua/lazy/async.lua | 21 +++++++++++++++++---- lua/lazy/core/util.lua | 4 ++++ lua/lazy/manage/process.lua | 2 +- lua/lazy/view/float.lua | 3 ++- lua/lazy/view/init.lua | 1 + tests/manage/runner_spec.lua | 3 ++- tests/manage/task_spec.lua | 3 ++- 7 files changed, 29 insertions(+), 8 deletions(-) diff --git a/lua/lazy/async.lua b/lua/lazy/async.lua index 5cbdb1b..7a865b3 100644 --- a/lua/lazy/async.lua +++ b/lua/lazy/async.lua @@ -79,7 +79,7 @@ end function Async:suspend(yield) self._suspended = true if coroutine.running() == self._co and yield ~= false then - coroutine.yield() + M.yield() end end @@ -132,12 +132,25 @@ function Async:step() return self:running() end +function M.abort() + for _, async in ipairs(M._active) do + coroutine.resume(async._co, "abort") + end +end + +function M.yield() + if coroutine.yield() == "abort" then + error("aborted", 2) + end +end + function M.step() local start = vim.uv.hrtime() for _ = 1, #M._active do - if vim.uv.hrtime() - start > M.BUDGET * 1e6 then + if Util.exiting() or vim.uv.hrtime() - start > M.BUDGET * 1e6 then break end + local state = table.remove(M._active, 1) if state:step() then if state._suspended then @@ -153,7 +166,7 @@ function M.step() end -- M.debug() - if #M._active == 0 then + if #M._active == 0 or Util.exiting() then return M._executor:stop() end end @@ -183,7 +196,7 @@ function M.add(async) end function M._run() - if not M._executor:is_active() then + if not Util.exiting() and not M._executor:is_active() then M._executor:start(vim.schedule_wrap(M.step)) end end diff --git a/lua/lazy/core/util.lua b/lua/lazy/core/util.lua index f42cf6a..34ca1d6 100644 --- a/lua/lazy/core/util.lua +++ b/lua/lazy/core/util.lua @@ -29,6 +29,10 @@ function M.track(data, time) end end +function M.exiting() + return vim.v.exiting ~= vim.NIL +end + ---@generic T ---@param list T[] ---@param fn fun(v: T):boolean? diff --git a/lua/lazy/manage/process.lua b/lua/lazy/manage/process.lua index c4a4baf..0a67a14 100644 --- a/lua/lazy/manage/process.lua +++ b/lua/lazy/manage/process.lua @@ -93,7 +93,7 @@ function Process:_run() end) self:suspend() while not (self.handle:is_closing() and stdout:is_closing() and stderr:is_closing()) do - coroutine.yield() + Async.yield() end else self.data = "Failed to spawn process " .. self.cmd .. " " .. vim.inspect(self.opts) diff --git a/lua/lazy/view/float.lua b/lua/lazy/view/float.lua index d57b384..3a59069 100644 --- a/lua/lazy/view/float.lua +++ b/lua/lazy/view/float.lua @@ -252,7 +252,7 @@ end ---@param fn fun(self?) ---@param desc? string ---@param mode? string[] -function M:on_key(key, fn, desc,mode) +function M:on_key(key, fn, desc, mode) vim.keymap.set(mode or "n", key, function() fn(self) end, { @@ -295,6 +295,7 @@ function M:close(opts) vim.diagnostic.reset(Config.ns, buf) vim.api.nvim_buf_delete(buf, { force = true }) end + vim.cmd.redraw() end) end diff --git a/lua/lazy/view/init.lua b/lua/lazy/view/init.lua index 468ac8a..313d3ad 100644 --- a/lua/lazy/view/init.lua +++ b/lua/lazy/view/init.lua @@ -83,6 +83,7 @@ function M.create() vim.keymap.set("n", ViewConfig.keys.abort, function() require("lazy.manage.process").abort() + require("lazy.async").abort() return ViewConfig.keys.abort end, { silent = true, buffer = self.buf, expr = true }) diff --git a/tests/manage/runner_spec.lua b/tests/manage/runner_spec.lua index 925aaf1..a2507c9 100644 --- a/tests/manage/runner_spec.lua +++ b/tests/manage/runner_spec.lua @@ -1,3 +1,4 @@ +local Async = require("lazy.async") local Runner = require("lazy.manage.runner") describe("runner", function() @@ -33,7 +34,7 @@ describe("runner", function() ---@async ---@param task LazyTask run = function(task) - coroutine.yield() + Async.yield() table.insert(runs, { plugin = task.plugin.name, task = task.name }) end, } diff --git a/tests/manage/task_spec.lua b/tests/manage/task_spec.lua index fdd9c35..f41eb80 100644 --- a/tests/manage/task_spec.lua +++ b/tests/manage/task_spec.lua @@ -1,4 +1,5 @@ --# selene:allow(incorrect_standard_library_use) +local Async = require("lazy.async") local Task = require("lazy.manage.task") describe("task", function() @@ -42,7 +43,7 @@ describe("task", function() local running = true ---@async local task = Task.new(plugin, "test", function() - coroutine.yield() + Async.yield() running = false end, opts) assert(task:running()) From a9d7ade203b3f3ee3058c082c62afdf8e4bcb416 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Mon, 1 Jul 2024 07:07:49 +0200 Subject: [PATCH 202/342] perf(plugin): minor optim to resolve imports a bit faster --- lua/lazy/core/plugin.lua | 5 ++++- lua/lazy/core/util.lua | 16 +++++++++------- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/lua/lazy/core/plugin.lua b/lua/lazy/core/plugin.lua index 26b3f6e..f9bd04f 100644 --- a/lua/lazy/core/plugin.lua +++ b/lua/lazy/core/plugin.lua @@ -150,8 +150,11 @@ function Spec:import(spec) local modspecs = {} if type(import) == "string" then - Util.lsmod(import, function(modname) + Util.lsmod(import, function(modname, modpath) modspecs[#modspecs + 1] = modname + package.preload[modname] = function() + return loadfile(modpath)() + end end) table.sort(modspecs) else diff --git a/lua/lazy/core/util.lua b/lua/lazy/core/util.lua index 34ca1d6..185527b 100644 --- a/lua/lazy/core/util.lua +++ b/lua/lazy/core/util.lua @@ -287,7 +287,7 @@ function M.find_root(modname) local ret = require("lazy.core.cache").find(modname, { rtp = true, paths = paths, - patterns = { "", ".lua" }, + patterns = { ".lua", "" }, })[1] if not ret and cached then @@ -295,25 +295,27 @@ function M.find_root(modname) ret = require("lazy.core.cache").find(modname, { rtp = false, paths = paths, - patterns = { "", ".lua" }, + patterns = { ".lua", "" }, })[1] end if ret then - local root = ret.modpath:gsub("/init%.lua$", ""):gsub("%.lua$", "") - return root + return ret.modpath:gsub("%.lua$", ""), ret.modpath end end ---@param modname string ---@param fn fun(modname:string, modpath:string) function M.lsmod(modname, fn) - local root = M.find_root(modname) + local root, match = M.find_root(modname) if not root then return end - if vim.uv.fs_stat(root .. ".lua") then - fn(modname, root .. ".lua") + if match:sub(-4) == ".lua" then + fn(modname, match) + if not vim.uv.fs_stat(root) then + return + end end M.ls(root, function(path, name, type) From d0921f5b9b3d2c5e09618da55a018228edcc4d16 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Tue, 2 Jul 2024 13:42:53 +0200 Subject: [PATCH 203/342] fix(health): check for errors when executing commands. Closes #1599 --- lua/lazy/health.lua | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/lua/lazy/health.lua b/lua/lazy/health.lua index b3bf6f2..9e2a869 100644 --- a/lua/lazy/health.lua +++ b/lua/lazy/health.lua @@ -37,13 +37,17 @@ function M.have(cmd, opts) for _, c in ipairs(cmd) do if vim.fn.executable(c) == 1 then local version = vim.fn.system(c .. " " .. opts.version) or "" - version = vim.trim(vim.split(version, "\n")[1]) - version = version:gsub("^%s*" .. vim.pesc(c) .. "%s*", "") - if opts.version_pattern and not version:find(opts.version_pattern, 1, true) then - opts.warn(("`%s` version `%s` needed, but found `%s`"):format(c, opts.version_pattern, version)) + if vim.v.shell_error ~= 0 then + opts.error(("failed to get version of {%s}\n%s"):format(c, version)) else - found = ("{%s} `%s`"):format(c, version) - break + version = vim.trim(vim.split(version, "\n")[1]) + version = version:gsub("^%s*" .. vim.pesc(c) .. "%s*", "") + if opts.version_pattern and not version:find(opts.version_pattern, 1, true) then + opts.warn(("`%s` version `%s` needed, but found `%s`"):format(c, opts.version_pattern, version)) + else + found = ("{%s} `%s`"):format(c, version) + break + end end end end From 36c85945ee4ba7553132bfc07280817c8f578e18 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 3 Jul 2024 08:20:37 +0000 Subject: [PATCH 204/342] chore(build): auto-generate docs --- doc/lazy.nvim.txt | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index eae1268..ccf4829 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -157,7 +157,16 @@ STRUCTURED SETUP *lazy.nvim-🛠️-installation-structured-setup* local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" if not (vim.uv or vim.loop).fs_stat(lazypath) then local lazyrepo = "https://github.com/folke/lazy.nvim.git" - vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) + local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) + if vim.v.shell_error ~= 0 then + vim.api.nvim_echo({ + { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, + { out, "WarningMsg" }, + { "\nPress any key to exit..." }, + }, true, {}) + vim.fn.getchar() + os.exit(1) + end end vim.opt.rtp:prepend(lazypath) @@ -196,7 +205,16 @@ SINGLE FILE SETUP *lazy.nvim-🛠️-installation-single-file-setup* local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" if not (vim.uv or vim.loop).fs_stat(lazypath) then local lazyrepo = "https://github.com/folke/lazy.nvim.git" - vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) + local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) + if vim.v.shell_error ~= 0 then + vim.api.nvim_echo({ + { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, + { out, "WarningMsg" }, + { "\nPress any key to exit..." }, + }, true, {}) + vim.fn.getchar() + os.exit(1) + end end vim.opt.rtp:prepend(lazypath) From cea5920abb202753004440f94ec39bcf2927e02e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 3 Jul 2024 12:11:21 +0200 Subject: [PATCH 205/342] chore(main): release 11.9.2 (#1595) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 13 +++++++++++++ lua/lazy/core/config.lua | 2 +- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index 67fa05d..cd35eb4 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "11.9.1" + ".": "11.9.2" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 01bbc13..84044cd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [11.9.2](https://github.com/folke/lazy.nvim/compare/v11.9.1...v11.9.2) (2024-07-02) + + +### Bug Fixes + +* **async:** make asyncs abortable ([1fad617](https://github.com/folke/lazy.nvim/commit/1fad61712bd3937dda925775a7736b8efbcbf1a7)) +* **health:** check for errors when executing commands. Closes [#1599](https://github.com/folke/lazy.nvim/issues/1599) ([d0921f5](https://github.com/folke/lazy.nvim/commit/d0921f5b9b3d2c5e09618da55a018228edcc4d16)) + + +### Performance Improvements + +* **plugin:** minor optim to resolve imports a bit faster ([a9d7ade](https://github.com/folke/lazy.nvim/commit/a9d7ade203b3f3ee3058c082c62afdf8e4bcb416)) + ## [11.9.1](https://github.com/folke/lazy.nvim/compare/v11.9.0...v11.9.1) (2024-06-30) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index c51f680..b7f5c14 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -228,7 +228,7 @@ function M.hererocks() return M.options.rocks.hererocks end -M.version = "11.9.1" -- x-release-please-version +M.version = "11.9.2" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 0f2786bcc91347188627534471ee75c3f6f16b2d Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Thu, 4 Jul 2024 15:17:02 +0200 Subject: [PATCH 206/342] feat(profiling): merge VeryLazy stats and show startuptime in profile view --- lua/lazy/core/handler/event.lua | 8 ++++++-- lua/lazy/core/util.lua | 2 ++ lua/lazy/stats.lua | 1 + 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/lua/lazy/core/handler/event.lua b/lua/lazy/core/handler/event.lua index aff4572..a34e0c5 100644 --- a/lua/lazy/core/handler/event.lua +++ b/lua/lazy/core/handler/event.lua @@ -75,7 +75,9 @@ function M:_add(event) end -- HACK: work-around for https://github.com/neovim/neovim/issues/25526 done = true - Util.track({ [self.type] = event.id }) + if event.id ~= "VeryLazy" then + Util.track({ [self.type] = event.id }) + end local state = M.get_state(ev.event, ev.buf, ev.data) @@ -86,7 +88,9 @@ function M:_add(event) for _, s in ipairs(state) do M.trigger(s) end - Util.track() + if event.id ~= "VeryLazy" then + Util.track() + end end, }) end diff --git a/lua/lazy/core/util.lua b/lua/lazy/core/util.lua index 185527b..6d7c3b8 100644 --- a/lua/lazy/core/util.lua +++ b/lua/lazy/core/util.lua @@ -171,7 +171,9 @@ function M.very_lazy() return end vim.g.did_very_lazy = true + M.track({ event = "VeryLazy" }) vim.api.nvim_exec_autocmds("User", { pattern = "VeryLazy", modeline = false }) + M.track() end) end diff --git a/lua/lazy/stats.lua b/lua/lazy/stats.lua index 36865db..015a2be 100644 --- a/lua/lazy/stats.lua +++ b/lua/lazy/stats.lua @@ -21,6 +21,7 @@ M.C = nil function M.on_ui_enter() M._stats.startuptime = M.track("UIEnter") + require("lazy.core.util").track({ start = "startuptime" }, M._stats.startuptime * 1e6) vim.api.nvim_exec_autocmds("User", { pattern = "LazyVimStarted", modeline = false }) end From 6fdd904ee45b66d933c5d2f72bcec337e13744f8 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Thu, 4 Jul 2024 15:19:41 +0200 Subject: [PATCH 207/342] fix(config): determine headless only during startup. Fixes #1608 --- lua/lazy/core/config.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index b7f5c14..f77a29d 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -253,8 +253,9 @@ M.mapleader = nil ---@type string M.maplocalleader = nil +local headless = #vim.api.nvim_list_uis() == 0 function M.headless() - return #vim.api.nvim_list_uis() == 0 + return headless end ---@param opts? LazyConfig From 923e1aa7a49d945afa4c03da4f8ff052cd6d14a6 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Thu, 4 Jul 2024 16:16:39 +0200 Subject: [PATCH 208/342] fix(plugin): local spec name --- lua/lazy/core/plugin.lua | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/lua/lazy/core/plugin.lua b/lua/lazy/core/plugin.lua index f9bd04f..d121fdf 100644 --- a/lua/lazy/core/plugin.lua +++ b/lua/lazy/core/plugin.lua @@ -275,15 +275,6 @@ function M.update_rocks_state() end end ----@param path string -function M.local_spec(path) - local file = vim.secure.read(path) - if file then - return loadstring(file)() - end - return {} -end - ---@return LazySpecImport? function M.find_local_spec() if not Config.options.local_spec then @@ -298,7 +289,7 @@ function M.find_local_spec() import = function() local data = vim.secure.read(file) if data then - return loadstring(data)() + return loadstring(data, M.LOCAL_SPEC)() end return {} end, From a17ad27435eb710e5e942b60a717d2a6af98c38e Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Thu, 4 Jul 2024 17:53:45 +0200 Subject: [PATCH 209/342] build: better minit --- bootstrap.lua | 19 ++++------ lua/lazy/minit.lua | 65 +++++++++++++++++++++++++++------ tests/{busted.lua => minit.lua} | 7 ++-- tests/run | 2 +- 4 files changed, 67 insertions(+), 26 deletions(-) rename tests/{busted.lua => minit.lua} (59%) diff --git a/bootstrap.lua b/bootstrap.lua index e39db4d..dfafd59 100644 --- a/bootstrap.lua +++ b/bootstrap.lua @@ -13,6 +13,10 @@ function M.setup() end end + if vim.env.LAZY_PATH and not vim.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 (vim.uv or vim.loop).fs_stat(lazypath) then vim.api.nvim_echo({ @@ -26,19 +30,12 @@ function M.setup() pcall(vim.fn.system, { "git", "clone", "--filter=blob:none", "--branch=stable", 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" }, + { "Failed to clone lazy.nvim\n", "ErrorMsg" }, + { vim.trim(out or ""), "WarningMsg" }, + { "\nPress any key to exit...", "MoreMsg" }, }, true, {}) - vim.fn.getchar() - vim.cmd([[quit]]) + os.exit(1) end end vim.opt.rtp:prepend(lazypath) diff --git a/lua/lazy/minit.lua b/lua/lazy/minit.lua index 7da2b2a..3874a18 100644 --- a/lua/lazy/minit.lua +++ b/lua/lazy/minit.lua @@ -20,11 +20,27 @@ function M.extend(defaults, opts) return vim.tbl_deep_extend("force", defaults, opts, { spec = spec }) end +---@param opts LazyConfig function M.setup(opts) opts = M.extend({ change_detection = { enabled = false }, }, opts) + local args = {} + local is_busted = false + for _, a in ipairs(_G.arg) do + if a == "--busted" then + is_busted = true + else + table.insert(args, a) + end + end + _G.arg = args + + if is_busted then + opts = M.busted.setup(opts) + end + -- set stdpaths to use .tests if vim.env.LAZY_STDPATH then local root = vim.fn.fnamemodify(vim.env.LAZY_STDPATH, ":p") @@ -48,6 +64,10 @@ function M.setup(opts) vim.cmd.close() end end + + if is_busted then + M.busted.run() + end end function M.repro(opts) @@ -68,18 +88,9 @@ function M.repro(opts) M.setup(opts) end ----@param opts LazyConfig -function M.busted(opts) - opts = M.extend({ - spec = { - "lunarmodules/busted", - { dir = vim.fn.fnamemodify(".", ":p") }, - }, - rocks = { hererocks = true }, - }, opts) - - M.setup(opts) +M.busted = {} +function M.busted.run() local Config = require("lazy.core.config") -- disable termnial output for the tests Config.options.headless = {} @@ -93,4 +104,36 @@ function M.busted(opts) }) or os.exit(1) end +---@param opts LazyConfig +function M.busted.setup(opts) + local args = table.concat(_G.arg, " ") + local json = args:find("--output[ =]json") + + return M.extend({ + spec = { + "lunarmodules/busted", + { dir = vim.uv.cwd() }, + }, + headless = { + process = not json, + log = not json, + task = not json, + }, + rocks = { hererocks = true }, + }, opts) +end + +---@param opts LazyConfig +function M.busted.init(opts) + opts = M.busted.setup(opts) + M.setup(opts) + M.busted.run() +end + +setmetatable(M.busted, { + __call = function(_, opts) + M.busted.init(opts) + end, +}) + return M diff --git a/tests/busted.lua b/tests/minit.lua similarity index 59% rename from tests/busted.lua rename to tests/minit.lua index 7292d3e..e62be39 100755 --- a/tests/busted.lua +++ b/tests/minit.lua @@ -5,7 +5,8 @@ vim.env.LAZY_STDPATH = ".tests" vim.opt.rtp:prepend(".") -- Setup lazy.nvim -require("lazy.minit").busted({ - spec = {}, - stdpath = ".tests", +require("lazy.minit").setup({ + spec = { + { dir = vim.uv.cwd() }, + }, }) diff --git a/tests/run b/tests/run index 7872f5a..f1399de 100755 --- a/tests/run +++ b/tests/run @@ -1,3 +1,3 @@ #!/bin/sh -nvim -l tests/busted.lua tests -o utfTerminal "$@" +nvim -l tests/minit.lua --busted tests -o utfTerminal "$@" From 1225f1dc60342d82b9de031406c66516c3dfc564 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Thu, 4 Jul 2024 18:00:59 +0200 Subject: [PATCH 210/342] ci: dont enable local specs for minit --- lua/lazy/minit.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/lua/lazy/minit.lua b/lua/lazy/minit.lua index 3874a18..838ac36 100644 --- a/lua/lazy/minit.lua +++ b/lua/lazy/minit.lua @@ -23,6 +23,7 @@ end ---@param opts LazyConfig function M.setup(opts) opts = M.extend({ + local_spec = false, change_detection = { enabled = false }, }, opts) From 851b12034d1eb77acda84537805740923af3fab4 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Thu, 4 Jul 2024 18:05:36 +0200 Subject: [PATCH 211/342] ci: use main for bootstrap --- bootstrap.lua | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/bootstrap.lua b/bootstrap.lua index dfafd59..16d9f1d 100644 --- a/bootstrap.lua +++ b/bootstrap.lua @@ -26,8 +26,13 @@ function M.setup() }, }, true, {}) local lazyrepo = "https://github.com/folke/lazy.nvim.git" - local ok, out = - pcall(vim.fn.system, { "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) + 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" }, From 407e65c7924989c1efed6bbc89e6287e2d140f02 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 4 Jul 2024 21:01:57 +0200 Subject: [PATCH 212/342] chore(main): release 11.10.0 (#1609) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 13 +++++++++++++ lua/lazy/core/config.lua | 2 +- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index cd35eb4..d58642f 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "11.9.2" + ".": "11.10.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 84044cd..a6ad34e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [11.10.0](https://github.com/folke/lazy.nvim/compare/v11.9.2...v11.10.0) (2024-07-04) + + +### Features + +* **profiling:** merge VeryLazy stats and show startuptime in profile view ([0f2786b](https://github.com/folke/lazy.nvim/commit/0f2786bcc91347188627534471ee75c3f6f16b2d)) + + +### Bug Fixes + +* **config:** determine headless only during startup. Fixes [#1608](https://github.com/folke/lazy.nvim/issues/1608) ([6fdd904](https://github.com/folke/lazy.nvim/commit/6fdd904ee45b66d933c5d2f72bcec337e13744f8)) +* **plugin:** local spec name ([923e1aa](https://github.com/folke/lazy.nvim/commit/923e1aa7a49d945afa4c03da4f8ff052cd6d14a6)) + ## [11.9.2](https://github.com/folke/lazy.nvim/compare/v11.9.1...v11.9.2) (2024-07-02) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index f77a29d..28e942c 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -228,7 +228,7 @@ function M.hererocks() return M.options.rocks.hererocks end -M.version = "11.9.2" -- x-release-please-version +M.version = "11.10.0" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From baac5517770abd6eee63d11cf4791ef5bf5702e8 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Fri, 5 Jul 2024 09:01:01 +0200 Subject: [PATCH 213/342] fix(lockfile): keep cond=false and enabed=false in lockfile. Fixes #1535. Fixes #1606 --- lua/lazy/manage/lock.lua | 55 ++++++++++++++++++++-------------------- 1 file changed, 28 insertions(+), 27 deletions(-) diff --git a/lua/lazy/manage/lock.lua b/lua/lazy/manage/lock.lua index c7ceb4e..a1b4c74 100644 --- a/lua/lazy/manage/lock.lua +++ b/lua/lazy/manage/lock.lua @@ -3,43 +3,43 @@ local Git = require("lazy.manage.git") local M = {} ----@type table +---@alias LazyLockfile table +---@type LazyLockfile M.lock = {} M._loaded = false function M.update() + M.load() vim.fn.mkdir(vim.fn.fnamemodify(Config.options.lockfile, ":p:h"), "p") local f = assert(io.open(Config.options.lockfile, "wb")) f:write("{\n") - M.lock = {} - ---@param plugin LazyPlugin - local plugins = vim.tbl_filter(function(plugin) - return not plugin._.is_local and plugin._.installed - end, Config.plugins) + -- keep disabled and cond plugins + for name in pairs(M.lock) do + if not (Config.spec.disabled[name] or Config.spec.ignore_installed[name]) then + M.lock[name] = nil + end + end + + for _, plugin in pairs(Config.plugins) do + if not plugin._.is_local and plugin._.installed then + local info = assert(Git.info(plugin.dir)) + M.lock[plugin.name] = { + branch = info.branch or assert(Git.get_branch(plugin)), + commit = assert(info.commit, "commit is nil"), + } + end + end - ---@param plugin LazyPlugin ---@type string[] - local names = vim.tbl_map(function(plugin) - return plugin.name - end, plugins) + local names = vim.tbl_keys(M.lock) table.sort(names) for n, name in ipairs(names) do - local plugin = Config.plugins[name] - if not plugin._.is_local and plugin._.installed then - local info = assert(Git.info(plugin.dir)) - if not info.branch then - info.branch = assert(Git.get_branch(plugin)) - end - info.commit = info.commit - -- f:write(([[ [%q] = { branch = %q, commit = %q },]]):format(name, info.branch, info.commit) .. "\n") - f:write(([[ %q: { "branch": %q, "commit": %q }]]):format(name, info.branch, info.commit)) - if n ~= #names then - f:write(",\n") - end - ---@diagnostic disable-next-line: assign-type-mismatch - M.lock[plugin.name] = info + local info = M.lock[name] + f:write(([[ %q: { "branch": %q, "commit": %q }]]):format(name, info.branch, info.commit)) + if n ~= #names then + f:write(",\n") end end f:write("\n}") @@ -47,6 +47,9 @@ function M.update() end function M.load() + if M._loaded then + return + end M.lock = {} M._loaded = true local f = io.open(Config.options.lockfile, "r") @@ -64,9 +67,7 @@ end ---@param plugin LazyPlugin ---@return {commit:string, branch:string} function M.get(plugin) - if not M._loaded then - M.load() - end + M.load() return M.lock[plugin.name] end From a1d23e80badccc407d6b289d1c366ff2888812b6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 5 Jul 2024 07:31:34 +0000 Subject: [PATCH 214/342] chore(build): auto-generate docs --- doc/lazy.nvim.txt | 35 ++++++++++++++++++++++------------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index ccf4829..73bd0ae 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -291,23 +291,25 @@ SPEC LOADING *lazy.nvim-🔌-plugin-spec-spec-loading* SPEC SETUP *lazy.nvim-🔌-plugin-spec-spec-setup* - --------------------------------------------------------------------------------------------------- + -------------------------------------------------------------------------------------------------- Property Type Description - ---------- ----------------------------- ---------------------------------------------------------- - init fun(LazyPlugin) init functions are always executed during startup + ---------- ----------------------------- --------------------------------------------------------- + init fun(LazyPlugin) init functions are always executed during. Mostly useful + for setting vim.g.* configuration used by Vim plugins + startup - opts table or opts should be a table (will be merged with parent specs), - fun(LazyPlugin, opts:table) return a table (replaces parent specs) or should change a - table. The table will be passed to the Plugin.config() - function. Setting this value will imply Plugin.config() + opts table or opts should be a table (will be merged with parent + fun(LazyPlugin, opts:table) specs), return a table (replaces parent specs) or should + change a table. The table will be passed to the + Plugin.config() function. Setting this value will imply + Plugin.config() config fun(LazyPlugin, opts:table) config is executed when the plugin loads. The default or true implementation will automatically run - require(MAIN).setup(opts) if opts or config = true is set. - Lazy uses several heuristics to determine the plugin’s - MAIN module automatically based on the plugin’s name. See - also opts. To use the default implementation without opts - set config to true. + require(MAIN).setup(opts) if opts or config = true is + set. Lazy uses several heuristics to determine the + plugin’s MAIN module automatically based on the plugin’s + name. (opts is the recommended way to configure plugins). main string? You can specify the main module to use for config() and opts(), in case it can not be determined automatically. @@ -316,7 +318,12 @@ SPEC SETUP *lazy.nvim-🔌-plugin-spec-spec-setup* build fun(LazyPlugin) or string or build is executed when a plugin is installed or updated. false or a list of build See Building for more information. commands - --------------------------------------------------------------------------------------------------- + -------------------------------------------------------------------------------------------------- +Always use `opts` instead of `config` when possible. `config` is almost never +needed. + + + SPEC LAZY LOADING *lazy.nvim-🔌-plugin-spec-spec-lazy-loading* @@ -1241,6 +1248,8 @@ BEST PRACTICES *lazy.nvim-🔥-developers-best-practices* >lua { "nvim-lua/plenary.nvim", lazy = true } < +- Always use `opts` instead of `config` when possible. `config` is almost never + needed. - Only use `dependencies` if a plugin needs the dep to be installed **AND** loaded. Lua plugins/libraries are automatically loaded when they are `require()`d, so they don’t need to be in `dependencies`. From 53661bb38c2b9b9eab84355b549c07b94f334d01 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Fri, 5 Jul 2024 16:00:54 +0200 Subject: [PATCH 215/342] ci: update --- .github/ISSUE_TEMPLATE/bug_report.yml | 1 + .github/dependabot.yml | 9 +-- .github/workflows/ci.yml | 99 +++------------------------ .github/workflows/community.yml | 30 ++++++++ .github/workflows/docs.yml | 20 ++++++ .github/workflows/labeler.yml | 8 +++ .github/workflows/pr.yml | 18 +++++ .github/workflows/stale.yml | 10 +++ .gitignore | 13 ++-- tests/run => scripts/test | 2 +- 10 files changed, 105 insertions(+), 105 deletions(-) create mode 100644 .github/workflows/community.yml create mode 100644 .github/workflows/docs.yml create mode 100644 .github/workflows/labeler.yml create mode 100644 .github/workflows/pr.yml create mode 100644 .github/workflows/stale.yml rename tests/run => scripts/test (78%) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 4a77601..7f1e1ed 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -75,6 +75,7 @@ body: -- install plugins local plugins = { "folke/tokyonight.nvim", + -- add any other plugins here } require("lazy").setup(plugins, { diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 0d08e26..5ace460 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,11 +1,6 @@ -# To get started with Dependabot version updates, you'll need to specify which -# package ecosystems to update and where the package manifests are located. -# Please see the documentation for all configuration options: -# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file - version: 2 updates: - - package-ecosystem: "github-actions" # See documentation for possible values - directory: "/" # Location of package manifests + - package-ecosystem: "github-actions" + directory: "/" schedule: interval: "weekly" diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1a2ed40..b88337a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,96 +1,15 @@ name: CI + on: push: + branches: [main, master] pull_request: jobs: - tests: - strategy: - matrix: - # os: [ubuntu-latest, windows-latest] - os: [ubuntu-latest] - runs-on: ${{ matrix.os }} - steps: - - uses: actions/checkout@v4 - - name: Install Neovim - shell: bash - run: | - mkdir -p /tmp/nvim - wget -q https://github.com/neovim/neovim/releases/download/nightly/nvim.appimage -O /tmp/nvim/nvim.appimage - cd /tmp/nvim - chmod a+x ./nvim.appimage - ./nvim.appimage --appimage-extract - echo "/tmp/nvim/squashfs-root/usr/bin/" >> $GITHUB_PATH - - name: Run Tests - run: | - nvim --version - [ ! -d tests ] && exit 0 - ./tests/run - docs: - runs-on: ubuntu-latest - if: ${{ github.ref == 'refs/heads/main' && github.repository_owner == 'folke' }} - needs: tests - env: - GH_TOKEN: ${{ github.token }} - steps: - - uses: actions/checkout@v4 - with: - ref: docs - - name: Generate Docs - shell: bash - run: gh workflow run "Deploy to Github Pages" --ref docs - community: - runs-on: ubuntu-latest - if: ${{ github.ref == 'refs/heads/main' && github.repository_owner == 'folke' }} - steps: - - uses: actions/checkout@v4 - - name: Install Neovim - shell: bash - run: | - mkdir -p /tmp/nvim - wget -q https://github.com/neovim/neovim/releases/download/nightly/nvim.appimage -O /tmp/nvim/nvim.appimage - cd /tmp/nvim - chmod a+x ./nvim.appimage - ./nvim.appimage --appimage-extract - echo "/tmp/nvim/squashfs-root/usr/bin/" >> $GITHUB_PATH - - name: Rockspec Build - id: rockspec-build - uses: actions/cache@v4 - with: - path: build - key: rockspec-build - - name: Generate Rockspec - if: steps.rockspec-build.cache-hit != 'true' - run: | - nvim -l lua/lazy/build.lua - - name: Push changes - uses: stefanzweifel/git-auto-commit-action@v5 - with: - commit_message: "chore(build): auto-generate rockspec mappings" - commit_user_name: "github-actions[bot]" - commit_user_email: "github-actions[bot]@users.noreply.github.com" - commit_author: "github-actions[bot] " - release: - name: release - if: ${{ github.ref == 'refs/heads/main' && github.repository_owner == 'folke' }} - needs: - - tests - - docs - runs-on: ubuntu-latest - steps: - - uses: googleapis/release-please-action@v4 - id: release - with: - config-file: .github/release-please-config.json - manifest-file: .github/.release-please-manifest.json - - uses: actions/checkout@v4 - - name: tag stable versions - if: ${{ steps.release.outputs.release_created }} - run: | - git config user.name github-actions[bot] - git config user.email github-actions[bot]@users.noreply.github.com - git remote add gh-token "https://${{ secrets.GITHUB_TOKEN }}@github.com/google-github-actions/release-please-action.git" - git tag -d stable || true - git push origin :stable || true - git tag -a stable -m "Last Stable Release" - git push origin stable + ci: + uses: folke/github/.github/workflows/ci.yml@main + secrets: inherit + with: + plugin: lazy.nvim + repo: folke/lazy.nvim + tests: true diff --git a/.github/workflows/community.yml b/.github/workflows/community.yml new file mode 100644 index 0000000..85d3248 --- /dev/null +++ b/.github/workflows/community.yml @@ -0,0 +1,30 @@ +name: Community +on: + push: + branches: + - main + +jobs: + community: + runs-on: ubuntu-latest + if: ${{ github.ref == 'refs/heads/main' && github.repository_owner == 'folke' }} + steps: + - uses: actions/checkout@v4 + - uses: folke/github/neovim@main + - name: Rockspec Build + id: rockspec-build + uses: actions/cache@v4 + with: + path: build + key: rockspec-build + - name: Generate Rockspec + if: steps.rockspec-build.cache-hit != 'true' + run: | + nvim -l lua/lazy/build.lua + - name: Push changes + uses: stefanzweifel/git-auto-commit-action@v5 + with: + commit_message: "chore(build): auto-generate rockspec mappings" + commit_user_name: "github-actions[bot]" + commit_user_email: "github-actions[bot]@users.noreply.github.com" + commit_author: "github-actions[bot] " diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml new file mode 100644 index 0000000..ee5e7c9 --- /dev/null +++ b/.github/workflows/docs.yml @@ -0,0 +1,20 @@ +name: Docs +on: + push: + branches: + - main + +jobs: + docs: + runs-on: ubuntu-latest + if: ${{ github.ref == 'refs/heads/main' && github.repository_owner == 'folke' }} + needs: tests + env: + GH_TOKEN: ${{ github.token }} + steps: + - uses: actions/checkout@v4 + with: + ref: docs + - name: Generate Docs + shell: bash + run: gh workflow run "Deploy to Github Pages" --ref docs diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml new file mode 100644 index 0000000..0908727 --- /dev/null +++ b/.github/workflows/labeler.yml @@ -0,0 +1,8 @@ +name: "PR Labeler" +on: + - pull_request_target + +jobs: + labeler: + uses: folke/github/.github/workflows/labeler.yml@main + secrets: inherit diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml new file mode 100644 index 0000000..6d9df36 --- /dev/null +++ b/.github/workflows/pr.yml @@ -0,0 +1,18 @@ +name: PR Title + +on: + pull_request_target: + types: + - opened + - edited + - synchronize + - reopened + - ready_for_review + +permissions: + pull-requests: read + +jobs: + pr-title: + uses: folke/github/.github/workflows/pr.yml@main + secrets: inherit diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml new file mode 100644 index 0000000..a0c704b --- /dev/null +++ b/.github/workflows/stale.yml @@ -0,0 +1,10 @@ +name: Stale Issues & PRs + +on: + schedule: + - cron: "30 1 * * *" + +jobs: + ci: + uses: folke/github/.github/workflows/stale.yml@main + secrets: inherit diff --git a/.gitignore b/.gitignore index 7217496..2b0bb7a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,8 @@ -tt.* -.tests -doc/tags -debug -.repro -foo.* *.log -data +.repro +.tests build +debug +doc/tags +foo.* +tt.* diff --git a/tests/run b/scripts/test similarity index 78% rename from tests/run rename to scripts/test index f1399de..4baf621 100755 --- a/tests/run +++ b/scripts/test @@ -1,3 +1,3 @@ -#!/bin/sh +#!/bin/env bash nvim -l tests/minit.lua --busted tests -o utfTerminal "$@" From 6186b3de3e1be15f3dc95fcf7c5ec121b69cbc52 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Fri, 5 Jul 2024 16:03:08 +0200 Subject: [PATCH 216/342] ci: add generated files to .styluaignore --- .styluaignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 .styluaignore diff --git a/.styluaignore b/.styluaignore new file mode 100644 index 0000000..0ad920d --- /dev/null +++ b/.styluaignore @@ -0,0 +1 @@ +lua/lazy/community/_generated.lua From 61c7156b57191b8c90fb168dc22506b9482d52be Mon Sep 17 00:00:00 2001 From: folke Date: Fri, 5 Jul 2024 14:04:23 +0000 Subject: [PATCH 217/342] chore(build): auto-generate docs --- doc/lazy.nvim.txt | 1398 ++------------------------------------------- 1 file changed, 46 insertions(+), 1352 deletions(-) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index 73bd0ae..89fb0a4 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -1,130 +1,61 @@ -*lazy.nvim.txt* A modern plugin manager for Neovim +*lazy.nvim.txt* For Neovim Last change: 2024 July 05 ============================================================================== 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. 📰 What’s new? *lazy.nvim-📰-what’s-new?* + - Features |lazy.nvim-features| + - Requirements |lazy.nvim-requirements| + - Getting Started |lazy.nvim-getting-started| +1. Links |lazy.nvim-links| +Install +· +Configure +· +Docs + + + + + + + + + + + + + + -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 . The GitHub `README.md` - has been updated to point to the new website. The `vimdoc` contains all the - information that is available on the website. -- **Spec Resolution & Merging**: the code that resolves a final spec from a - plugin’s fragments has been rewritten. This should be a tiny bit faster, but - more importantly, fixes some issues and is easier to maintain. -- Packages can now specify their dependencies - and configuration using one of: - - **Lazy**: `lazy.lua` file - - **Rockspec**: luarocks `*-scm-1.rockspec` file - - **Packspec**: `pkg.json` (experimental, since the format is not quite there yet) - Related _lazy.nvim_ options: - >lua - { - pkg = { - enabled = true, - cache = vim.fn.stdpath("state") .. "/lazy/pkg-cache.lua", - -- the first package source that is found for a plugin will be used. - sources = { - "lazy", - "rockspec", -- will only be used when rocks.enabled is true - "packspec", - }, - }, - rocks = { - enabled = true, - root = vim.fn.stdpath("data") .. "/lazy-rocks", - server = "https://nvim-neorocks.github.io/rocks-binaries/", - }, - } - < -- Installing neorg is now as simple as: - >lua - { "nvim-neorg/neorg", opts = {} } - < -- Packages are not limited to just Neovim plugins. You can install any - **luarocks** package, like: - >lua - { "https://github.com/lubyk/yaml" } - < - Luarocks packages without a `/lua` directory are never lazy-loaded, since - it’s just a library. -- `build` functions or `*.lua` build files (like `build.lua`) now run - asynchronously. You can use `coroutine.yield(status_msg)` to show progress. - Yielding will also schedule the next `resume` to run in the next tick, so you - can do long-running tasks without blocking Neovim. -============================================================================== -2. 🚀 Getting Started *lazy.nvim-🚀-getting-started* **lazy.nvim** is a modern plugin manager for Neovim. -✨ FEATURES *lazy.nvim-🚀-getting-started-✨-features* +FEATURES *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 support -- 📈 Statusline component to see the number of pending updates -- 🎨 Automatically lazy-loads colorschemes +- 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 support +- Statusline component to see the number of pending updates +- Automatically lazy-loads colorschemes -⚡️ REQUIREMENTS *lazy.nvim-🚀-getting-started-⚡️-requirements* +REQUIREMENTS *lazy.nvim-requirements* - Neovim >= **0.8.0** (needs to be built with **LuaJIT**) - Git >= **2.19.0** (for partial clones support) @@ -133,1251 +64,14 @@ Table of Contents *lazy.nvim-table-of-contents* You can remove `rockspec` from `opts.pkg.sources` to disable this feature. -============================================================================== -3. 🛠️ Installation *lazy.nvim-🛠️-installation* - -There are multiple ways to install **lazy.nvim**. The **Structured Setup** is -the recommended way, but you can also use the **Single File Setup** if you -prefer to keep everything in your `init.lua`. - -Please refer to the Configuration section for an overview of -all available options. - - - - -STRUCTURED SETUP *lazy.nvim-🛠️-installation-structured-setup* - ->lua - require("config.lazy") -< - ->lua - -- Bootstrap lazy.nvim - local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" - if not (vim.uv or vim.loop).fs_stat(lazypath) then - local lazyrepo = "https://github.com/folke/lazy.nvim.git" - local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) - if vim.v.shell_error ~= 0 then - vim.api.nvim_echo({ - { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, - { out, "WarningMsg" }, - { "\nPress any key to exit..." }, - }, true, {}) - vim.fn.getchar() - os.exit(1) - end - end - vim.opt.rtp:prepend(lazypath) - - -- Make sure to setup `mapleader` and `maplocalleader` before - -- loading lazy.nvim so that mappings are correct. - -- This is also a good place to setup other settings (vim.opt) - vim.g.mapleader = " " - vim.g.maplocalleader = "\\" - - -- Setup lazy.nvim - require("lazy").setup({ - -- highlight-start - spec = { - -- import your plugins - { import = "plugins" }, - }, - -- highlight-end - -- Configure any other settings here. See the documentation for more details. - -- colorscheme that will be used when installing plugins. - install = { colorscheme = { "habamax" } }, - -- automatically check for plugin updates - checker = { enabled = true }, - }) -< - -You can then create your plugin specs in `~/.config/nvim/lua/plugins/`. Each -file should return a table with the plugins you want to install. - -For more info see Structuring Your Plugins - - -SINGLE FILE SETUP *lazy.nvim-🛠️-installation-single-file-setup* - ->lua - -- Bootstrap lazy.nvim - local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" - if not (vim.uv or vim.loop).fs_stat(lazypath) then - local lazyrepo = "https://github.com/folke/lazy.nvim.git" - local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) - if vim.v.shell_error ~= 0 then - vim.api.nvim_echo({ - { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, - { out, "WarningMsg" }, - { "\nPress any key to exit..." }, - }, true, {}) - vim.fn.getchar() - os.exit(1) - end - end - vim.opt.rtp:prepend(lazypath) - - -- Make sure to setup `mapleader` and `maplocalleader` before - -- loading lazy.nvim so that mappings are correct. - -- This is also a good place to setup other settings (vim.opt) - vim.g.mapleader = " " - vim.g.maplocalleader = "\\" - - -- Setup lazy.nvim - require("lazy").setup({ - -- highlight-start - spec = { - -- add your plugins here - }, - -- highlight-end - -- Configure any other settings here. See the documentation for more details. - -- colorscheme that will be used when installing plugins. - install = { colorscheme = { "habamax" } }, - -- automatically check for plugin updates - checker = { enabled = true }, - }) -< +GETTING STARTED *lazy.nvim-getting-started* +Check the documentation website for more information. ============================================================================== -4. 🔌 Plugin Spec *lazy.nvim-🔌-plugin-spec* - - -SPEC SOURCE *lazy.nvim-🔌-plugin-spec-spec-source* - - ----------------------------------------------------------------------------------- - Property Type Description - ---------- ---------- ------------------------------------------------------------- - [1] string? Short plugin url. Will be expanded using - config.git.url_format. Can also be a url or dir. - - dir string? A directory pointing to a local plugin - - url string? A custom git url where the plugin is hosted - - name string? A custom name for the plugin used for the local plugin - directory and as the display name - - dev boolean? When true, a local plugin directory will be used instead. See - config.dev - ----------------------------------------------------------------------------------- -A valid spec should define one of `[1]`, `dir` or `url`. - - -SPEC LOADING *lazy.nvim-🔌-plugin-spec-spec-loading* - - -------------------------------------------------------------------------------------------------- - Property Type Description - -------------- ------------------------- --------------------------------------------------------- - dependencies LazySpec[] A list of plugin names or plugin specs that should be - loaded when the plugin loads. Dependencies are always - lazy-loaded unless specified otherwise. When specifying a - name, make sure the plugin spec has been defined - somewhere else. - - enabled boolean? or fun():boolean When false, or if the function returns false, then this - plugin will not be included in the spec - - cond boolean? or Behaves the same as enabled, but won’t uninstall the - fun(LazyPlugin):boolean plugin when the condition is false. Useful to disable - some plugins in vscode, or firenvim for example. - - priority number? Only useful for start plugins (lazy=false) to force - loading certain plugins first. Default priority is 50. - It’s recommended to set this to a high number for - colorschemes. - -------------------------------------------------------------------------------------------------- - -SPEC SETUP *lazy.nvim-🔌-plugin-spec-spec-setup* - - -------------------------------------------------------------------------------------------------- - Property Type Description - ---------- ----------------------------- --------------------------------------------------------- - init fun(LazyPlugin) init functions are always executed during. Mostly useful - for setting vim.g.* configuration used by Vim plugins - startup - - opts table or opts should be a table (will be merged with parent - fun(LazyPlugin, opts:table) specs), return a table (replaces parent specs) or should - change a table. The table will be passed to the - Plugin.config() function. Setting this value will imply - Plugin.config() - - config fun(LazyPlugin, opts:table) config is executed when the plugin loads. The default - or true implementation will automatically run - require(MAIN).setup(opts) if opts or config = true is - set. Lazy uses several heuristics to determine the - plugin’s MAIN module automatically based on the plugin’s - name. (opts is the recommended way to configure plugins). - - main string? You can specify the main module to use for config() and - opts(), in case it can not be determined automatically. - See config() - - build fun(LazyPlugin) or string or build is executed when a plugin is installed or updated. - false or a list of build See Building for more information. - commands - -------------------------------------------------------------------------------------------------- -Always use `opts` instead of `config` when possible. `config` is almost never -needed. - - - - -SPEC LAZY LOADING *lazy.nvim-🔌-plugin-spec-spec-lazy-loading* - - -------------------------------------------------------------------------------------------------------------------- - Property Type Description - ---------- ---------------------------------------------------------------- ---------------------------------------- - lazy boolean? When true, the plugin will only be - loaded when needed. Lazy-loaded plugins - are automatically loaded when their Lua - modules are required, or when one of the - lazy-loading handlers triggers - - event string? or string[] or Lazy-load on event. Events can be - fun(self:LazyPlugin, event:string[]):string[] or specified as BufEnter or with a pattern - {event:string[]\|string, pattern?:string[]\|string} like BufEnter *.lua - - cmd string? or string[] or Lazy-load on command - fun(self:LazyPlugin, cmd:string[]):string[] - - ft string? or string[] or Lazy-load on filetype - fun(self:LazyPlugin, ft:string[]):string[] - - keys string? or string[] or LazyKeysSpec[] or Lazy-load on key mapping - fun(self:LazyPlugin, keys:string[]):(string \| LazyKeysSpec)[] - -------------------------------------------------------------------------------------------------------------------- -Refer to the Lazy Loading <./lazy_loading.md> section for more information. - - -SPEC VERSIONING *lazy.nvim-🔌-plugin-spec-spec-versioning* - - ------------------------------------------------------------------------------ - Property Type Description - ------------ -------------------- -------------------------------------------- - branch string? Branch of the repository - - tag string? Tag of the repository - - commit string? Commit of the repository - - version string? or false to Version to use from the repository. Full - override the default Semver ranges are supported - - pin boolean? When true, this plugin will not be included - in updates - - submodules boolean? When false, git submodules will not be - fetched. Defaults to true - ------------------------------------------------------------------------------ -Refer to the Versioning <./versioning.md> section for more information. - - -SPEC ADVANCED *lazy.nvim-🔌-plugin-spec-spec-advanced* - - ---------------------------------------------------------------------------------------- - Property Type Description - ---------- ---------- ------------------------------------------------------------------ - optional boolean? When a spec is tagged optional, it will only be included in the - final spec, when the same plugin has been specified at least once - somewhere else without optional. This is mainly useful for Neovim - distros, to allow setting options on plugins that may/may not be - part of the user’s plugins. - - specs LazySpec A list of plugin specs defined in the scope of the plugin. This is - mainly useful for Neovim distros, to allow setting options on - plugins that may/may not be part of the user’s plugins. When the - plugin is disabled, none of the scoped specs will be included in - the final spec. Similar to dependencies without the automatic - loading of the specs. - - module false? Do not automatically load this Lua module when it’s required - somewhere - - import string? Import the given spec module. - ---------------------------------------------------------------------------------------- - -EXAMPLES *lazy.nvim-🔌-plugin-spec-examples* - ->lua - return { - -- the colorscheme should be available when starting Neovim - { - "folke/tokyonight.nvim", - lazy = false, -- make sure we load this during startup if it is your main colorscheme - priority = 1000, -- make sure to load this before all the other start plugins - config = function() - -- load the colorscheme here - vim.cmd([[colorscheme tokyonight]]) - end, - }, - - -- I have a separate config.mappings file where I require which-key. - -- With lazy the plugin will be automatically loaded when it is required somewhere - { "folke/which-key.nvim", lazy = true }, - - { - "nvim-neorg/neorg", - -- lazy-load on filetype - ft = "norg", - -- options for neorg. This will automatically call `require("neorg").setup(opts)` - opts = { - load = { - ["core.defaults"] = {}, - }, - }, - }, - - { - "dstein64/vim-startuptime", - -- lazy-load on a command - cmd = "StartupTime", - -- init is called during startup. Configuration for vim plugins typically should be set in an init function - init = function() - vim.g.startuptime_tries = 10 - end, - }, - - { - "hrsh7th/nvim-cmp", - -- load cmp on InsertEnter - event = "InsertEnter", - -- these dependencies will only be loaded when cmp loads - -- dependencies are always lazy-loaded unless specified otherwise - dependencies = { - "hrsh7th/cmp-nvim-lsp", - "hrsh7th/cmp-buffer", - }, - config = function() - -- ... - end, - }, - - -- if some code requires a module from an unloaded plugin, it will be automatically loaded. - -- So for api plugins like devicons, we can always set lazy=true - { "nvim-tree/nvim-web-devicons", lazy = true }, - - -- you can use the VeryLazy event for things that can - -- load later and are not important for the initial UI - { "stevearc/dressing.nvim", event = "VeryLazy" }, - - { - "Wansmer/treesj", - keys = { - { "J", "TSJToggle", desc = "Join Toggle" }, - }, - opts = { use_default_keymaps = false, max_join_length = 150 }, - }, - - { - "monaqa/dial.nvim", - -- lazy-load on keys - -- mode is `n` by default. For more advanced options, check the section on key mappings - keys = { "", { "", mode = "n" } }, - }, - - -- local plugins need to be explicitly configured with dir - { dir = "~/projects/secret.nvim" }, - - -- you can use a custom url to fetch a plugin - { url = "git@github.com:folke/noice.nvim.git" }, - - -- local plugins can also be configured with the dev option. - -- This will use {config.dev.path}/noice.nvim/ instead of fetching it from GitHub - -- With the dev option, you can easily switch between the local and installed version of a plugin - { "folke/noice.nvim", dev = true }, - } -< - - -LAZY LOADING *lazy.nvim-🔌-plugin-spec-lazy-loading* - -**lazy.nvim** automagically lazy-loads Lua modules. This means that if you have -a plugin `A` that is lazy-loaded and a plugin `B` that requires a module of -plugin `A`, then plugin `A` will be loaded on demand as expected. - - -Additionally, you can also lazy-load on **events**, **commands**, **file -types** and **key mappings**. - -Plugins will be lazy-loaded when one of the following is `true`: - -- The plugin only exists as a dependency in your spec -- It has an `event`, `cmd`, `ft` or `keys` key -- `config.defaults.lazy == true` - - -🌈 COLORSCHEMES ~ - -Colorscheme plugins can be configured with `lazy=true`. The plugin will -automagically load when doing `colorscheme foobar`. - - - -⌨️ LAZY KEY MAPPINGS ~ - -The `keys` property can be a `string` or `string[]` for simple normal-mode -mappings, or it can be a `LazyKeysSpec` table with the following key-value -pairs: - -- **[1]**: (`string`) lhs **(required)** -- **[2]**: (`string|fun()`) rhs **(optional)** -- **mode**: (`string|string[]`) mode **(optional, defaults to "n")** -- **ft**: (`string|string[]`) `filetype` for buffer-local keymaps **(optional)** -- any other option valid for `vim.keymap.set` - -Key mappings will load the plugin the first time they get executed. - -When `[2]` is `nil`, then the real mapping has to be created by the `config()` -function. - ->lua - -- Example for neo-tree.nvim - { - "nvim-neo-tree/neo-tree.nvim", - keys = { - { "ft", "Neotree toggle", desc = "NeoTree" }, - }, - config = function() - require("neo-tree").setup() - end, - } -< - - -VERSIONING *lazy.nvim-🔌-plugin-spec-versioning* - -If you want to install a specific revision of a plugin, you can use `commit`, -`tag`, `branch`, `version`. - -The `version` property supports Semver ranges. - - - -EXAMPLES ~ - -- `*`: latest stable version (this excludes pre-release versions) -- `1.2.x`: any version that starts with `1.2`, such as `1.2.0`, `1.2.3`, etc. -- `^1.2.3`: any version that is compatible with `1.2.3`, such as `1.3.0`, `1.4.5`, etc., but not `2.0.0`. -- `~1.2.3`: any version that is compatible with `1.2.3`, such as `1.2.4`, `1.2.5`, but not `1.3.0`. -- `>1.2.3`: any version that is greater than `1.2.3`, such as `1.3.0`, `1.4.5`, etc. -- `>=1.2.3`: any version that is greater than or equal to `1.2.3`, such as `1.2.3`, `1.3.0`, `1.4.5`, etc. -- `<1.2.3`: any version that is less than `1.2.3`, such as `1.1.0`, `1.0.5`, etc. -- `<=1.2.3`: any version that is less than or equal to `1.2.3`, such as `1.2.3`, `1.1.0`, `1.0.5`, etc - - -============================================================================== -5. 📦 Packages *lazy.nvim-📦-packages* - -**lazy.nvim** supports three ways for plugins to define their dependencies and -configuration. - -- **Lazy**: `lazy.lua` file -- **Rockspec**: luarocks `*-scm-1.rockspec` file -- **Packspec**: `pkg.json` (experimental, since the format is not quite there yet) - -You can enable/disable package sources with `config.pkg.sources` -. The order of sources is important, as the first source that -finds a package will be used. - - - -LAZY *lazy.nvim-📦-packages-lazy* - -Using a `lazy.lua` file is the recommended way to define your plugin -dependencies and configuration. Syntax is the same as any plugin spec. - - -ROCKSPEC *lazy.nvim-📦-packages-rockspec* - -When a plugin contains a `*-1.rockspec` file, **lazy.nvim** will automatically -build the rock and its dependencies. - -A **rockspec** will only be used if one of the following is true: - -- the package does not have a `/lua` directory -- the package has a complex build step -- the package has dependencies (excluding `lua`) - - -PACKSPEC *lazy.nvim-📦-packages-packspec* - -Supports the pkg.json - format, with -a lazy extension in `lazy`. `lazy` can contain any valid lazy spec fields. They -will be added to the plugin’s spec. - - -============================================================================== -6. ⚙️ Configuration *lazy.nvim-⚙️-configuration* - -**lazy.nvim** comes with the following defaults: - ->lua - { - root = vim.fn.stdpath("data") .. "/lazy", -- directory where plugins will be installed - defaults = { - -- Set this to `true` to have all your plugins lazy-loaded by default. - -- Only do this if you know what you are doing, as it can lead to unexpected behavior. - lazy = false, -- should plugins be lazy-loaded? - -- It's recommended to leave version=false for now, since a lot the plugin that support versioning, - -- have outdated releases, which may break your Neovim install. - version = nil, -- always use the latest git commit - -- version = "*", -- try installing the latest stable version for plugins that support semver - -- default `cond` you can use to globally disable a lot of plugins - -- when running inside vscode for example - cond = nil, ---@type boolean|fun(self:LazyPlugin):boolean|nil - }, - -- leave nil when passing the spec as the first argument to setup() - spec = nil, ---@type LazySpec - local_spec = true, -- load project specific .lazy.lua spec files. They will be added at the end of the spec. - lockfile = vim.fn.stdpath("config") .. "/lazy-lock.json", -- lockfile generated after running update. - ---@type number? limit the maximum amount of concurrent tasks - concurrency = jit.os:find("Windows") and (vim.uv.available_parallelism() * 2) or nil, - git = { - -- defaults for the `Lazy log` command - -- log = { "--since=3 days ago" }, -- show commits from the last 3 days - log = { "-8" }, -- show the last 8 commits - timeout = 120, -- kill processes that take more than 2 minutes - url_format = "https://github.com/%s.git", - -- lazy.nvim requires git >=2.19.0. If you really want to use lazy with an older version, - -- then set the below to false. This should work, but is NOT supported and will - -- increase downloads a lot. - filter = true, - }, - pkg = { - enabled = true, - cache = vim.fn.stdpath("state") .. "/lazy/pkg-cache.lua", - versions = true, -- Honor versions in pkg sources - -- the first package source that is found for a plugin will be used. - sources = { - "lazy", - "rockspec", - "packspec", - }, - }, - rocks = { - root = vim.fn.stdpath("data") .. "/lazy-rocks", - server = "https://nvim-neorocks.github.io/rocks-binaries/", - }, - dev = { - ---@type string | fun(plugin: LazyPlugin): string directory where you store your local plugin projects - path = "~/projects", - ---@type string[] plugins that match these patterns will use your local versions instead of being fetched from GitHub - patterns = {}, -- For example {"folke"} - fallback = false, -- Fallback to git when local plugin doesn't exist - }, - install = { - -- install missing plugins on startup. This doesn't increase startup time. - missing = true, - -- try to load one of these colorschemes when starting an installation during startup - colorscheme = { "habamax" }, - }, - ui = { - -- a number <1 is a percentage., >1 is a fixed size - size = { width = 0.8, height = 0.8 }, - wrap = true, -- wrap the lines in the ui - -- The border to use for the UI window. Accepts same border values as |nvim_open_win()|. - border = "none", - -- The backdrop opacity. 0 is fully opaque, 100 is fully transparent. - backdrop = 60, - title = nil, ---@type string only works when border is not "none" - title_pos = "center", ---@type "center" | "left" | "right" - -- Show pills on top of the Lazy window - pills = true, ---@type boolean - icons = { - cmd = " ", - config = "", - event = " ", - favorite = " ", - ft = " ", - init = " ", - import = " ", - keys = " ", - lazy = "󰒲 ", - loaded = "●", - not_loaded = "○", - plugin = " ", - runtime = " ", - require = "󰢱 ", - source = " ", - start = " ", - task = "✔ ", - list = { - "●", - "➜", - "★", - "‒", - }, - }, - -- leave nil, to automatically select a browser depending on your OS. - -- If you want to use a specific browser, you can define it here - browser = nil, ---@type string? - throttle = 20, -- how frequently should the ui process render events - custom_keys = { - -- You can define custom key maps here. If present, the description will - -- be shown in the help menu. - -- To disable one of the defaults, set it to false. - - ["l"] = { - function(plugin) - require("lazy.util").float_term({ "lazygit", "log" }, { - cwd = plugin.dir, - }) - end, - desc = "Open lazygit log", - }, - - ["t"] = { - function(plugin) - require("lazy.util").float_term(nil, { - cwd = plugin.dir, - }) - end, - desc = "Open terminal in plugin dir", - }, - }, - }, - diff = { - -- diff command can be one of: - -- * browser: opens the github compare view. Note that this is always mapped to as well, - -- so you can have a different command for diff - -- * git: will run git diff and open a buffer with filetype git - -- * terminal_git: will open a pseudo terminal with git diff - -- * diffview.nvim: will open Diffview to show the diff - cmd = "git", - }, - checker = { - -- automatically check for plugin updates - enabled = false, - concurrency = nil, ---@type number? set to 1 to check for updates very slowly - notify = true, -- get a notification when new updates are found - frequency = 3600, -- check for updates every hour - check_pinned = false, -- check for pinned packages that can't be updated - }, - change_detection = { - -- automatically check for config file changes and reload the ui - enabled = true, - notify = true, -- get a notification when changes are found - }, - performance = { - cache = { - enabled = true, - }, - reset_packpath = true, -- reset the package path to improve startup time - rtp = { - reset = true, -- reset the runtime path to $VIMRUNTIME and your config directory - ---@type string[] - paths = {}, -- add any custom paths here that you want to includes in the rtp - ---@type string[] list any plugins you want to disable here - disabled_plugins = { - -- "gzip", - -- "matchit", - -- "matchparen", - -- "netrwPlugin", - -- "tarPlugin", - -- "tohtml", - -- "tutor", - -- "zipPlugin", - }, - }, - }, - -- lazy can generate helptags from the headings in markdown readme files, - -- so :help works even for plugins that don't have vim docs. - -- when the readme opens with :help it will be correctly displayed as markdown - readme = { - enabled = true, - root = vim.fn.stdpath("state") .. "/lazy/readme", - files = { "README.md", "lua/**/README.md" }, - -- only generate markdown helptags for plugins that dont have docs - skip_if_doc_exists = true, - }, - state = vim.fn.stdpath("state") .. "/lazy/state.json", -- state info for checker and other things - -- Enable profiling of lazy.nvim. This will add some overhead, - -- so only enable this when you are debugging lazy.nvim - profiling = { - -- Enables extra stats on the debug tab related to the loader cache. - -- Additionally gathers stats about all package.loaders - loader = false, - -- Track each new require in the Lazy profiling tab - require = false, - }, - } -< - -If you don’t want to use a Nerd Font, you can replace the icons with Unicode symbols. ~ - ->lua - { - ui = { - icons = { - cmd = "⌘", - config = "🛠", - event = "📅", - ft = "📂", - init = "⚙", - keys = "🗝", - plugin = "🔌", - runtime = "💻", - require = "🌙", - source = "📄", - start = "🚀", - task = "📌", - lazy = "💤 ", - }, - }, - } -< - - -🌈 HIGHLIGHT GROUPS *lazy.nvim-⚙️-configuration-🌈-highlight-groups* - - ----------------------------------------------------------------------- - Highlight Group Default Group Description - ----------------------- ----------------------- ----------------------- - LazyButton CursorLine - - LazyButtonActive Visual - - LazyComment Comment - - LazyCommit @variable.builtin commit ref - - LazyCommitIssue Number - - LazyCommitScope Italic conventional commit - scope - - LazyCommitType Title conventional commit - type - - LazyDimmed Conceal property - - LazyDir @markup.link directory - - LazyH1 IncSearch home button - - LazyH2 Bold titles - - LazyLocal Constant - - LazyNoCond DiagnosticWarn unloaded icon for a - plugin where cond() was - false - - LazyNormal NormalFloat - - LazyProgressDone Constant progress bar done - - LazyProgressTodo LineNr progress bar todo - - LazyProp Conceal property - - LazyReasonCmd Operator - - LazyReasonEvent Constant - - LazyReasonFt Character - - LazyReasonImport Identifier - - LazyReasonKeys Statement - - LazyReasonPlugin Special - - LazyReasonRequire @variable.parameter - - LazyReasonRuntime @macro - - LazyReasonSource Character - - LazyReasonStart @variable.member - - LazySpecial @punctuation.special - - LazyTaskError ErrorMsg task errors - - LazyTaskOutput MsgArea task output - - LazyUrl @markup.link url - - LazyValue @string value of a property - ----------------------------------------------------------------------- - -============================================================================== -7. 🚀 Usage *lazy.nvim-🚀-usage* - - -▶️ STARTUP SEQUENCE *lazy.nvim-🚀-usage-▶️-startup-sequence* - -**lazy.nvim** does **NOT** use Neovim packages and even disables plugin loading -completely (`vim.go.loadplugins = false`). It takes over the complete startup -sequence for more flexibility and better performance. - -In practice this means that step 10 of |Neovim Initialization| is done by Lazy: - -1. All the plugins’ `init()` functions are executed -2. All plugins with `lazy=false` are loaded. This includes sourcing `/plugin` and `/ftdetect` files. (`/after` will not be sourced yet) -3. All files from `/plugin` and `/ftdetect` directories in your rtp are sourced (excluding `/after`) -4. All `/after/plugin` files are sourced (this includes `/after` from plugins) - -Files from runtime directories are always sourced in alphabetical order. - - -🚀 COMMANDS *lazy.nvim-🚀-usage-🚀-commands* - -Plugins are managed with the `:Lazy` command. Open the help with `` to see -all the key mappings. - -You can press `` on a plugin to show its details. Most properties can be -hovered with `` to open links, help files, readmes, git commits and git -issues. - -Lazy can automatically check for updates in the background. This feature can be -enabled with `config.checker.enabled = true`. - -Any operation can be started from the UI, with a sub command or an API -function: - - ---------------------------------------------------------------------------------- - Command Lua Description - ------------------------- -------------------------------- ----------------------- - :Lazy build {plugins} require("lazy").build(opts) Rebuild a plugin - - :Lazy check [plugins] require("lazy").check(opts?) Check for updates and - show the log (git - fetch) - - :Lazy clean [plugins] require("lazy").clean(opts?) Clean plugins that are - no longer needed - - :Lazy clear require("lazy").clear() Clear finished tasks - - :Lazy debug require("lazy").debug() Show debug information - - :Lazy health require("lazy").health() Run :checkhealth lazy - - :Lazy help require("lazy").help() Toggle this help page - - :Lazy home require("lazy").home() Go back to plugin list - - :Lazy install [plugins] require("lazy").install(opts?) Install missing plugins - - :Lazy load {plugins} require("lazy").load(opts) Load a plugin that has - not been loaded yet. - Similar to :packadd. - Like - :Lazy load foo.nvim. - Use :Lazy! load to skip - cond checks. - - :Lazy log [plugins] require("lazy").log(opts?) Show recent updates - - :Lazy profile require("lazy").profile() Show detailed profiling - - :Lazy reload {plugins} require("lazy").reload(opts) Reload a plugin - (experimental!!) - - :Lazy restore [plugins] require("lazy").restore(opts?) Updates all plugins to - the state in the - lockfile. For a single - plugin: restore it to - the state in the - lockfile or to a given - commit under the cursor - - :Lazy sync [plugins] require("lazy").sync(opts?) Run install, clean and - update - - :Lazy update [plugins] require("lazy").update(opts?) Update plugins. This - will also update the - lockfile - ---------------------------------------------------------------------------------- -Any command can have a **bang** to make the command wait till it finished. For -example, if you want to sync lazy from the cmdline, you can use: - ->shell - nvim --headless "+Lazy! sync" +qa -< - -`opts` is a table with the following key-values: - -- **wait**: when true, then the call will wait till the operation completed -- **show**: when false, the UI will not be shown -- **plugins**: a list of plugin names to run the operation on -- **concurrency**: limit the `number` of concurrently running tasks - -Stats API (`require("lazy").stats()`): - ->lua - { - -- startuptime in milliseconds till UIEnter - startuptime = 0, - -- when true, startuptime is the accurate cputime for the Neovim process. (Linux & macOS) - -- this is more accurate than `nvim --startuptime`, and as such will be slightly higher - -- when false, startuptime is calculated based on a delta with a timestamp when lazy started. - real_cputime = false, - count = 0, -- total number of plugins - loaded = 0, -- number of loaded plugins - ---@type table - times = {}, - } -< - -**lazy.nvim** provides a statusline component that you can use to show the -number of pending updates. Make sure to enable `config.checker.enabled = true` -to make this work. - -Example of configuring lualine.nvim ~ - ->lua - require("lualine").setup({ - sections = { - lualine_x = { - { - require("lazy.status").updates, - cond = require("lazy.status").has_updates, - color = { fg = "#ff9e64" }, - }, - }, - }, - }) -< - - -📆 USER EVENTS *lazy.nvim-🚀-usage-📆-user-events* - -The following user events will be triggered: - -- **LazyDone**: when lazy has finished starting up and loaded your config -- **LazySync**: after running sync -- **LazyInstall**: after an install -- **LazyUpdate**: after an update -- **LazyClean**: after a clean -- **LazyCheck**: after checking for updates -- **LazyLog**: after running log -- **LazyLoad**: after loading a plugin. The `data` attribute will contain the plugin name. -- **LazySyncPre**: before running sync -- **LazyInstallPre**: before an install -- **LazyUpdatePre**: before an update -- **LazyCleanPre**: before a clean -- **LazyCheckPre**: before checking for updates -- **LazyLogPre**: before running log -- **LazyReload**: triggered by change detection after reloading plugin specs -- **VeryLazy**: triggered after `LazyDone` and processing `VimEnter` auto commands -- **LazyVimStarted**: triggered after `UIEnter` when `require("lazy").stats().startuptime` has been calculated. - Useful to update the startuptime on your dashboard. - - -❌ UNINSTALLING *lazy.nvim-🚀-usage-❌-uninstalling* - -To uninstall **lazy.nvim**, you need to remove the following files and -directories: - -- **data**: `~/.local/share/nvim/lazy` -- **state**: `~/.local/state/nvim/lazy` -- **lockfile**: `~/.config/nvim/lazy-lock.json` - - - Paths can differ if you changed `XDG` environment variables. - -🔒 LOCKFILE *lazy.nvim-🚀-usage-🔒-lockfile* - -After every **update**, the local lockfile (`lazy-lock.json`) is updated with -the installed revisions. It is recommended to have this file under version -control. - -If you use your Neovim config on multiple machines, using the lockfile, you can -ensure that the same version of every plugin is installed. - -If you are on another machine, you can do `:Lazy restore`, to update all your -plugins to the version from the lockfile. - - -📦 MIGRATION GUIDE *lazy.nvim-🚀-usage-📦-migration-guide* - - -PACKER.NVIM ~ - -- `setup` ➡️ `init` -- `requires` ➡️ `dependencies` -- `as` ➡️ `name` -- `opt` ➡️ `lazy` -- `run` ➡️ `build` -- `lock` ➡️ `pin` -- `disable=true` ➡️ `enabled = false` -- `tag='*'` ➡️ `version="*"` -- `after` is **not needed** for most use-cases. Use `dependencies` otherwise. -- `wants` is **not needed** for most use-cases. Use `dependencies` otherwise. -- `config` don’t support string type, use `fun(LazyPlugin)` instead. -- `module` is auto-loaded. No need to specify -- `keys` spec is |lazy.nvim-different| -- `rtp` can be accomplished with: - ->lua - config = function(plugin) - vim.opt.rtp:append(plugin.dir .. "/custom-rtp") - end -< - -With packer `wants`, `requires` and `after` can be used to manage dependencies. -With lazy, this isn’t needed for most of the Lua dependencies. They can be -installed just like normal plugins (even with `lazy=true`) and will be loaded -when other plugins need them. The `dependencies` key can be used to group those -required plugins with the one that requires them. The plugins which are added -as `dependencies` will always be lazy-loaded and loaded when the plugin is -loaded. - - -PAQ-NVIM ~ - -- `as` ➡️ `name` -- `opt` ➡️ `lazy` -- `run` ➡️ `build` - - -⚡ PROFILING & DEBUG *lazy.nvim-🚀-usage-⚡-profiling-&-debug* - -Great care has been taken to make the startup code (`lazy.core`) as efficient -as possible. During startup, all Lua files used before `VimEnter` or -`BufReadPre` are byte-compiled and cached, similar to what impatient.nvim - does. - -My config for example loads in about `11ms` with `93` plugins. I do a lot of -lazy-loading though :) - -**lazy.nvim** comes with an advanced profiler `:Lazy profile` to help you -improve performance. The profiling view shows you why and how long it took to -load your plugins. - - -🐛 DEBUG ~ - -See an overview of active lazy-loading handlers and what’s in the module -cache. - - -📂 STRUCTURING YOUR PLUGINS*lazy.nvim-🚀-usage-📂-structuring-your-plugins* - -Some users may want to split their plugin specs in multiple files. Instead of -passing a spec table to `setup()`, you can use a Lua module. The specs from the -**module** and any top-level **sub-modules** will be merged together in the -final spec, so it is not needed to add `require` calls in your main plugin file -to the other files. - -The benefits of using this approach: - -- Simple to **add** new plugin specs. Just create a new file in your plugins module. -- Allows for **caching** of all your plugin specs. This becomes important if you have a lot of smaller plugin specs. -- Spec changes will automatically be **reloaded** when they’re updated, so the `:Lazy` UI is always up to date. - -Example: - -- `~/.config/nvim/init.lua` - ->lua - require("lazy").setup("plugins") -< - -- `~/.config/nvim/lua/plugins.lua` or `~/.config/nvim/lua/plugins/init.lua` **(this file is optional)** - ->lua - return { - "folke/neodev.nvim", - "folke/which-key.nvim", - { "folke/neoconf.nvim", cmd = "Neoconf" }, - } -< - -- Any lua file in `~/.config/nvim/lua/plugins/*.lua` will be automatically merged in the main plugin spec - -For a real-life example, you can check LazyVim - and more specifically: - -- lazyvim.plugins contains all the plugin specs that will be loaded - - -↩️ IMPORTING SPECS, CONFIG & OPTS - -As part of a spec, you can add `import` statements to import additional plugin -modules. Both of the `setup()` calls are equivalent: - ->lua - require("lazy").setup("plugins") - - -- Same as: - require("lazy").setup({{import = "plugins"}}) -< - -To import multiple modules from a plugin, add additional specs for each import. -For example, to import LazyVim core plugins and an optional plugin: - ->lua - require("lazy").setup({ - spec = { - { "LazyVim/LazyVim", import = "lazyvim.plugins" }, - { import = "lazyvim.plugins.extras.coding.copilot" }, - } - }) -< - -When you import specs, you can override them by simply adding a spec for the -same plugin to your local specs, adding any keys you want to override / merge. - -`opts`, `dependencies`, `cmd`, `event`, `ft` and `keys` are always merged with -the parent spec. Any other property will override the property from the parent -spec. - - -============================================================================== -8. 🔥 Developers *lazy.nvim-🔥-developers* - -To make it easier for users to install your plugin, you can include a package -spec in your repo. - - -BEST PRACTICES *lazy.nvim-🔥-developers-best-practices* - -- If your plugin needs `setup()`, then create a simple `lazy.lua` file like this: - >lua - return { "me/my-plugin", opts = {} } - < -- Plugins that are pure lua libraries should be lazy-loaded with `lazy = true`. - >lua - { "nvim-lua/plenary.nvim", lazy = true } - < -- Always use `opts` instead of `config` when possible. `config` is almost never - needed. -- Only use `dependencies` if a plugin needs the dep to be installed **AND** - loaded. Lua plugins/libraries are automatically loaded when they are - `require()`d, so they don’t need to be in `dependencies`. -- Inside a `build` function or `*.lua` build file, use - `coroutine.yield(msg:string|LazyMsg)` to show progress. -- Don’t change the `cwd` in your build function, since builds run in parallel - and changing the `cwd` will affect other builds. - - -BUILDING *lazy.nvim-🔥-developers-building* - -The spec **build** property can be one of the following: - -- `fun(plugin: LazyPlugin)`: a function that builds the plugin. -- `*.lua`: a Lua file that builds the plugin (like `build.lua`) -- `":Command"`: a Neovim command -- `"rockspec"`: this will run `luarocks make` in the plugin’s directory - This is automatically set by the `rockspec` package source. -- any other **string** will be run as a shell command -- a `list` of any of the above to run multiple build steps -- if no `build` is specified, but a `build.lua` file exists, that will be used instead. - -Build functions and `*.lua` files run asynchronously in a coroutine. Use -`coroutine.yield(msg:string|LazyMsg)` to show progress. - -Yielding will also schedule the next `coroutine.resume()` to run in the next -tick, so you can do long-running tasks without blocking Neovim. - ->lua - ---@class LazyMsg - ---@field msg string - ---@field level? number vim.log.levels.XXX -< - -Use `vim.log.levels.TRACE` to only show the message as a **status** message for -the task. - - - -MINIT (MINIMAL INIT) *lazy.nvim-🔥-developers-minit-(minimal-init)* - -**lazy.nvim** comes with some built-in functionality to help you create a -minimal init for your plugin. - -I mainly use this for testing and for users to create a `repro.lua`. - -When running in **headless** mode, **lazy.nvim** will log any messages to the -terminal. See `opts.headless` for more info. - -**minit** will install/load all your specs and will always run an update as -well. - - -BOOTSTRAP ~ - ->lua - -- setting this env will override all XDG paths - vim.env.LAZY_STDPATH = ".tests" - -- this will install lazy in your stdpath - load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() -< - - -TESTING WITH BUSTED ~ - -This will add `"lunarmodules/busted"`, configure `hererocks` and run `busted`. - -Below is an example of how I use **minit** to run tests with busted - in **LazyVim**. - ->lua - #!/usr/bin/env -S nvim -l - - vim.env.LAZY_STDPATH = ".tests" - load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() - - -- Setup lazy.nvim - require("lazy.minit").busted({ - spec = { - "LazyVim/starter", - "williamboman/mason-lspconfig.nvim", - "williamboman/mason.nvim", - "nvim-treesitter/nvim-treesitter", - }, - }) -< - -To use this, you can run: - ->sh - nvim -l ./tests/busted.lua tests -< - -If you want to inspect the test environment, run: - ->sh - nvim -u ./tests/busted.lua -< - - -REPRO.LUA ~ - ->lua - vim.env.LAZY_STDPATH = ".repro" - load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() - - require("lazy.minit").repro({ - spec = { - "stevearc/conform.nvim", - "nvim-neotest/nvim-nio", - }, - }) - - -- do anything else you need to do to reproduce the issue -< - -Then run it with: - ->sh - nvim -u repro.lua -< - -============================================================================== -9. Links *lazy.nvim-links* +1. Links *lazy.nvim-links* 1. *image*: https://user-images.githubusercontent.com/292349/208301737-68fb279c-ba70-43ef-a369-8c3e8367d6b1.png -2. *image*: https://user-images.githubusercontent.com/292349/208301766-5c400561-83c3-4811-9667-1ec4bb3c43b8.png -3. *image*: https://user-images.githubusercontent.com/292349/208301790-7eedbfa5-d202-4e70-852e-de68aa47233b.png Generated by panvimdoc From d0c00e697a8202dae764d2cc5d9392cf50639515 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Fri, 5 Jul 2024 16:04:28 +0200 Subject: [PATCH 218/342] ci: remove tests dep --- .github/workflows/docs.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index ee5e7c9..4b0363f 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -8,7 +8,6 @@ jobs: docs: runs-on: ubuntu-latest if: ${{ github.ref == 'refs/heads/main' && github.repository_owner == 'folke' }} - needs: tests env: GH_TOKEN: ${{ github.token }} steps: From 40e08f2b8a7ce27f20c339767ecdfa78e5250cc4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 5 Jul 2024 14:05:18 +0000 Subject: [PATCH 219/342] chore(build): auto-generate docs --- doc/lazy.nvim.txt | 1398 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 1352 insertions(+), 46 deletions(-) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index 89fb0a4..73bd0ae 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -1,61 +1,130 @@ -*lazy.nvim.txt* For Neovim Last change: 2024 July 05 +*lazy.nvim.txt* A modern plugin manager for Neovim ============================================================================== Table of Contents *lazy.nvim-table-of-contents* - - Features |lazy.nvim-features| - - Requirements |lazy.nvim-requirements| - - Getting Started |lazy.nvim-getting-started| -1. Links |lazy.nvim-links| -Install -· -Configure -· -Docs - - - - - - - - - - - - - - +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. 📰 What’s new? *lazy.nvim-📰-what’s-new?* +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 . The GitHub `README.md` + has been updated to point to the new website. The `vimdoc` contains all the + information that is available on the website. +- **Spec Resolution & Merging**: the code that resolves a final spec from a + plugin’s fragments has been rewritten. This should be a tiny bit faster, but + more importantly, fixes some issues and is easier to maintain. +- Packages can now specify their dependencies + and configuration using one of: + - **Lazy**: `lazy.lua` file + - **Rockspec**: luarocks `*-scm-1.rockspec` file + - **Packspec**: `pkg.json` (experimental, since the format is not quite there yet) + Related _lazy.nvim_ options: + >lua + { + pkg = { + enabled = true, + cache = vim.fn.stdpath("state") .. "/lazy/pkg-cache.lua", + -- the first package source that is found for a plugin will be used. + sources = { + "lazy", + "rockspec", -- will only be used when rocks.enabled is true + "packspec", + }, + }, + rocks = { + enabled = true, + root = vim.fn.stdpath("data") .. "/lazy-rocks", + server = "https://nvim-neorocks.github.io/rocks-binaries/", + }, + } + < +- Installing neorg is now as simple as: + >lua + { "nvim-neorg/neorg", opts = {} } + < +- Packages are not limited to just Neovim plugins. You can install any + **luarocks** package, like: + >lua + { "https://github.com/lubyk/yaml" } + < + Luarocks packages without a `/lua` directory are never lazy-loaded, since + it’s just a library. +- `build` functions or `*.lua` build files (like `build.lua`) now run + asynchronously. You can use `coroutine.yield(status_msg)` to show progress. + Yielding will also schedule the next `resume` to run in the next tick, so you + can do long-running tasks without blocking Neovim. +============================================================================== +2. 🚀 Getting Started *lazy.nvim-🚀-getting-started* **lazy.nvim** is a modern plugin manager for Neovim. -FEATURES *lazy.nvim-features* +✨ FEATURES *lazy.nvim-🚀-getting-started-✨-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 support -- Statusline component to see the number of pending updates -- Automatically lazy-loads colorschemes +- 📦 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 support +- 📈 Statusline component to see the number of pending updates +- 🎨 Automatically lazy-loads colorschemes -REQUIREMENTS *lazy.nvim-requirements* +⚡️ REQUIREMENTS *lazy.nvim-🚀-getting-started-⚡️-requirements* - Neovim >= **0.8.0** (needs to be built with **LuaJIT**) - Git >= **2.19.0** (for partial clones support) @@ -64,14 +133,1251 @@ REQUIREMENTS *lazy.nvim-requirements* You can remove `rockspec` from `opts.pkg.sources` to disable this feature. -GETTING STARTED *lazy.nvim-getting-started* +============================================================================== +3. 🛠️ Installation *lazy.nvim-🛠️-installation* + +There are multiple ways to install **lazy.nvim**. The **Structured Setup** is +the recommended way, but you can also use the **Single File Setup** if you +prefer to keep everything in your `init.lua`. + +Please refer to the Configuration section for an overview of +all available options. + + + + +STRUCTURED SETUP *lazy.nvim-🛠️-installation-structured-setup* + +>lua + require("config.lazy") +< + +>lua + -- Bootstrap lazy.nvim + local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" + if not (vim.uv or vim.loop).fs_stat(lazypath) then + local lazyrepo = "https://github.com/folke/lazy.nvim.git" + local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) + if vim.v.shell_error ~= 0 then + vim.api.nvim_echo({ + { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, + { out, "WarningMsg" }, + { "\nPress any key to exit..." }, + }, true, {}) + vim.fn.getchar() + os.exit(1) + end + end + vim.opt.rtp:prepend(lazypath) + + -- Make sure to setup `mapleader` and `maplocalleader` before + -- loading lazy.nvim so that mappings are correct. + -- This is also a good place to setup other settings (vim.opt) + vim.g.mapleader = " " + vim.g.maplocalleader = "\\" + + -- Setup lazy.nvim + require("lazy").setup({ + -- highlight-start + spec = { + -- import your plugins + { import = "plugins" }, + }, + -- highlight-end + -- Configure any other settings here. See the documentation for more details. + -- colorscheme that will be used when installing plugins. + install = { colorscheme = { "habamax" } }, + -- automatically check for plugin updates + checker = { enabled = true }, + }) +< + +You can then create your plugin specs in `~/.config/nvim/lua/plugins/`. Each +file should return a table with the plugins you want to install. + +For more info see Structuring Your Plugins + + +SINGLE FILE SETUP *lazy.nvim-🛠️-installation-single-file-setup* + +>lua + -- Bootstrap lazy.nvim + local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" + if not (vim.uv or vim.loop).fs_stat(lazypath) then + local lazyrepo = "https://github.com/folke/lazy.nvim.git" + local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) + if vim.v.shell_error ~= 0 then + vim.api.nvim_echo({ + { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, + { out, "WarningMsg" }, + { "\nPress any key to exit..." }, + }, true, {}) + vim.fn.getchar() + os.exit(1) + end + end + vim.opt.rtp:prepend(lazypath) + + -- Make sure to setup `mapleader` and `maplocalleader` before + -- loading lazy.nvim so that mappings are correct. + -- This is also a good place to setup other settings (vim.opt) + vim.g.mapleader = " " + vim.g.maplocalleader = "\\" + + -- Setup lazy.nvim + require("lazy").setup({ + -- highlight-start + spec = { + -- add your plugins here + }, + -- highlight-end + -- Configure any other settings here. See the documentation for more details. + -- colorscheme that will be used when installing plugins. + install = { colorscheme = { "habamax" } }, + -- automatically check for plugin updates + checker = { enabled = true }, + }) +< -Check the documentation website for more information. ============================================================================== -1. Links *lazy.nvim-links* +4. 🔌 Plugin Spec *lazy.nvim-🔌-plugin-spec* + + +SPEC SOURCE *lazy.nvim-🔌-plugin-spec-spec-source* + + ----------------------------------------------------------------------------------- + Property Type Description + ---------- ---------- ------------------------------------------------------------- + [1] string? Short plugin url. Will be expanded using + config.git.url_format. Can also be a url or dir. + + dir string? A directory pointing to a local plugin + + url string? A custom git url where the plugin is hosted + + name string? A custom name for the plugin used for the local plugin + directory and as the display name + + dev boolean? When true, a local plugin directory will be used instead. See + config.dev + ----------------------------------------------------------------------------------- +A valid spec should define one of `[1]`, `dir` or `url`. + + +SPEC LOADING *lazy.nvim-🔌-plugin-spec-spec-loading* + + -------------------------------------------------------------------------------------------------- + Property Type Description + -------------- ------------------------- --------------------------------------------------------- + dependencies LazySpec[] A list of plugin names or plugin specs that should be + loaded when the plugin loads. Dependencies are always + lazy-loaded unless specified otherwise. When specifying a + name, make sure the plugin spec has been defined + somewhere else. + + enabled boolean? or fun():boolean When false, or if the function returns false, then this + plugin will not be included in the spec + + cond boolean? or Behaves the same as enabled, but won’t uninstall the + fun(LazyPlugin):boolean plugin when the condition is false. Useful to disable + some plugins in vscode, or firenvim for example. + + priority number? Only useful for start plugins (lazy=false) to force + loading certain plugins first. Default priority is 50. + It’s recommended to set this to a high number for + colorschemes. + -------------------------------------------------------------------------------------------------- + +SPEC SETUP *lazy.nvim-🔌-plugin-spec-spec-setup* + + -------------------------------------------------------------------------------------------------- + Property Type Description + ---------- ----------------------------- --------------------------------------------------------- + init fun(LazyPlugin) init functions are always executed during. Mostly useful + for setting vim.g.* configuration used by Vim plugins + startup + + opts table or opts should be a table (will be merged with parent + fun(LazyPlugin, opts:table) specs), return a table (replaces parent specs) or should + change a table. The table will be passed to the + Plugin.config() function. Setting this value will imply + Plugin.config() + + config fun(LazyPlugin, opts:table) config is executed when the plugin loads. The default + or true implementation will automatically run + require(MAIN).setup(opts) if opts or config = true is + set. Lazy uses several heuristics to determine the + plugin’s MAIN module automatically based on the plugin’s + name. (opts is the recommended way to configure plugins). + + main string? You can specify the main module to use for config() and + opts(), in case it can not be determined automatically. + See config() + + build fun(LazyPlugin) or string or build is executed when a plugin is installed or updated. + false or a list of build See Building for more information. + commands + -------------------------------------------------------------------------------------------------- +Always use `opts` instead of `config` when possible. `config` is almost never +needed. + + + + +SPEC LAZY LOADING *lazy.nvim-🔌-plugin-spec-spec-lazy-loading* + + -------------------------------------------------------------------------------------------------------------------- + Property Type Description + ---------- ---------------------------------------------------------------- ---------------------------------------- + lazy boolean? When true, the plugin will only be + loaded when needed. Lazy-loaded plugins + are automatically loaded when their Lua + modules are required, or when one of the + lazy-loading handlers triggers + + event string? or string[] or Lazy-load on event. Events can be + fun(self:LazyPlugin, event:string[]):string[] or specified as BufEnter or with a pattern + {event:string[]\|string, pattern?:string[]\|string} like BufEnter *.lua + + cmd string? or string[] or Lazy-load on command + fun(self:LazyPlugin, cmd:string[]):string[] + + ft string? or string[] or Lazy-load on filetype + fun(self:LazyPlugin, ft:string[]):string[] + + keys string? or string[] or LazyKeysSpec[] or Lazy-load on key mapping + fun(self:LazyPlugin, keys:string[]):(string \| LazyKeysSpec)[] + -------------------------------------------------------------------------------------------------------------------- +Refer to the Lazy Loading <./lazy_loading.md> section for more information. + + +SPEC VERSIONING *lazy.nvim-🔌-plugin-spec-spec-versioning* + + ------------------------------------------------------------------------------ + Property Type Description + ------------ -------------------- -------------------------------------------- + branch string? Branch of the repository + + tag string? Tag of the repository + + commit string? Commit of the repository + + version string? or false to Version to use from the repository. Full + override the default Semver ranges are supported + + pin boolean? When true, this plugin will not be included + in updates + + submodules boolean? When false, git submodules will not be + fetched. Defaults to true + ------------------------------------------------------------------------------ +Refer to the Versioning <./versioning.md> section for more information. + + +SPEC ADVANCED *lazy.nvim-🔌-plugin-spec-spec-advanced* + + ---------------------------------------------------------------------------------------- + Property Type Description + ---------- ---------- ------------------------------------------------------------------ + optional boolean? When a spec is tagged optional, it will only be included in the + final spec, when the same plugin has been specified at least once + somewhere else without optional. This is mainly useful for Neovim + distros, to allow setting options on plugins that may/may not be + part of the user’s plugins. + + specs LazySpec A list of plugin specs defined in the scope of the plugin. This is + mainly useful for Neovim distros, to allow setting options on + plugins that may/may not be part of the user’s plugins. When the + plugin is disabled, none of the scoped specs will be included in + the final spec. Similar to dependencies without the automatic + loading of the specs. + + module false? Do not automatically load this Lua module when it’s required + somewhere + + import string? Import the given spec module. + ---------------------------------------------------------------------------------------- + +EXAMPLES *lazy.nvim-🔌-plugin-spec-examples* + +>lua + return { + -- the colorscheme should be available when starting Neovim + { + "folke/tokyonight.nvim", + lazy = false, -- make sure we load this during startup if it is your main colorscheme + priority = 1000, -- make sure to load this before all the other start plugins + config = function() + -- load the colorscheme here + vim.cmd([[colorscheme tokyonight]]) + end, + }, + + -- I have a separate config.mappings file where I require which-key. + -- With lazy the plugin will be automatically loaded when it is required somewhere + { "folke/which-key.nvim", lazy = true }, + + { + "nvim-neorg/neorg", + -- lazy-load on filetype + ft = "norg", + -- options for neorg. This will automatically call `require("neorg").setup(opts)` + opts = { + load = { + ["core.defaults"] = {}, + }, + }, + }, + + { + "dstein64/vim-startuptime", + -- lazy-load on a command + cmd = "StartupTime", + -- init is called during startup. Configuration for vim plugins typically should be set in an init function + init = function() + vim.g.startuptime_tries = 10 + end, + }, + + { + "hrsh7th/nvim-cmp", + -- load cmp on InsertEnter + event = "InsertEnter", + -- these dependencies will only be loaded when cmp loads + -- dependencies are always lazy-loaded unless specified otherwise + dependencies = { + "hrsh7th/cmp-nvim-lsp", + "hrsh7th/cmp-buffer", + }, + config = function() + -- ... + end, + }, + + -- if some code requires a module from an unloaded plugin, it will be automatically loaded. + -- So for api plugins like devicons, we can always set lazy=true + { "nvim-tree/nvim-web-devicons", lazy = true }, + + -- you can use the VeryLazy event for things that can + -- load later and are not important for the initial UI + { "stevearc/dressing.nvim", event = "VeryLazy" }, + + { + "Wansmer/treesj", + keys = { + { "J", "TSJToggle", desc = "Join Toggle" }, + }, + opts = { use_default_keymaps = false, max_join_length = 150 }, + }, + + { + "monaqa/dial.nvim", + -- lazy-load on keys + -- mode is `n` by default. For more advanced options, check the section on key mappings + keys = { "", { "", mode = "n" } }, + }, + + -- local plugins need to be explicitly configured with dir + { dir = "~/projects/secret.nvim" }, + + -- you can use a custom url to fetch a plugin + { url = "git@github.com:folke/noice.nvim.git" }, + + -- local plugins can also be configured with the dev option. + -- This will use {config.dev.path}/noice.nvim/ instead of fetching it from GitHub + -- With the dev option, you can easily switch between the local and installed version of a plugin + { "folke/noice.nvim", dev = true }, + } +< + + +LAZY LOADING *lazy.nvim-🔌-plugin-spec-lazy-loading* + +**lazy.nvim** automagically lazy-loads Lua modules. This means that if you have +a plugin `A` that is lazy-loaded and a plugin `B` that requires a module of +plugin `A`, then plugin `A` will be loaded on demand as expected. + + +Additionally, you can also lazy-load on **events**, **commands**, **file +types** and **key mappings**. + +Plugins will be lazy-loaded when one of the following is `true`: + +- The plugin only exists as a dependency in your spec +- It has an `event`, `cmd`, `ft` or `keys` key +- `config.defaults.lazy == true` + + +🌈 COLORSCHEMES ~ + +Colorscheme plugins can be configured with `lazy=true`. The plugin will +automagically load when doing `colorscheme foobar`. + + + +⌨️ LAZY KEY MAPPINGS ~ + +The `keys` property can be a `string` or `string[]` for simple normal-mode +mappings, or it can be a `LazyKeysSpec` table with the following key-value +pairs: + +- **[1]**: (`string`) lhs **(required)** +- **[2]**: (`string|fun()`) rhs **(optional)** +- **mode**: (`string|string[]`) mode **(optional, defaults to "n")** +- **ft**: (`string|string[]`) `filetype` for buffer-local keymaps **(optional)** +- any other option valid for `vim.keymap.set` + +Key mappings will load the plugin the first time they get executed. + +When `[2]` is `nil`, then the real mapping has to be created by the `config()` +function. + +>lua + -- Example for neo-tree.nvim + { + "nvim-neo-tree/neo-tree.nvim", + keys = { + { "ft", "Neotree toggle", desc = "NeoTree" }, + }, + config = function() + require("neo-tree").setup() + end, + } +< + + +VERSIONING *lazy.nvim-🔌-plugin-spec-versioning* + +If you want to install a specific revision of a plugin, you can use `commit`, +`tag`, `branch`, `version`. + +The `version` property supports Semver ranges. + + + +EXAMPLES ~ + +- `*`: latest stable version (this excludes pre-release versions) +- `1.2.x`: any version that starts with `1.2`, such as `1.2.0`, `1.2.3`, etc. +- `^1.2.3`: any version that is compatible with `1.2.3`, such as `1.3.0`, `1.4.5`, etc., but not `2.0.0`. +- `~1.2.3`: any version that is compatible with `1.2.3`, such as `1.2.4`, `1.2.5`, but not `1.3.0`. +- `>1.2.3`: any version that is greater than `1.2.3`, such as `1.3.0`, `1.4.5`, etc. +- `>=1.2.3`: any version that is greater than or equal to `1.2.3`, such as `1.2.3`, `1.3.0`, `1.4.5`, etc. +- `<1.2.3`: any version that is less than `1.2.3`, such as `1.1.0`, `1.0.5`, etc. +- `<=1.2.3`: any version that is less than or equal to `1.2.3`, such as `1.2.3`, `1.1.0`, `1.0.5`, etc + + +============================================================================== +5. 📦 Packages *lazy.nvim-📦-packages* + +**lazy.nvim** supports three ways for plugins to define their dependencies and +configuration. + +- **Lazy**: `lazy.lua` file +- **Rockspec**: luarocks `*-scm-1.rockspec` file +- **Packspec**: `pkg.json` (experimental, since the format is not quite there yet) + +You can enable/disable package sources with `config.pkg.sources` +. The order of sources is important, as the first source that +finds a package will be used. + + + +LAZY *lazy.nvim-📦-packages-lazy* + +Using a `lazy.lua` file is the recommended way to define your plugin +dependencies and configuration. Syntax is the same as any plugin spec. + + +ROCKSPEC *lazy.nvim-📦-packages-rockspec* + +When a plugin contains a `*-1.rockspec` file, **lazy.nvim** will automatically +build the rock and its dependencies. + +A **rockspec** will only be used if one of the following is true: + +- the package does not have a `/lua` directory +- the package has a complex build step +- the package has dependencies (excluding `lua`) + + +PACKSPEC *lazy.nvim-📦-packages-packspec* + +Supports the pkg.json + format, with +a lazy extension in `lazy`. `lazy` can contain any valid lazy spec fields. They +will be added to the plugin’s spec. + + +============================================================================== +6. ⚙️ Configuration *lazy.nvim-⚙️-configuration* + +**lazy.nvim** comes with the following defaults: + +>lua + { + root = vim.fn.stdpath("data") .. "/lazy", -- directory where plugins will be installed + defaults = { + -- Set this to `true` to have all your plugins lazy-loaded by default. + -- Only do this if you know what you are doing, as it can lead to unexpected behavior. + lazy = false, -- should plugins be lazy-loaded? + -- It's recommended to leave version=false for now, since a lot the plugin that support versioning, + -- have outdated releases, which may break your Neovim install. + version = nil, -- always use the latest git commit + -- version = "*", -- try installing the latest stable version for plugins that support semver + -- default `cond` you can use to globally disable a lot of plugins + -- when running inside vscode for example + cond = nil, ---@type boolean|fun(self:LazyPlugin):boolean|nil + }, + -- leave nil when passing the spec as the first argument to setup() + spec = nil, ---@type LazySpec + local_spec = true, -- load project specific .lazy.lua spec files. They will be added at the end of the spec. + lockfile = vim.fn.stdpath("config") .. "/lazy-lock.json", -- lockfile generated after running update. + ---@type number? limit the maximum amount of concurrent tasks + concurrency = jit.os:find("Windows") and (vim.uv.available_parallelism() * 2) or nil, + git = { + -- defaults for the `Lazy log` command + -- log = { "--since=3 days ago" }, -- show commits from the last 3 days + log = { "-8" }, -- show the last 8 commits + timeout = 120, -- kill processes that take more than 2 minutes + url_format = "https://github.com/%s.git", + -- lazy.nvim requires git >=2.19.0. If you really want to use lazy with an older version, + -- then set the below to false. This should work, but is NOT supported and will + -- increase downloads a lot. + filter = true, + }, + pkg = { + enabled = true, + cache = vim.fn.stdpath("state") .. "/lazy/pkg-cache.lua", + versions = true, -- Honor versions in pkg sources + -- the first package source that is found for a plugin will be used. + sources = { + "lazy", + "rockspec", + "packspec", + }, + }, + rocks = { + root = vim.fn.stdpath("data") .. "/lazy-rocks", + server = "https://nvim-neorocks.github.io/rocks-binaries/", + }, + dev = { + ---@type string | fun(plugin: LazyPlugin): string directory where you store your local plugin projects + path = "~/projects", + ---@type string[] plugins that match these patterns will use your local versions instead of being fetched from GitHub + patterns = {}, -- For example {"folke"} + fallback = false, -- Fallback to git when local plugin doesn't exist + }, + install = { + -- install missing plugins on startup. This doesn't increase startup time. + missing = true, + -- try to load one of these colorschemes when starting an installation during startup + colorscheme = { "habamax" }, + }, + ui = { + -- a number <1 is a percentage., >1 is a fixed size + size = { width = 0.8, height = 0.8 }, + wrap = true, -- wrap the lines in the ui + -- The border to use for the UI window. Accepts same border values as |nvim_open_win()|. + border = "none", + -- The backdrop opacity. 0 is fully opaque, 100 is fully transparent. + backdrop = 60, + title = nil, ---@type string only works when border is not "none" + title_pos = "center", ---@type "center" | "left" | "right" + -- Show pills on top of the Lazy window + pills = true, ---@type boolean + icons = { + cmd = " ", + config = "", + event = " ", + favorite = " ", + ft = " ", + init = " ", + import = " ", + keys = " ", + lazy = "󰒲 ", + loaded = "●", + not_loaded = "○", + plugin = " ", + runtime = " ", + require = "󰢱 ", + source = " ", + start = " ", + task = "✔ ", + list = { + "●", + "➜", + "★", + "‒", + }, + }, + -- leave nil, to automatically select a browser depending on your OS. + -- If you want to use a specific browser, you can define it here + browser = nil, ---@type string? + throttle = 20, -- how frequently should the ui process render events + custom_keys = { + -- You can define custom key maps here. If present, the description will + -- be shown in the help menu. + -- To disable one of the defaults, set it to false. + + ["l"] = { + function(plugin) + require("lazy.util").float_term({ "lazygit", "log" }, { + cwd = plugin.dir, + }) + end, + desc = "Open lazygit log", + }, + + ["t"] = { + function(plugin) + require("lazy.util").float_term(nil, { + cwd = plugin.dir, + }) + end, + desc = "Open terminal in plugin dir", + }, + }, + }, + diff = { + -- diff command can be one of: + -- * browser: opens the github compare view. Note that this is always mapped to as well, + -- so you can have a different command for diff + -- * git: will run git diff and open a buffer with filetype git + -- * terminal_git: will open a pseudo terminal with git diff + -- * diffview.nvim: will open Diffview to show the diff + cmd = "git", + }, + checker = { + -- automatically check for plugin updates + enabled = false, + concurrency = nil, ---@type number? set to 1 to check for updates very slowly + notify = true, -- get a notification when new updates are found + frequency = 3600, -- check for updates every hour + check_pinned = false, -- check for pinned packages that can't be updated + }, + change_detection = { + -- automatically check for config file changes and reload the ui + enabled = true, + notify = true, -- get a notification when changes are found + }, + performance = { + cache = { + enabled = true, + }, + reset_packpath = true, -- reset the package path to improve startup time + rtp = { + reset = true, -- reset the runtime path to $VIMRUNTIME and your config directory + ---@type string[] + paths = {}, -- add any custom paths here that you want to includes in the rtp + ---@type string[] list any plugins you want to disable here + disabled_plugins = { + -- "gzip", + -- "matchit", + -- "matchparen", + -- "netrwPlugin", + -- "tarPlugin", + -- "tohtml", + -- "tutor", + -- "zipPlugin", + }, + }, + }, + -- lazy can generate helptags from the headings in markdown readme files, + -- so :help works even for plugins that don't have vim docs. + -- when the readme opens with :help it will be correctly displayed as markdown + readme = { + enabled = true, + root = vim.fn.stdpath("state") .. "/lazy/readme", + files = { "README.md", "lua/**/README.md" }, + -- only generate markdown helptags for plugins that dont have docs + skip_if_doc_exists = true, + }, + state = vim.fn.stdpath("state") .. "/lazy/state.json", -- state info for checker and other things + -- Enable profiling of lazy.nvim. This will add some overhead, + -- so only enable this when you are debugging lazy.nvim + profiling = { + -- Enables extra stats on the debug tab related to the loader cache. + -- Additionally gathers stats about all package.loaders + loader = false, + -- Track each new require in the Lazy profiling tab + require = false, + }, + } +< + +If you don’t want to use a Nerd Font, you can replace the icons with Unicode symbols. ~ + +>lua + { + ui = { + icons = { + cmd = "⌘", + config = "🛠", + event = "📅", + ft = "📂", + init = "⚙", + keys = "🗝", + plugin = "🔌", + runtime = "💻", + require = "🌙", + source = "📄", + start = "🚀", + task = "📌", + lazy = "💤 ", + }, + }, + } +< + + +🌈 HIGHLIGHT GROUPS *lazy.nvim-⚙️-configuration-🌈-highlight-groups* + + ----------------------------------------------------------------------- + Highlight Group Default Group Description + ----------------------- ----------------------- ----------------------- + LazyButton CursorLine + + LazyButtonActive Visual + + LazyComment Comment + + LazyCommit @variable.builtin commit ref + + LazyCommitIssue Number + + LazyCommitScope Italic conventional commit + scope + + LazyCommitType Title conventional commit + type + + LazyDimmed Conceal property + + LazyDir @markup.link directory + + LazyH1 IncSearch home button + + LazyH2 Bold titles + + LazyLocal Constant + + LazyNoCond DiagnosticWarn unloaded icon for a + plugin where cond() was + false + + LazyNormal NormalFloat + + LazyProgressDone Constant progress bar done + + LazyProgressTodo LineNr progress bar todo + + LazyProp Conceal property + + LazyReasonCmd Operator + + LazyReasonEvent Constant + + LazyReasonFt Character + + LazyReasonImport Identifier + + LazyReasonKeys Statement + + LazyReasonPlugin Special + + LazyReasonRequire @variable.parameter + + LazyReasonRuntime @macro + + LazyReasonSource Character + + LazyReasonStart @variable.member + + LazySpecial @punctuation.special + + LazyTaskError ErrorMsg task errors + + LazyTaskOutput MsgArea task output + + LazyUrl @markup.link url + + LazyValue @string value of a property + ----------------------------------------------------------------------- + +============================================================================== +7. 🚀 Usage *lazy.nvim-🚀-usage* + + +▶️ STARTUP SEQUENCE *lazy.nvim-🚀-usage-▶️-startup-sequence* + +**lazy.nvim** does **NOT** use Neovim packages and even disables plugin loading +completely (`vim.go.loadplugins = false`). It takes over the complete startup +sequence for more flexibility and better performance. + +In practice this means that step 10 of |Neovim Initialization| is done by Lazy: + +1. All the plugins’ `init()` functions are executed +2. All plugins with `lazy=false` are loaded. This includes sourcing `/plugin` and `/ftdetect` files. (`/after` will not be sourced yet) +3. All files from `/plugin` and `/ftdetect` directories in your rtp are sourced (excluding `/after`) +4. All `/after/plugin` files are sourced (this includes `/after` from plugins) + +Files from runtime directories are always sourced in alphabetical order. + + +🚀 COMMANDS *lazy.nvim-🚀-usage-🚀-commands* + +Plugins are managed with the `:Lazy` command. Open the help with `` to see +all the key mappings. + +You can press `` on a plugin to show its details. Most properties can be +hovered with `` to open links, help files, readmes, git commits and git +issues. + +Lazy can automatically check for updates in the background. This feature can be +enabled with `config.checker.enabled = true`. + +Any operation can be started from the UI, with a sub command or an API +function: + + ---------------------------------------------------------------------------------- + Command Lua Description + ------------------------- -------------------------------- ----------------------- + :Lazy build {plugins} require("lazy").build(opts) Rebuild a plugin + + :Lazy check [plugins] require("lazy").check(opts?) Check for updates and + show the log (git + fetch) + + :Lazy clean [plugins] require("lazy").clean(opts?) Clean plugins that are + no longer needed + + :Lazy clear require("lazy").clear() Clear finished tasks + + :Lazy debug require("lazy").debug() Show debug information + + :Lazy health require("lazy").health() Run :checkhealth lazy + + :Lazy help require("lazy").help() Toggle this help page + + :Lazy home require("lazy").home() Go back to plugin list + + :Lazy install [plugins] require("lazy").install(opts?) Install missing plugins + + :Lazy load {plugins} require("lazy").load(opts) Load a plugin that has + not been loaded yet. + Similar to :packadd. + Like + :Lazy load foo.nvim. + Use :Lazy! load to skip + cond checks. + + :Lazy log [plugins] require("lazy").log(opts?) Show recent updates + + :Lazy profile require("lazy").profile() Show detailed profiling + + :Lazy reload {plugins} require("lazy").reload(opts) Reload a plugin + (experimental!!) + + :Lazy restore [plugins] require("lazy").restore(opts?) Updates all plugins to + the state in the + lockfile. For a single + plugin: restore it to + the state in the + lockfile or to a given + commit under the cursor + + :Lazy sync [plugins] require("lazy").sync(opts?) Run install, clean and + update + + :Lazy update [plugins] require("lazy").update(opts?) Update plugins. This + will also update the + lockfile + ---------------------------------------------------------------------------------- +Any command can have a **bang** to make the command wait till it finished. For +example, if you want to sync lazy from the cmdline, you can use: + +>shell + nvim --headless "+Lazy! sync" +qa +< + +`opts` is a table with the following key-values: + +- **wait**: when true, then the call will wait till the operation completed +- **show**: when false, the UI will not be shown +- **plugins**: a list of plugin names to run the operation on +- **concurrency**: limit the `number` of concurrently running tasks + +Stats API (`require("lazy").stats()`): + +>lua + { + -- startuptime in milliseconds till UIEnter + startuptime = 0, + -- when true, startuptime is the accurate cputime for the Neovim process. (Linux & macOS) + -- this is more accurate than `nvim --startuptime`, and as such will be slightly higher + -- when false, startuptime is calculated based on a delta with a timestamp when lazy started. + real_cputime = false, + count = 0, -- total number of plugins + loaded = 0, -- number of loaded plugins + ---@type table + times = {}, + } +< + +**lazy.nvim** provides a statusline component that you can use to show the +number of pending updates. Make sure to enable `config.checker.enabled = true` +to make this work. + +Example of configuring lualine.nvim ~ + +>lua + require("lualine").setup({ + sections = { + lualine_x = { + { + require("lazy.status").updates, + cond = require("lazy.status").has_updates, + color = { fg = "#ff9e64" }, + }, + }, + }, + }) +< + + +📆 USER EVENTS *lazy.nvim-🚀-usage-📆-user-events* + +The following user events will be triggered: + +- **LazyDone**: when lazy has finished starting up and loaded your config +- **LazySync**: after running sync +- **LazyInstall**: after an install +- **LazyUpdate**: after an update +- **LazyClean**: after a clean +- **LazyCheck**: after checking for updates +- **LazyLog**: after running log +- **LazyLoad**: after loading a plugin. The `data` attribute will contain the plugin name. +- **LazySyncPre**: before running sync +- **LazyInstallPre**: before an install +- **LazyUpdatePre**: before an update +- **LazyCleanPre**: before a clean +- **LazyCheckPre**: before checking for updates +- **LazyLogPre**: before running log +- **LazyReload**: triggered by change detection after reloading plugin specs +- **VeryLazy**: triggered after `LazyDone` and processing `VimEnter` auto commands +- **LazyVimStarted**: triggered after `UIEnter` when `require("lazy").stats().startuptime` has been calculated. + Useful to update the startuptime on your dashboard. + + +❌ UNINSTALLING *lazy.nvim-🚀-usage-❌-uninstalling* + +To uninstall **lazy.nvim**, you need to remove the following files and +directories: + +- **data**: `~/.local/share/nvim/lazy` +- **state**: `~/.local/state/nvim/lazy` +- **lockfile**: `~/.config/nvim/lazy-lock.json` + + + Paths can differ if you changed `XDG` environment variables. + +🔒 LOCKFILE *lazy.nvim-🚀-usage-🔒-lockfile* + +After every **update**, the local lockfile (`lazy-lock.json`) is updated with +the installed revisions. It is recommended to have this file under version +control. + +If you use your Neovim config on multiple machines, using the lockfile, you can +ensure that the same version of every plugin is installed. + +If you are on another machine, you can do `:Lazy restore`, to update all your +plugins to the version from the lockfile. + + +📦 MIGRATION GUIDE *lazy.nvim-🚀-usage-📦-migration-guide* + + +PACKER.NVIM ~ + +- `setup` ➡️ `init` +- `requires` ➡️ `dependencies` +- `as` ➡️ `name` +- `opt` ➡️ `lazy` +- `run` ➡️ `build` +- `lock` ➡️ `pin` +- `disable=true` ➡️ `enabled = false` +- `tag='*'` ➡️ `version="*"` +- `after` is **not needed** for most use-cases. Use `dependencies` otherwise. +- `wants` is **not needed** for most use-cases. Use `dependencies` otherwise. +- `config` don’t support string type, use `fun(LazyPlugin)` instead. +- `module` is auto-loaded. No need to specify +- `keys` spec is |lazy.nvim-different| +- `rtp` can be accomplished with: + +>lua + config = function(plugin) + vim.opt.rtp:append(plugin.dir .. "/custom-rtp") + end +< + +With packer `wants`, `requires` and `after` can be used to manage dependencies. +With lazy, this isn’t needed for most of the Lua dependencies. They can be +installed just like normal plugins (even with `lazy=true`) and will be loaded +when other plugins need them. The `dependencies` key can be used to group those +required plugins with the one that requires them. The plugins which are added +as `dependencies` will always be lazy-loaded and loaded when the plugin is +loaded. + + +PAQ-NVIM ~ + +- `as` ➡️ `name` +- `opt` ➡️ `lazy` +- `run` ➡️ `build` + + +⚡ PROFILING & DEBUG *lazy.nvim-🚀-usage-⚡-profiling-&-debug* + +Great care has been taken to make the startup code (`lazy.core`) as efficient +as possible. During startup, all Lua files used before `VimEnter` or +`BufReadPre` are byte-compiled and cached, similar to what impatient.nvim + does. + +My config for example loads in about `11ms` with `93` plugins. I do a lot of +lazy-loading though :) + +**lazy.nvim** comes with an advanced profiler `:Lazy profile` to help you +improve performance. The profiling view shows you why and how long it took to +load your plugins. + + +🐛 DEBUG ~ + +See an overview of active lazy-loading handlers and what’s in the module +cache. + + +📂 STRUCTURING YOUR PLUGINS*lazy.nvim-🚀-usage-📂-structuring-your-plugins* + +Some users may want to split their plugin specs in multiple files. Instead of +passing a spec table to `setup()`, you can use a Lua module. The specs from the +**module** and any top-level **sub-modules** will be merged together in the +final spec, so it is not needed to add `require` calls in your main plugin file +to the other files. + +The benefits of using this approach: + +- Simple to **add** new plugin specs. Just create a new file in your plugins module. +- Allows for **caching** of all your plugin specs. This becomes important if you have a lot of smaller plugin specs. +- Spec changes will automatically be **reloaded** when they’re updated, so the `:Lazy` UI is always up to date. + +Example: + +- `~/.config/nvim/init.lua` + +>lua + require("lazy").setup("plugins") +< + +- `~/.config/nvim/lua/plugins.lua` or `~/.config/nvim/lua/plugins/init.lua` **(this file is optional)** + +>lua + return { + "folke/neodev.nvim", + "folke/which-key.nvim", + { "folke/neoconf.nvim", cmd = "Neoconf" }, + } +< + +- Any lua file in `~/.config/nvim/lua/plugins/*.lua` will be automatically merged in the main plugin spec + +For a real-life example, you can check LazyVim + and more specifically: + +- lazyvim.plugins contains all the plugin specs that will be loaded + + +↩️ IMPORTING SPECS, CONFIG & OPTS + +As part of a spec, you can add `import` statements to import additional plugin +modules. Both of the `setup()` calls are equivalent: + +>lua + require("lazy").setup("plugins") + + -- Same as: + require("lazy").setup({{import = "plugins"}}) +< + +To import multiple modules from a plugin, add additional specs for each import. +For example, to import LazyVim core plugins and an optional plugin: + +>lua + require("lazy").setup({ + spec = { + { "LazyVim/LazyVim", import = "lazyvim.plugins" }, + { import = "lazyvim.plugins.extras.coding.copilot" }, + } + }) +< + +When you import specs, you can override them by simply adding a spec for the +same plugin to your local specs, adding any keys you want to override / merge. + +`opts`, `dependencies`, `cmd`, `event`, `ft` and `keys` are always merged with +the parent spec. Any other property will override the property from the parent +spec. + + +============================================================================== +8. 🔥 Developers *lazy.nvim-🔥-developers* + +To make it easier for users to install your plugin, you can include a package +spec in your repo. + + +BEST PRACTICES *lazy.nvim-🔥-developers-best-practices* + +- If your plugin needs `setup()`, then create a simple `lazy.lua` file like this: + >lua + return { "me/my-plugin", opts = {} } + < +- Plugins that are pure lua libraries should be lazy-loaded with `lazy = true`. + >lua + { "nvim-lua/plenary.nvim", lazy = true } + < +- Always use `opts` instead of `config` when possible. `config` is almost never + needed. +- Only use `dependencies` if a plugin needs the dep to be installed **AND** + loaded. Lua plugins/libraries are automatically loaded when they are + `require()`d, so they don’t need to be in `dependencies`. +- Inside a `build` function or `*.lua` build file, use + `coroutine.yield(msg:string|LazyMsg)` to show progress. +- Don’t change the `cwd` in your build function, since builds run in parallel + and changing the `cwd` will affect other builds. + + +BUILDING *lazy.nvim-🔥-developers-building* + +The spec **build** property can be one of the following: + +- `fun(plugin: LazyPlugin)`: a function that builds the plugin. +- `*.lua`: a Lua file that builds the plugin (like `build.lua`) +- `":Command"`: a Neovim command +- `"rockspec"`: this will run `luarocks make` in the plugin’s directory + This is automatically set by the `rockspec` package source. +- any other **string** will be run as a shell command +- a `list` of any of the above to run multiple build steps +- if no `build` is specified, but a `build.lua` file exists, that will be used instead. + +Build functions and `*.lua` files run asynchronously in a coroutine. Use +`coroutine.yield(msg:string|LazyMsg)` to show progress. + +Yielding will also schedule the next `coroutine.resume()` to run in the next +tick, so you can do long-running tasks without blocking Neovim. + +>lua + ---@class LazyMsg + ---@field msg string + ---@field level? number vim.log.levels.XXX +< + +Use `vim.log.levels.TRACE` to only show the message as a **status** message for +the task. + + + +MINIT (MINIMAL INIT) *lazy.nvim-🔥-developers-minit-(minimal-init)* + +**lazy.nvim** comes with some built-in functionality to help you create a +minimal init for your plugin. + +I mainly use this for testing and for users to create a `repro.lua`. + +When running in **headless** mode, **lazy.nvim** will log any messages to the +terminal. See `opts.headless` for more info. + +**minit** will install/load all your specs and will always run an update as +well. + + +BOOTSTRAP ~ + +>lua + -- setting this env will override all XDG paths + vim.env.LAZY_STDPATH = ".tests" + -- this will install lazy in your stdpath + load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() +< + + +TESTING WITH BUSTED ~ + +This will add `"lunarmodules/busted"`, configure `hererocks` and run `busted`. + +Below is an example of how I use **minit** to run tests with busted + in **LazyVim**. + +>lua + #!/usr/bin/env -S nvim -l + + vim.env.LAZY_STDPATH = ".tests" + load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() + + -- Setup lazy.nvim + require("lazy.minit").busted({ + spec = { + "LazyVim/starter", + "williamboman/mason-lspconfig.nvim", + "williamboman/mason.nvim", + "nvim-treesitter/nvim-treesitter", + }, + }) +< + +To use this, you can run: + +>sh + nvim -l ./tests/busted.lua tests +< + +If you want to inspect the test environment, run: + +>sh + nvim -u ./tests/busted.lua +< + + +REPRO.LUA ~ + +>lua + vim.env.LAZY_STDPATH = ".repro" + load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() + + require("lazy.minit").repro({ + spec = { + "stevearc/conform.nvim", + "nvim-neotest/nvim-nio", + }, + }) + + -- do anything else you need to do to reproduce the issue +< + +Then run it with: + +>sh + nvim -u repro.lua +< + +============================================================================== +9. Links *lazy.nvim-links* 1. *image*: https://user-images.githubusercontent.com/292349/208301737-68fb279c-ba70-43ef-a369-8c3e8367d6b1.png +2. *image*: https://user-images.githubusercontent.com/292349/208301766-5c400561-83c3-4811-9667-1ec4bb3c43b8.png +3. *image*: https://user-images.githubusercontent.com/292349/208301790-7eedbfa5-d202-4e70-852e-de68aa47233b.png Generated by panvimdoc From 6ca23c15f64e88e3ba26be9795343c4c7f2ee851 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 5 Jul 2024 16:13:11 +0200 Subject: [PATCH 220/342] chore(main): release 11.10.1 (#1612) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 7 +++++++ lua/lazy/core/config.lua | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index d58642f..e6cb8da 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "11.10.0" + ".": "11.10.1" } diff --git a/CHANGELOG.md b/CHANGELOG.md index a6ad34e..97a2b89 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [11.10.1](https://github.com/folke/lazy.nvim/compare/v11.10.0...v11.10.1) (2024-07-05) + + +### Bug Fixes + +* **lockfile:** keep cond=false and enabed=false in lockfile. Fixes [#1535](https://github.com/folke/lazy.nvim/issues/1535). Fixes [#1606](https://github.com/folke/lazy.nvim/issues/1606) ([baac551](https://github.com/folke/lazy.nvim/commit/baac5517770abd6eee63d11cf4791ef5bf5702e8)) + ## [11.10.0](https://github.com/folke/lazy.nvim/compare/v11.9.2...v11.10.0) (2024-07-04) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 28e942c..3bcb5ae 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -228,7 +228,7 @@ function M.hererocks() return M.options.rocks.hererocks end -M.version = "11.10.0" -- x-release-please-version +M.version = "11.10.1" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 11e802dbaa5d33a3c49cae73708aa160c3601b6e Mon Sep 17 00:00:00 2001 From: folke Date: Fri, 5 Jul 2024 14:13:53 +0000 Subject: [PATCH 221/342] chore(build): auto-generate docs --- doc/lazy.nvim.txt | 1398 ++------------------------------------------- 1 file changed, 46 insertions(+), 1352 deletions(-) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index 73bd0ae..89fb0a4 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -1,130 +1,61 @@ -*lazy.nvim.txt* A modern plugin manager for Neovim +*lazy.nvim.txt* For Neovim Last change: 2024 July 05 ============================================================================== 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. 📰 What’s new? *lazy.nvim-📰-what’s-new?* + - Features |lazy.nvim-features| + - Requirements |lazy.nvim-requirements| + - Getting Started |lazy.nvim-getting-started| +1. Links |lazy.nvim-links| +Install +· +Configure +· +Docs + + + + + + + + + + + + + + -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 . The GitHub `README.md` - has been updated to point to the new website. The `vimdoc` contains all the - information that is available on the website. -- **Spec Resolution & Merging**: the code that resolves a final spec from a - plugin’s fragments has been rewritten. This should be a tiny bit faster, but - more importantly, fixes some issues and is easier to maintain. -- Packages can now specify their dependencies - and configuration using one of: - - **Lazy**: `lazy.lua` file - - **Rockspec**: luarocks `*-scm-1.rockspec` file - - **Packspec**: `pkg.json` (experimental, since the format is not quite there yet) - Related _lazy.nvim_ options: - >lua - { - pkg = { - enabled = true, - cache = vim.fn.stdpath("state") .. "/lazy/pkg-cache.lua", - -- the first package source that is found for a plugin will be used. - sources = { - "lazy", - "rockspec", -- will only be used when rocks.enabled is true - "packspec", - }, - }, - rocks = { - enabled = true, - root = vim.fn.stdpath("data") .. "/lazy-rocks", - server = "https://nvim-neorocks.github.io/rocks-binaries/", - }, - } - < -- Installing neorg is now as simple as: - >lua - { "nvim-neorg/neorg", opts = {} } - < -- Packages are not limited to just Neovim plugins. You can install any - **luarocks** package, like: - >lua - { "https://github.com/lubyk/yaml" } - < - Luarocks packages without a `/lua` directory are never lazy-loaded, since - it’s just a library. -- `build` functions or `*.lua` build files (like `build.lua`) now run - asynchronously. You can use `coroutine.yield(status_msg)` to show progress. - Yielding will also schedule the next `resume` to run in the next tick, so you - can do long-running tasks without blocking Neovim. -============================================================================== -2. 🚀 Getting Started *lazy.nvim-🚀-getting-started* **lazy.nvim** is a modern plugin manager for Neovim. -✨ FEATURES *lazy.nvim-🚀-getting-started-✨-features* +FEATURES *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 support -- 📈 Statusline component to see the number of pending updates -- 🎨 Automatically lazy-loads colorschemes +- 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 support +- Statusline component to see the number of pending updates +- Automatically lazy-loads colorschemes -⚡️ REQUIREMENTS *lazy.nvim-🚀-getting-started-⚡️-requirements* +REQUIREMENTS *lazy.nvim-requirements* - Neovim >= **0.8.0** (needs to be built with **LuaJIT**) - Git >= **2.19.0** (for partial clones support) @@ -133,1251 +64,14 @@ Table of Contents *lazy.nvim-table-of-contents* You can remove `rockspec` from `opts.pkg.sources` to disable this feature. -============================================================================== -3. 🛠️ Installation *lazy.nvim-🛠️-installation* - -There are multiple ways to install **lazy.nvim**. The **Structured Setup** is -the recommended way, but you can also use the **Single File Setup** if you -prefer to keep everything in your `init.lua`. - -Please refer to the Configuration section for an overview of -all available options. - - - - -STRUCTURED SETUP *lazy.nvim-🛠️-installation-structured-setup* - ->lua - require("config.lazy") -< - ->lua - -- Bootstrap lazy.nvim - local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" - if not (vim.uv or vim.loop).fs_stat(lazypath) then - local lazyrepo = "https://github.com/folke/lazy.nvim.git" - local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) - if vim.v.shell_error ~= 0 then - vim.api.nvim_echo({ - { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, - { out, "WarningMsg" }, - { "\nPress any key to exit..." }, - }, true, {}) - vim.fn.getchar() - os.exit(1) - end - end - vim.opt.rtp:prepend(lazypath) - - -- Make sure to setup `mapleader` and `maplocalleader` before - -- loading lazy.nvim so that mappings are correct. - -- This is also a good place to setup other settings (vim.opt) - vim.g.mapleader = " " - vim.g.maplocalleader = "\\" - - -- Setup lazy.nvim - require("lazy").setup({ - -- highlight-start - spec = { - -- import your plugins - { import = "plugins" }, - }, - -- highlight-end - -- Configure any other settings here. See the documentation for more details. - -- colorscheme that will be used when installing plugins. - install = { colorscheme = { "habamax" } }, - -- automatically check for plugin updates - checker = { enabled = true }, - }) -< - -You can then create your plugin specs in `~/.config/nvim/lua/plugins/`. Each -file should return a table with the plugins you want to install. - -For more info see Structuring Your Plugins - - -SINGLE FILE SETUP *lazy.nvim-🛠️-installation-single-file-setup* - ->lua - -- Bootstrap lazy.nvim - local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" - if not (vim.uv or vim.loop).fs_stat(lazypath) then - local lazyrepo = "https://github.com/folke/lazy.nvim.git" - local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) - if vim.v.shell_error ~= 0 then - vim.api.nvim_echo({ - { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, - { out, "WarningMsg" }, - { "\nPress any key to exit..." }, - }, true, {}) - vim.fn.getchar() - os.exit(1) - end - end - vim.opt.rtp:prepend(lazypath) - - -- Make sure to setup `mapleader` and `maplocalleader` before - -- loading lazy.nvim so that mappings are correct. - -- This is also a good place to setup other settings (vim.opt) - vim.g.mapleader = " " - vim.g.maplocalleader = "\\" - - -- Setup lazy.nvim - require("lazy").setup({ - -- highlight-start - spec = { - -- add your plugins here - }, - -- highlight-end - -- Configure any other settings here. See the documentation for more details. - -- colorscheme that will be used when installing plugins. - install = { colorscheme = { "habamax" } }, - -- automatically check for plugin updates - checker = { enabled = true }, - }) -< +GETTING STARTED *lazy.nvim-getting-started* +Check the documentation website for more information. ============================================================================== -4. 🔌 Plugin Spec *lazy.nvim-🔌-plugin-spec* - - -SPEC SOURCE *lazy.nvim-🔌-plugin-spec-spec-source* - - ----------------------------------------------------------------------------------- - Property Type Description - ---------- ---------- ------------------------------------------------------------- - [1] string? Short plugin url. Will be expanded using - config.git.url_format. Can also be a url or dir. - - dir string? A directory pointing to a local plugin - - url string? A custom git url where the plugin is hosted - - name string? A custom name for the plugin used for the local plugin - directory and as the display name - - dev boolean? When true, a local plugin directory will be used instead. See - config.dev - ----------------------------------------------------------------------------------- -A valid spec should define one of `[1]`, `dir` or `url`. - - -SPEC LOADING *lazy.nvim-🔌-plugin-spec-spec-loading* - - -------------------------------------------------------------------------------------------------- - Property Type Description - -------------- ------------------------- --------------------------------------------------------- - dependencies LazySpec[] A list of plugin names or plugin specs that should be - loaded when the plugin loads. Dependencies are always - lazy-loaded unless specified otherwise. When specifying a - name, make sure the plugin spec has been defined - somewhere else. - - enabled boolean? or fun():boolean When false, or if the function returns false, then this - plugin will not be included in the spec - - cond boolean? or Behaves the same as enabled, but won’t uninstall the - fun(LazyPlugin):boolean plugin when the condition is false. Useful to disable - some plugins in vscode, or firenvim for example. - - priority number? Only useful for start plugins (lazy=false) to force - loading certain plugins first. Default priority is 50. - It’s recommended to set this to a high number for - colorschemes. - -------------------------------------------------------------------------------------------------- - -SPEC SETUP *lazy.nvim-🔌-plugin-spec-spec-setup* - - -------------------------------------------------------------------------------------------------- - Property Type Description - ---------- ----------------------------- --------------------------------------------------------- - init fun(LazyPlugin) init functions are always executed during. Mostly useful - for setting vim.g.* configuration used by Vim plugins - startup - - opts table or opts should be a table (will be merged with parent - fun(LazyPlugin, opts:table) specs), return a table (replaces parent specs) or should - change a table. The table will be passed to the - Plugin.config() function. Setting this value will imply - Plugin.config() - - config fun(LazyPlugin, opts:table) config is executed when the plugin loads. The default - or true implementation will automatically run - require(MAIN).setup(opts) if opts or config = true is - set. Lazy uses several heuristics to determine the - plugin’s MAIN module automatically based on the plugin’s - name. (opts is the recommended way to configure plugins). - - main string? You can specify the main module to use for config() and - opts(), in case it can not be determined automatically. - See config() - - build fun(LazyPlugin) or string or build is executed when a plugin is installed or updated. - false or a list of build See Building for more information. - commands - -------------------------------------------------------------------------------------------------- -Always use `opts` instead of `config` when possible. `config` is almost never -needed. - - - - -SPEC LAZY LOADING *lazy.nvim-🔌-plugin-spec-spec-lazy-loading* - - -------------------------------------------------------------------------------------------------------------------- - Property Type Description - ---------- ---------------------------------------------------------------- ---------------------------------------- - lazy boolean? When true, the plugin will only be - loaded when needed. Lazy-loaded plugins - are automatically loaded when their Lua - modules are required, or when one of the - lazy-loading handlers triggers - - event string? or string[] or Lazy-load on event. Events can be - fun(self:LazyPlugin, event:string[]):string[] or specified as BufEnter or with a pattern - {event:string[]\|string, pattern?:string[]\|string} like BufEnter *.lua - - cmd string? or string[] or Lazy-load on command - fun(self:LazyPlugin, cmd:string[]):string[] - - ft string? or string[] or Lazy-load on filetype - fun(self:LazyPlugin, ft:string[]):string[] - - keys string? or string[] or LazyKeysSpec[] or Lazy-load on key mapping - fun(self:LazyPlugin, keys:string[]):(string \| LazyKeysSpec)[] - -------------------------------------------------------------------------------------------------------------------- -Refer to the Lazy Loading <./lazy_loading.md> section for more information. - - -SPEC VERSIONING *lazy.nvim-🔌-plugin-spec-spec-versioning* - - ------------------------------------------------------------------------------ - Property Type Description - ------------ -------------------- -------------------------------------------- - branch string? Branch of the repository - - tag string? Tag of the repository - - commit string? Commit of the repository - - version string? or false to Version to use from the repository. Full - override the default Semver ranges are supported - - pin boolean? When true, this plugin will not be included - in updates - - submodules boolean? When false, git submodules will not be - fetched. Defaults to true - ------------------------------------------------------------------------------ -Refer to the Versioning <./versioning.md> section for more information. - - -SPEC ADVANCED *lazy.nvim-🔌-plugin-spec-spec-advanced* - - ---------------------------------------------------------------------------------------- - Property Type Description - ---------- ---------- ------------------------------------------------------------------ - optional boolean? When a spec is tagged optional, it will only be included in the - final spec, when the same plugin has been specified at least once - somewhere else without optional. This is mainly useful for Neovim - distros, to allow setting options on plugins that may/may not be - part of the user’s plugins. - - specs LazySpec A list of plugin specs defined in the scope of the plugin. This is - mainly useful for Neovim distros, to allow setting options on - plugins that may/may not be part of the user’s plugins. When the - plugin is disabled, none of the scoped specs will be included in - the final spec. Similar to dependencies without the automatic - loading of the specs. - - module false? Do not automatically load this Lua module when it’s required - somewhere - - import string? Import the given spec module. - ---------------------------------------------------------------------------------------- - -EXAMPLES *lazy.nvim-🔌-plugin-spec-examples* - ->lua - return { - -- the colorscheme should be available when starting Neovim - { - "folke/tokyonight.nvim", - lazy = false, -- make sure we load this during startup if it is your main colorscheme - priority = 1000, -- make sure to load this before all the other start plugins - config = function() - -- load the colorscheme here - vim.cmd([[colorscheme tokyonight]]) - end, - }, - - -- I have a separate config.mappings file where I require which-key. - -- With lazy the plugin will be automatically loaded when it is required somewhere - { "folke/which-key.nvim", lazy = true }, - - { - "nvim-neorg/neorg", - -- lazy-load on filetype - ft = "norg", - -- options for neorg. This will automatically call `require("neorg").setup(opts)` - opts = { - load = { - ["core.defaults"] = {}, - }, - }, - }, - - { - "dstein64/vim-startuptime", - -- lazy-load on a command - cmd = "StartupTime", - -- init is called during startup. Configuration for vim plugins typically should be set in an init function - init = function() - vim.g.startuptime_tries = 10 - end, - }, - - { - "hrsh7th/nvim-cmp", - -- load cmp on InsertEnter - event = "InsertEnter", - -- these dependencies will only be loaded when cmp loads - -- dependencies are always lazy-loaded unless specified otherwise - dependencies = { - "hrsh7th/cmp-nvim-lsp", - "hrsh7th/cmp-buffer", - }, - config = function() - -- ... - end, - }, - - -- if some code requires a module from an unloaded plugin, it will be automatically loaded. - -- So for api plugins like devicons, we can always set lazy=true - { "nvim-tree/nvim-web-devicons", lazy = true }, - - -- you can use the VeryLazy event for things that can - -- load later and are not important for the initial UI - { "stevearc/dressing.nvim", event = "VeryLazy" }, - - { - "Wansmer/treesj", - keys = { - { "J", "TSJToggle", desc = "Join Toggle" }, - }, - opts = { use_default_keymaps = false, max_join_length = 150 }, - }, - - { - "monaqa/dial.nvim", - -- lazy-load on keys - -- mode is `n` by default. For more advanced options, check the section on key mappings - keys = { "", { "", mode = "n" } }, - }, - - -- local plugins need to be explicitly configured with dir - { dir = "~/projects/secret.nvim" }, - - -- you can use a custom url to fetch a plugin - { url = "git@github.com:folke/noice.nvim.git" }, - - -- local plugins can also be configured with the dev option. - -- This will use {config.dev.path}/noice.nvim/ instead of fetching it from GitHub - -- With the dev option, you can easily switch between the local and installed version of a plugin - { "folke/noice.nvim", dev = true }, - } -< - - -LAZY LOADING *lazy.nvim-🔌-plugin-spec-lazy-loading* - -**lazy.nvim** automagically lazy-loads Lua modules. This means that if you have -a plugin `A` that is lazy-loaded and a plugin `B` that requires a module of -plugin `A`, then plugin `A` will be loaded on demand as expected. - - -Additionally, you can also lazy-load on **events**, **commands**, **file -types** and **key mappings**. - -Plugins will be lazy-loaded when one of the following is `true`: - -- The plugin only exists as a dependency in your spec -- It has an `event`, `cmd`, `ft` or `keys` key -- `config.defaults.lazy == true` - - -🌈 COLORSCHEMES ~ - -Colorscheme plugins can be configured with `lazy=true`. The plugin will -automagically load when doing `colorscheme foobar`. - - - -⌨️ LAZY KEY MAPPINGS ~ - -The `keys` property can be a `string` or `string[]` for simple normal-mode -mappings, or it can be a `LazyKeysSpec` table with the following key-value -pairs: - -- **[1]**: (`string`) lhs **(required)** -- **[2]**: (`string|fun()`) rhs **(optional)** -- **mode**: (`string|string[]`) mode **(optional, defaults to "n")** -- **ft**: (`string|string[]`) `filetype` for buffer-local keymaps **(optional)** -- any other option valid for `vim.keymap.set` - -Key mappings will load the plugin the first time they get executed. - -When `[2]` is `nil`, then the real mapping has to be created by the `config()` -function. - ->lua - -- Example for neo-tree.nvim - { - "nvim-neo-tree/neo-tree.nvim", - keys = { - { "ft", "Neotree toggle", desc = "NeoTree" }, - }, - config = function() - require("neo-tree").setup() - end, - } -< - - -VERSIONING *lazy.nvim-🔌-plugin-spec-versioning* - -If you want to install a specific revision of a plugin, you can use `commit`, -`tag`, `branch`, `version`. - -The `version` property supports Semver ranges. - - - -EXAMPLES ~ - -- `*`: latest stable version (this excludes pre-release versions) -- `1.2.x`: any version that starts with `1.2`, such as `1.2.0`, `1.2.3`, etc. -- `^1.2.3`: any version that is compatible with `1.2.3`, such as `1.3.0`, `1.4.5`, etc., but not `2.0.0`. -- `~1.2.3`: any version that is compatible with `1.2.3`, such as `1.2.4`, `1.2.5`, but not `1.3.0`. -- `>1.2.3`: any version that is greater than `1.2.3`, such as `1.3.0`, `1.4.5`, etc. -- `>=1.2.3`: any version that is greater than or equal to `1.2.3`, such as `1.2.3`, `1.3.0`, `1.4.5`, etc. -- `<1.2.3`: any version that is less than `1.2.3`, such as `1.1.0`, `1.0.5`, etc. -- `<=1.2.3`: any version that is less than or equal to `1.2.3`, such as `1.2.3`, `1.1.0`, `1.0.5`, etc - - -============================================================================== -5. 📦 Packages *lazy.nvim-📦-packages* - -**lazy.nvim** supports three ways for plugins to define their dependencies and -configuration. - -- **Lazy**: `lazy.lua` file -- **Rockspec**: luarocks `*-scm-1.rockspec` file -- **Packspec**: `pkg.json` (experimental, since the format is not quite there yet) - -You can enable/disable package sources with `config.pkg.sources` -. The order of sources is important, as the first source that -finds a package will be used. - - - -LAZY *lazy.nvim-📦-packages-lazy* - -Using a `lazy.lua` file is the recommended way to define your plugin -dependencies and configuration. Syntax is the same as any plugin spec. - - -ROCKSPEC *lazy.nvim-📦-packages-rockspec* - -When a plugin contains a `*-1.rockspec` file, **lazy.nvim** will automatically -build the rock and its dependencies. - -A **rockspec** will only be used if one of the following is true: - -- the package does not have a `/lua` directory -- the package has a complex build step -- the package has dependencies (excluding `lua`) - - -PACKSPEC *lazy.nvim-📦-packages-packspec* - -Supports the pkg.json - format, with -a lazy extension in `lazy`. `lazy` can contain any valid lazy spec fields. They -will be added to the plugin’s spec. - - -============================================================================== -6. ⚙️ Configuration *lazy.nvim-⚙️-configuration* - -**lazy.nvim** comes with the following defaults: - ->lua - { - root = vim.fn.stdpath("data") .. "/lazy", -- directory where plugins will be installed - defaults = { - -- Set this to `true` to have all your plugins lazy-loaded by default. - -- Only do this if you know what you are doing, as it can lead to unexpected behavior. - lazy = false, -- should plugins be lazy-loaded? - -- It's recommended to leave version=false for now, since a lot the plugin that support versioning, - -- have outdated releases, which may break your Neovim install. - version = nil, -- always use the latest git commit - -- version = "*", -- try installing the latest stable version for plugins that support semver - -- default `cond` you can use to globally disable a lot of plugins - -- when running inside vscode for example - cond = nil, ---@type boolean|fun(self:LazyPlugin):boolean|nil - }, - -- leave nil when passing the spec as the first argument to setup() - spec = nil, ---@type LazySpec - local_spec = true, -- load project specific .lazy.lua spec files. They will be added at the end of the spec. - lockfile = vim.fn.stdpath("config") .. "/lazy-lock.json", -- lockfile generated after running update. - ---@type number? limit the maximum amount of concurrent tasks - concurrency = jit.os:find("Windows") and (vim.uv.available_parallelism() * 2) or nil, - git = { - -- defaults for the `Lazy log` command - -- log = { "--since=3 days ago" }, -- show commits from the last 3 days - log = { "-8" }, -- show the last 8 commits - timeout = 120, -- kill processes that take more than 2 minutes - url_format = "https://github.com/%s.git", - -- lazy.nvim requires git >=2.19.0. If you really want to use lazy with an older version, - -- then set the below to false. This should work, but is NOT supported and will - -- increase downloads a lot. - filter = true, - }, - pkg = { - enabled = true, - cache = vim.fn.stdpath("state") .. "/lazy/pkg-cache.lua", - versions = true, -- Honor versions in pkg sources - -- the first package source that is found for a plugin will be used. - sources = { - "lazy", - "rockspec", - "packspec", - }, - }, - rocks = { - root = vim.fn.stdpath("data") .. "/lazy-rocks", - server = "https://nvim-neorocks.github.io/rocks-binaries/", - }, - dev = { - ---@type string | fun(plugin: LazyPlugin): string directory where you store your local plugin projects - path = "~/projects", - ---@type string[] plugins that match these patterns will use your local versions instead of being fetched from GitHub - patterns = {}, -- For example {"folke"} - fallback = false, -- Fallback to git when local plugin doesn't exist - }, - install = { - -- install missing plugins on startup. This doesn't increase startup time. - missing = true, - -- try to load one of these colorschemes when starting an installation during startup - colorscheme = { "habamax" }, - }, - ui = { - -- a number <1 is a percentage., >1 is a fixed size - size = { width = 0.8, height = 0.8 }, - wrap = true, -- wrap the lines in the ui - -- The border to use for the UI window. Accepts same border values as |nvim_open_win()|. - border = "none", - -- The backdrop opacity. 0 is fully opaque, 100 is fully transparent. - backdrop = 60, - title = nil, ---@type string only works when border is not "none" - title_pos = "center", ---@type "center" | "left" | "right" - -- Show pills on top of the Lazy window - pills = true, ---@type boolean - icons = { - cmd = " ", - config = "", - event = " ", - favorite = " ", - ft = " ", - init = " ", - import = " ", - keys = " ", - lazy = "󰒲 ", - loaded = "●", - not_loaded = "○", - plugin = " ", - runtime = " ", - require = "󰢱 ", - source = " ", - start = " ", - task = "✔ ", - list = { - "●", - "➜", - "★", - "‒", - }, - }, - -- leave nil, to automatically select a browser depending on your OS. - -- If you want to use a specific browser, you can define it here - browser = nil, ---@type string? - throttle = 20, -- how frequently should the ui process render events - custom_keys = { - -- You can define custom key maps here. If present, the description will - -- be shown in the help menu. - -- To disable one of the defaults, set it to false. - - ["l"] = { - function(plugin) - require("lazy.util").float_term({ "lazygit", "log" }, { - cwd = plugin.dir, - }) - end, - desc = "Open lazygit log", - }, - - ["t"] = { - function(plugin) - require("lazy.util").float_term(nil, { - cwd = plugin.dir, - }) - end, - desc = "Open terminal in plugin dir", - }, - }, - }, - diff = { - -- diff command can be one of: - -- * browser: opens the github compare view. Note that this is always mapped to as well, - -- so you can have a different command for diff - -- * git: will run git diff and open a buffer with filetype git - -- * terminal_git: will open a pseudo terminal with git diff - -- * diffview.nvim: will open Diffview to show the diff - cmd = "git", - }, - checker = { - -- automatically check for plugin updates - enabled = false, - concurrency = nil, ---@type number? set to 1 to check for updates very slowly - notify = true, -- get a notification when new updates are found - frequency = 3600, -- check for updates every hour - check_pinned = false, -- check for pinned packages that can't be updated - }, - change_detection = { - -- automatically check for config file changes and reload the ui - enabled = true, - notify = true, -- get a notification when changes are found - }, - performance = { - cache = { - enabled = true, - }, - reset_packpath = true, -- reset the package path to improve startup time - rtp = { - reset = true, -- reset the runtime path to $VIMRUNTIME and your config directory - ---@type string[] - paths = {}, -- add any custom paths here that you want to includes in the rtp - ---@type string[] list any plugins you want to disable here - disabled_plugins = { - -- "gzip", - -- "matchit", - -- "matchparen", - -- "netrwPlugin", - -- "tarPlugin", - -- "tohtml", - -- "tutor", - -- "zipPlugin", - }, - }, - }, - -- lazy can generate helptags from the headings in markdown readme files, - -- so :help works even for plugins that don't have vim docs. - -- when the readme opens with :help it will be correctly displayed as markdown - readme = { - enabled = true, - root = vim.fn.stdpath("state") .. "/lazy/readme", - files = { "README.md", "lua/**/README.md" }, - -- only generate markdown helptags for plugins that dont have docs - skip_if_doc_exists = true, - }, - state = vim.fn.stdpath("state") .. "/lazy/state.json", -- state info for checker and other things - -- Enable profiling of lazy.nvim. This will add some overhead, - -- so only enable this when you are debugging lazy.nvim - profiling = { - -- Enables extra stats on the debug tab related to the loader cache. - -- Additionally gathers stats about all package.loaders - loader = false, - -- Track each new require in the Lazy profiling tab - require = false, - }, - } -< - -If you don’t want to use a Nerd Font, you can replace the icons with Unicode symbols. ~ - ->lua - { - ui = { - icons = { - cmd = "⌘", - config = "🛠", - event = "📅", - ft = "📂", - init = "⚙", - keys = "🗝", - plugin = "🔌", - runtime = "💻", - require = "🌙", - source = "📄", - start = "🚀", - task = "📌", - lazy = "💤 ", - }, - }, - } -< - - -🌈 HIGHLIGHT GROUPS *lazy.nvim-⚙️-configuration-🌈-highlight-groups* - - ----------------------------------------------------------------------- - Highlight Group Default Group Description - ----------------------- ----------------------- ----------------------- - LazyButton CursorLine - - LazyButtonActive Visual - - LazyComment Comment - - LazyCommit @variable.builtin commit ref - - LazyCommitIssue Number - - LazyCommitScope Italic conventional commit - scope - - LazyCommitType Title conventional commit - type - - LazyDimmed Conceal property - - LazyDir @markup.link directory - - LazyH1 IncSearch home button - - LazyH2 Bold titles - - LazyLocal Constant - - LazyNoCond DiagnosticWarn unloaded icon for a - plugin where cond() was - false - - LazyNormal NormalFloat - - LazyProgressDone Constant progress bar done - - LazyProgressTodo LineNr progress bar todo - - LazyProp Conceal property - - LazyReasonCmd Operator - - LazyReasonEvent Constant - - LazyReasonFt Character - - LazyReasonImport Identifier - - LazyReasonKeys Statement - - LazyReasonPlugin Special - - LazyReasonRequire @variable.parameter - - LazyReasonRuntime @macro - - LazyReasonSource Character - - LazyReasonStart @variable.member - - LazySpecial @punctuation.special - - LazyTaskError ErrorMsg task errors - - LazyTaskOutput MsgArea task output - - LazyUrl @markup.link url - - LazyValue @string value of a property - ----------------------------------------------------------------------- - -============================================================================== -7. 🚀 Usage *lazy.nvim-🚀-usage* - - -▶️ STARTUP SEQUENCE *lazy.nvim-🚀-usage-▶️-startup-sequence* - -**lazy.nvim** does **NOT** use Neovim packages and even disables plugin loading -completely (`vim.go.loadplugins = false`). It takes over the complete startup -sequence for more flexibility and better performance. - -In practice this means that step 10 of |Neovim Initialization| is done by Lazy: - -1. All the plugins’ `init()` functions are executed -2. All plugins with `lazy=false` are loaded. This includes sourcing `/plugin` and `/ftdetect` files. (`/after` will not be sourced yet) -3. All files from `/plugin` and `/ftdetect` directories in your rtp are sourced (excluding `/after`) -4. All `/after/plugin` files are sourced (this includes `/after` from plugins) - -Files from runtime directories are always sourced in alphabetical order. - - -🚀 COMMANDS *lazy.nvim-🚀-usage-🚀-commands* - -Plugins are managed with the `:Lazy` command. Open the help with `` to see -all the key mappings. - -You can press `` on a plugin to show its details. Most properties can be -hovered with `` to open links, help files, readmes, git commits and git -issues. - -Lazy can automatically check for updates in the background. This feature can be -enabled with `config.checker.enabled = true`. - -Any operation can be started from the UI, with a sub command or an API -function: - - ---------------------------------------------------------------------------------- - Command Lua Description - ------------------------- -------------------------------- ----------------------- - :Lazy build {plugins} require("lazy").build(opts) Rebuild a plugin - - :Lazy check [plugins] require("lazy").check(opts?) Check for updates and - show the log (git - fetch) - - :Lazy clean [plugins] require("lazy").clean(opts?) Clean plugins that are - no longer needed - - :Lazy clear require("lazy").clear() Clear finished tasks - - :Lazy debug require("lazy").debug() Show debug information - - :Lazy health require("lazy").health() Run :checkhealth lazy - - :Lazy help require("lazy").help() Toggle this help page - - :Lazy home require("lazy").home() Go back to plugin list - - :Lazy install [plugins] require("lazy").install(opts?) Install missing plugins - - :Lazy load {plugins} require("lazy").load(opts) Load a plugin that has - not been loaded yet. - Similar to :packadd. - Like - :Lazy load foo.nvim. - Use :Lazy! load to skip - cond checks. - - :Lazy log [plugins] require("lazy").log(opts?) Show recent updates - - :Lazy profile require("lazy").profile() Show detailed profiling - - :Lazy reload {plugins} require("lazy").reload(opts) Reload a plugin - (experimental!!) - - :Lazy restore [plugins] require("lazy").restore(opts?) Updates all plugins to - the state in the - lockfile. For a single - plugin: restore it to - the state in the - lockfile or to a given - commit under the cursor - - :Lazy sync [plugins] require("lazy").sync(opts?) Run install, clean and - update - - :Lazy update [plugins] require("lazy").update(opts?) Update plugins. This - will also update the - lockfile - ---------------------------------------------------------------------------------- -Any command can have a **bang** to make the command wait till it finished. For -example, if you want to sync lazy from the cmdline, you can use: - ->shell - nvim --headless "+Lazy! sync" +qa -< - -`opts` is a table with the following key-values: - -- **wait**: when true, then the call will wait till the operation completed -- **show**: when false, the UI will not be shown -- **plugins**: a list of plugin names to run the operation on -- **concurrency**: limit the `number` of concurrently running tasks - -Stats API (`require("lazy").stats()`): - ->lua - { - -- startuptime in milliseconds till UIEnter - startuptime = 0, - -- when true, startuptime is the accurate cputime for the Neovim process. (Linux & macOS) - -- this is more accurate than `nvim --startuptime`, and as such will be slightly higher - -- when false, startuptime is calculated based on a delta with a timestamp when lazy started. - real_cputime = false, - count = 0, -- total number of plugins - loaded = 0, -- number of loaded plugins - ---@type table - times = {}, - } -< - -**lazy.nvim** provides a statusline component that you can use to show the -number of pending updates. Make sure to enable `config.checker.enabled = true` -to make this work. - -Example of configuring lualine.nvim ~ - ->lua - require("lualine").setup({ - sections = { - lualine_x = { - { - require("lazy.status").updates, - cond = require("lazy.status").has_updates, - color = { fg = "#ff9e64" }, - }, - }, - }, - }) -< - - -📆 USER EVENTS *lazy.nvim-🚀-usage-📆-user-events* - -The following user events will be triggered: - -- **LazyDone**: when lazy has finished starting up and loaded your config -- **LazySync**: after running sync -- **LazyInstall**: after an install -- **LazyUpdate**: after an update -- **LazyClean**: after a clean -- **LazyCheck**: after checking for updates -- **LazyLog**: after running log -- **LazyLoad**: after loading a plugin. The `data` attribute will contain the plugin name. -- **LazySyncPre**: before running sync -- **LazyInstallPre**: before an install -- **LazyUpdatePre**: before an update -- **LazyCleanPre**: before a clean -- **LazyCheckPre**: before checking for updates -- **LazyLogPre**: before running log -- **LazyReload**: triggered by change detection after reloading plugin specs -- **VeryLazy**: triggered after `LazyDone` and processing `VimEnter` auto commands -- **LazyVimStarted**: triggered after `UIEnter` when `require("lazy").stats().startuptime` has been calculated. - Useful to update the startuptime on your dashboard. - - -❌ UNINSTALLING *lazy.nvim-🚀-usage-❌-uninstalling* - -To uninstall **lazy.nvim**, you need to remove the following files and -directories: - -- **data**: `~/.local/share/nvim/lazy` -- **state**: `~/.local/state/nvim/lazy` -- **lockfile**: `~/.config/nvim/lazy-lock.json` - - - Paths can differ if you changed `XDG` environment variables. - -🔒 LOCKFILE *lazy.nvim-🚀-usage-🔒-lockfile* - -After every **update**, the local lockfile (`lazy-lock.json`) is updated with -the installed revisions. It is recommended to have this file under version -control. - -If you use your Neovim config on multiple machines, using the lockfile, you can -ensure that the same version of every plugin is installed. - -If you are on another machine, you can do `:Lazy restore`, to update all your -plugins to the version from the lockfile. - - -📦 MIGRATION GUIDE *lazy.nvim-🚀-usage-📦-migration-guide* - - -PACKER.NVIM ~ - -- `setup` ➡️ `init` -- `requires` ➡️ `dependencies` -- `as` ➡️ `name` -- `opt` ➡️ `lazy` -- `run` ➡️ `build` -- `lock` ➡️ `pin` -- `disable=true` ➡️ `enabled = false` -- `tag='*'` ➡️ `version="*"` -- `after` is **not needed** for most use-cases. Use `dependencies` otherwise. -- `wants` is **not needed** for most use-cases. Use `dependencies` otherwise. -- `config` don’t support string type, use `fun(LazyPlugin)` instead. -- `module` is auto-loaded. No need to specify -- `keys` spec is |lazy.nvim-different| -- `rtp` can be accomplished with: - ->lua - config = function(plugin) - vim.opt.rtp:append(plugin.dir .. "/custom-rtp") - end -< - -With packer `wants`, `requires` and `after` can be used to manage dependencies. -With lazy, this isn’t needed for most of the Lua dependencies. They can be -installed just like normal plugins (even with `lazy=true`) and will be loaded -when other plugins need them. The `dependencies` key can be used to group those -required plugins with the one that requires them. The plugins which are added -as `dependencies` will always be lazy-loaded and loaded when the plugin is -loaded. - - -PAQ-NVIM ~ - -- `as` ➡️ `name` -- `opt` ➡️ `lazy` -- `run` ➡️ `build` - - -⚡ PROFILING & DEBUG *lazy.nvim-🚀-usage-⚡-profiling-&-debug* - -Great care has been taken to make the startup code (`lazy.core`) as efficient -as possible. During startup, all Lua files used before `VimEnter` or -`BufReadPre` are byte-compiled and cached, similar to what impatient.nvim - does. - -My config for example loads in about `11ms` with `93` plugins. I do a lot of -lazy-loading though :) - -**lazy.nvim** comes with an advanced profiler `:Lazy profile` to help you -improve performance. The profiling view shows you why and how long it took to -load your plugins. - - -🐛 DEBUG ~ - -See an overview of active lazy-loading handlers and what’s in the module -cache. - - -📂 STRUCTURING YOUR PLUGINS*lazy.nvim-🚀-usage-📂-structuring-your-plugins* - -Some users may want to split their plugin specs in multiple files. Instead of -passing a spec table to `setup()`, you can use a Lua module. The specs from the -**module** and any top-level **sub-modules** will be merged together in the -final spec, so it is not needed to add `require` calls in your main plugin file -to the other files. - -The benefits of using this approach: - -- Simple to **add** new plugin specs. Just create a new file in your plugins module. -- Allows for **caching** of all your plugin specs. This becomes important if you have a lot of smaller plugin specs. -- Spec changes will automatically be **reloaded** when they’re updated, so the `:Lazy` UI is always up to date. - -Example: - -- `~/.config/nvim/init.lua` - ->lua - require("lazy").setup("plugins") -< - -- `~/.config/nvim/lua/plugins.lua` or `~/.config/nvim/lua/plugins/init.lua` **(this file is optional)** - ->lua - return { - "folke/neodev.nvim", - "folke/which-key.nvim", - { "folke/neoconf.nvim", cmd = "Neoconf" }, - } -< - -- Any lua file in `~/.config/nvim/lua/plugins/*.lua` will be automatically merged in the main plugin spec - -For a real-life example, you can check LazyVim - and more specifically: - -- lazyvim.plugins contains all the plugin specs that will be loaded - - -↩️ IMPORTING SPECS, CONFIG & OPTS - -As part of a spec, you can add `import` statements to import additional plugin -modules. Both of the `setup()` calls are equivalent: - ->lua - require("lazy").setup("plugins") - - -- Same as: - require("lazy").setup({{import = "plugins"}}) -< - -To import multiple modules from a plugin, add additional specs for each import. -For example, to import LazyVim core plugins and an optional plugin: - ->lua - require("lazy").setup({ - spec = { - { "LazyVim/LazyVim", import = "lazyvim.plugins" }, - { import = "lazyvim.plugins.extras.coding.copilot" }, - } - }) -< - -When you import specs, you can override them by simply adding a spec for the -same plugin to your local specs, adding any keys you want to override / merge. - -`opts`, `dependencies`, `cmd`, `event`, `ft` and `keys` are always merged with -the parent spec. Any other property will override the property from the parent -spec. - - -============================================================================== -8. 🔥 Developers *lazy.nvim-🔥-developers* - -To make it easier for users to install your plugin, you can include a package -spec in your repo. - - -BEST PRACTICES *lazy.nvim-🔥-developers-best-practices* - -- If your plugin needs `setup()`, then create a simple `lazy.lua` file like this: - >lua - return { "me/my-plugin", opts = {} } - < -- Plugins that are pure lua libraries should be lazy-loaded with `lazy = true`. - >lua - { "nvim-lua/plenary.nvim", lazy = true } - < -- Always use `opts` instead of `config` when possible. `config` is almost never - needed. -- Only use `dependencies` if a plugin needs the dep to be installed **AND** - loaded. Lua plugins/libraries are automatically loaded when they are - `require()`d, so they don’t need to be in `dependencies`. -- Inside a `build` function or `*.lua` build file, use - `coroutine.yield(msg:string|LazyMsg)` to show progress. -- Don’t change the `cwd` in your build function, since builds run in parallel - and changing the `cwd` will affect other builds. - - -BUILDING *lazy.nvim-🔥-developers-building* - -The spec **build** property can be one of the following: - -- `fun(plugin: LazyPlugin)`: a function that builds the plugin. -- `*.lua`: a Lua file that builds the plugin (like `build.lua`) -- `":Command"`: a Neovim command -- `"rockspec"`: this will run `luarocks make` in the plugin’s directory - This is automatically set by the `rockspec` package source. -- any other **string** will be run as a shell command -- a `list` of any of the above to run multiple build steps -- if no `build` is specified, but a `build.lua` file exists, that will be used instead. - -Build functions and `*.lua` files run asynchronously in a coroutine. Use -`coroutine.yield(msg:string|LazyMsg)` to show progress. - -Yielding will also schedule the next `coroutine.resume()` to run in the next -tick, so you can do long-running tasks without blocking Neovim. - ->lua - ---@class LazyMsg - ---@field msg string - ---@field level? number vim.log.levels.XXX -< - -Use `vim.log.levels.TRACE` to only show the message as a **status** message for -the task. - - - -MINIT (MINIMAL INIT) *lazy.nvim-🔥-developers-minit-(minimal-init)* - -**lazy.nvim** comes with some built-in functionality to help you create a -minimal init for your plugin. - -I mainly use this for testing and for users to create a `repro.lua`. - -When running in **headless** mode, **lazy.nvim** will log any messages to the -terminal. See `opts.headless` for more info. - -**minit** will install/load all your specs and will always run an update as -well. - - -BOOTSTRAP ~ - ->lua - -- setting this env will override all XDG paths - vim.env.LAZY_STDPATH = ".tests" - -- this will install lazy in your stdpath - load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() -< - - -TESTING WITH BUSTED ~ - -This will add `"lunarmodules/busted"`, configure `hererocks` and run `busted`. - -Below is an example of how I use **minit** to run tests with busted - in **LazyVim**. - ->lua - #!/usr/bin/env -S nvim -l - - vim.env.LAZY_STDPATH = ".tests" - load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() - - -- Setup lazy.nvim - require("lazy.minit").busted({ - spec = { - "LazyVim/starter", - "williamboman/mason-lspconfig.nvim", - "williamboman/mason.nvim", - "nvim-treesitter/nvim-treesitter", - }, - }) -< - -To use this, you can run: - ->sh - nvim -l ./tests/busted.lua tests -< - -If you want to inspect the test environment, run: - ->sh - nvim -u ./tests/busted.lua -< - - -REPRO.LUA ~ - ->lua - vim.env.LAZY_STDPATH = ".repro" - load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() - - require("lazy.minit").repro({ - spec = { - "stevearc/conform.nvim", - "nvim-neotest/nvim-nio", - }, - }) - - -- do anything else you need to do to reproduce the issue -< - -Then run it with: - ->sh - nvim -u repro.lua -< - -============================================================================== -9. Links *lazy.nvim-links* +1. Links *lazy.nvim-links* 1. *image*: https://user-images.githubusercontent.com/292349/208301737-68fb279c-ba70-43ef-a369-8c3e8367d6b1.png -2. *image*: https://user-images.githubusercontent.com/292349/208301766-5c400561-83c3-4811-9667-1ec4bb3c43b8.png -3. *image*: https://user-images.githubusercontent.com/292349/208301790-7eedbfa5-d202-4e70-852e-de68aa47233b.png Generated by panvimdoc From 894cd193e9ffc05dcb75ff0093c1b72880d5d9c1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 5 Jul 2024 14:13:57 +0000 Subject: [PATCH 222/342] chore(build): auto-generate docs --- doc/lazy.nvim.txt | 1398 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 1352 insertions(+), 46 deletions(-) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index 89fb0a4..73bd0ae 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -1,61 +1,130 @@ -*lazy.nvim.txt* For Neovim Last change: 2024 July 05 +*lazy.nvim.txt* A modern plugin manager for Neovim ============================================================================== Table of Contents *lazy.nvim-table-of-contents* - - Features |lazy.nvim-features| - - Requirements |lazy.nvim-requirements| - - Getting Started |lazy.nvim-getting-started| -1. Links |lazy.nvim-links| -Install -· -Configure -· -Docs - - - - - - - - - - - - - - +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. 📰 What’s new? *lazy.nvim-📰-what’s-new?* +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 . The GitHub `README.md` + has been updated to point to the new website. The `vimdoc` contains all the + information that is available on the website. +- **Spec Resolution & Merging**: the code that resolves a final spec from a + plugin’s fragments has been rewritten. This should be a tiny bit faster, but + more importantly, fixes some issues and is easier to maintain. +- Packages can now specify their dependencies + and configuration using one of: + - **Lazy**: `lazy.lua` file + - **Rockspec**: luarocks `*-scm-1.rockspec` file + - **Packspec**: `pkg.json` (experimental, since the format is not quite there yet) + Related _lazy.nvim_ options: + >lua + { + pkg = { + enabled = true, + cache = vim.fn.stdpath("state") .. "/lazy/pkg-cache.lua", + -- the first package source that is found for a plugin will be used. + sources = { + "lazy", + "rockspec", -- will only be used when rocks.enabled is true + "packspec", + }, + }, + rocks = { + enabled = true, + root = vim.fn.stdpath("data") .. "/lazy-rocks", + server = "https://nvim-neorocks.github.io/rocks-binaries/", + }, + } + < +- Installing neorg is now as simple as: + >lua + { "nvim-neorg/neorg", opts = {} } + < +- Packages are not limited to just Neovim plugins. You can install any + **luarocks** package, like: + >lua + { "https://github.com/lubyk/yaml" } + < + Luarocks packages without a `/lua` directory are never lazy-loaded, since + it’s just a library. +- `build` functions or `*.lua` build files (like `build.lua`) now run + asynchronously. You can use `coroutine.yield(status_msg)` to show progress. + Yielding will also schedule the next `resume` to run in the next tick, so you + can do long-running tasks without blocking Neovim. +============================================================================== +2. 🚀 Getting Started *lazy.nvim-🚀-getting-started* **lazy.nvim** is a modern plugin manager for Neovim. -FEATURES *lazy.nvim-features* +✨ FEATURES *lazy.nvim-🚀-getting-started-✨-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 support -- Statusline component to see the number of pending updates -- Automatically lazy-loads colorschemes +- 📦 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 support +- 📈 Statusline component to see the number of pending updates +- 🎨 Automatically lazy-loads colorschemes -REQUIREMENTS *lazy.nvim-requirements* +⚡️ REQUIREMENTS *lazy.nvim-🚀-getting-started-⚡️-requirements* - Neovim >= **0.8.0** (needs to be built with **LuaJIT**) - Git >= **2.19.0** (for partial clones support) @@ -64,14 +133,1251 @@ REQUIREMENTS *lazy.nvim-requirements* You can remove `rockspec` from `opts.pkg.sources` to disable this feature. -GETTING STARTED *lazy.nvim-getting-started* +============================================================================== +3. 🛠️ Installation *lazy.nvim-🛠️-installation* + +There are multiple ways to install **lazy.nvim**. The **Structured Setup** is +the recommended way, but you can also use the **Single File Setup** if you +prefer to keep everything in your `init.lua`. + +Please refer to the Configuration section for an overview of +all available options. + + + + +STRUCTURED SETUP *lazy.nvim-🛠️-installation-structured-setup* + +>lua + require("config.lazy") +< + +>lua + -- Bootstrap lazy.nvim + local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" + if not (vim.uv or vim.loop).fs_stat(lazypath) then + local lazyrepo = "https://github.com/folke/lazy.nvim.git" + local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) + if vim.v.shell_error ~= 0 then + vim.api.nvim_echo({ + { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, + { out, "WarningMsg" }, + { "\nPress any key to exit..." }, + }, true, {}) + vim.fn.getchar() + os.exit(1) + end + end + vim.opt.rtp:prepend(lazypath) + + -- Make sure to setup `mapleader` and `maplocalleader` before + -- loading lazy.nvim so that mappings are correct. + -- This is also a good place to setup other settings (vim.opt) + vim.g.mapleader = " " + vim.g.maplocalleader = "\\" + + -- Setup lazy.nvim + require("lazy").setup({ + -- highlight-start + spec = { + -- import your plugins + { import = "plugins" }, + }, + -- highlight-end + -- Configure any other settings here. See the documentation for more details. + -- colorscheme that will be used when installing plugins. + install = { colorscheme = { "habamax" } }, + -- automatically check for plugin updates + checker = { enabled = true }, + }) +< + +You can then create your plugin specs in `~/.config/nvim/lua/plugins/`. Each +file should return a table with the plugins you want to install. + +For more info see Structuring Your Plugins + + +SINGLE FILE SETUP *lazy.nvim-🛠️-installation-single-file-setup* + +>lua + -- Bootstrap lazy.nvim + local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" + if not (vim.uv or vim.loop).fs_stat(lazypath) then + local lazyrepo = "https://github.com/folke/lazy.nvim.git" + local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) + if vim.v.shell_error ~= 0 then + vim.api.nvim_echo({ + { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, + { out, "WarningMsg" }, + { "\nPress any key to exit..." }, + }, true, {}) + vim.fn.getchar() + os.exit(1) + end + end + vim.opt.rtp:prepend(lazypath) + + -- Make sure to setup `mapleader` and `maplocalleader` before + -- loading lazy.nvim so that mappings are correct. + -- This is also a good place to setup other settings (vim.opt) + vim.g.mapleader = " " + vim.g.maplocalleader = "\\" + + -- Setup lazy.nvim + require("lazy").setup({ + -- highlight-start + spec = { + -- add your plugins here + }, + -- highlight-end + -- Configure any other settings here. See the documentation for more details. + -- colorscheme that will be used when installing plugins. + install = { colorscheme = { "habamax" } }, + -- automatically check for plugin updates + checker = { enabled = true }, + }) +< -Check the documentation website for more information. ============================================================================== -1. Links *lazy.nvim-links* +4. 🔌 Plugin Spec *lazy.nvim-🔌-plugin-spec* + + +SPEC SOURCE *lazy.nvim-🔌-plugin-spec-spec-source* + + ----------------------------------------------------------------------------------- + Property Type Description + ---------- ---------- ------------------------------------------------------------- + [1] string? Short plugin url. Will be expanded using + config.git.url_format. Can also be a url or dir. + + dir string? A directory pointing to a local plugin + + url string? A custom git url where the plugin is hosted + + name string? A custom name for the plugin used for the local plugin + directory and as the display name + + dev boolean? When true, a local plugin directory will be used instead. See + config.dev + ----------------------------------------------------------------------------------- +A valid spec should define one of `[1]`, `dir` or `url`. + + +SPEC LOADING *lazy.nvim-🔌-plugin-spec-spec-loading* + + -------------------------------------------------------------------------------------------------- + Property Type Description + -------------- ------------------------- --------------------------------------------------------- + dependencies LazySpec[] A list of plugin names or plugin specs that should be + loaded when the plugin loads. Dependencies are always + lazy-loaded unless specified otherwise. When specifying a + name, make sure the plugin spec has been defined + somewhere else. + + enabled boolean? or fun():boolean When false, or if the function returns false, then this + plugin will not be included in the spec + + cond boolean? or Behaves the same as enabled, but won’t uninstall the + fun(LazyPlugin):boolean plugin when the condition is false. Useful to disable + some plugins in vscode, or firenvim for example. + + priority number? Only useful for start plugins (lazy=false) to force + loading certain plugins first. Default priority is 50. + It’s recommended to set this to a high number for + colorschemes. + -------------------------------------------------------------------------------------------------- + +SPEC SETUP *lazy.nvim-🔌-plugin-spec-spec-setup* + + -------------------------------------------------------------------------------------------------- + Property Type Description + ---------- ----------------------------- --------------------------------------------------------- + init fun(LazyPlugin) init functions are always executed during. Mostly useful + for setting vim.g.* configuration used by Vim plugins + startup + + opts table or opts should be a table (will be merged with parent + fun(LazyPlugin, opts:table) specs), return a table (replaces parent specs) or should + change a table. The table will be passed to the + Plugin.config() function. Setting this value will imply + Plugin.config() + + config fun(LazyPlugin, opts:table) config is executed when the plugin loads. The default + or true implementation will automatically run + require(MAIN).setup(opts) if opts or config = true is + set. Lazy uses several heuristics to determine the + plugin’s MAIN module automatically based on the plugin’s + name. (opts is the recommended way to configure plugins). + + main string? You can specify the main module to use for config() and + opts(), in case it can not be determined automatically. + See config() + + build fun(LazyPlugin) or string or build is executed when a plugin is installed or updated. + false or a list of build See Building for more information. + commands + -------------------------------------------------------------------------------------------------- +Always use `opts` instead of `config` when possible. `config` is almost never +needed. + + + + +SPEC LAZY LOADING *lazy.nvim-🔌-plugin-spec-spec-lazy-loading* + + -------------------------------------------------------------------------------------------------------------------- + Property Type Description + ---------- ---------------------------------------------------------------- ---------------------------------------- + lazy boolean? When true, the plugin will only be + loaded when needed. Lazy-loaded plugins + are automatically loaded when their Lua + modules are required, or when one of the + lazy-loading handlers triggers + + event string? or string[] or Lazy-load on event. Events can be + fun(self:LazyPlugin, event:string[]):string[] or specified as BufEnter or with a pattern + {event:string[]\|string, pattern?:string[]\|string} like BufEnter *.lua + + cmd string? or string[] or Lazy-load on command + fun(self:LazyPlugin, cmd:string[]):string[] + + ft string? or string[] or Lazy-load on filetype + fun(self:LazyPlugin, ft:string[]):string[] + + keys string? or string[] or LazyKeysSpec[] or Lazy-load on key mapping + fun(self:LazyPlugin, keys:string[]):(string \| LazyKeysSpec)[] + -------------------------------------------------------------------------------------------------------------------- +Refer to the Lazy Loading <./lazy_loading.md> section for more information. + + +SPEC VERSIONING *lazy.nvim-🔌-plugin-spec-spec-versioning* + + ------------------------------------------------------------------------------ + Property Type Description + ------------ -------------------- -------------------------------------------- + branch string? Branch of the repository + + tag string? Tag of the repository + + commit string? Commit of the repository + + version string? or false to Version to use from the repository. Full + override the default Semver ranges are supported + + pin boolean? When true, this plugin will not be included + in updates + + submodules boolean? When false, git submodules will not be + fetched. Defaults to true + ------------------------------------------------------------------------------ +Refer to the Versioning <./versioning.md> section for more information. + + +SPEC ADVANCED *lazy.nvim-🔌-plugin-spec-spec-advanced* + + ---------------------------------------------------------------------------------------- + Property Type Description + ---------- ---------- ------------------------------------------------------------------ + optional boolean? When a spec is tagged optional, it will only be included in the + final spec, when the same plugin has been specified at least once + somewhere else without optional. This is mainly useful for Neovim + distros, to allow setting options on plugins that may/may not be + part of the user’s plugins. + + specs LazySpec A list of plugin specs defined in the scope of the plugin. This is + mainly useful for Neovim distros, to allow setting options on + plugins that may/may not be part of the user’s plugins. When the + plugin is disabled, none of the scoped specs will be included in + the final spec. Similar to dependencies without the automatic + loading of the specs. + + module false? Do not automatically load this Lua module when it’s required + somewhere + + import string? Import the given spec module. + ---------------------------------------------------------------------------------------- + +EXAMPLES *lazy.nvim-🔌-plugin-spec-examples* + +>lua + return { + -- the colorscheme should be available when starting Neovim + { + "folke/tokyonight.nvim", + lazy = false, -- make sure we load this during startup if it is your main colorscheme + priority = 1000, -- make sure to load this before all the other start plugins + config = function() + -- load the colorscheme here + vim.cmd([[colorscheme tokyonight]]) + end, + }, + + -- I have a separate config.mappings file where I require which-key. + -- With lazy the plugin will be automatically loaded when it is required somewhere + { "folke/which-key.nvim", lazy = true }, + + { + "nvim-neorg/neorg", + -- lazy-load on filetype + ft = "norg", + -- options for neorg. This will automatically call `require("neorg").setup(opts)` + opts = { + load = { + ["core.defaults"] = {}, + }, + }, + }, + + { + "dstein64/vim-startuptime", + -- lazy-load on a command + cmd = "StartupTime", + -- init is called during startup. Configuration for vim plugins typically should be set in an init function + init = function() + vim.g.startuptime_tries = 10 + end, + }, + + { + "hrsh7th/nvim-cmp", + -- load cmp on InsertEnter + event = "InsertEnter", + -- these dependencies will only be loaded when cmp loads + -- dependencies are always lazy-loaded unless specified otherwise + dependencies = { + "hrsh7th/cmp-nvim-lsp", + "hrsh7th/cmp-buffer", + }, + config = function() + -- ... + end, + }, + + -- if some code requires a module from an unloaded plugin, it will be automatically loaded. + -- So for api plugins like devicons, we can always set lazy=true + { "nvim-tree/nvim-web-devicons", lazy = true }, + + -- you can use the VeryLazy event for things that can + -- load later and are not important for the initial UI + { "stevearc/dressing.nvim", event = "VeryLazy" }, + + { + "Wansmer/treesj", + keys = { + { "J", "TSJToggle", desc = "Join Toggle" }, + }, + opts = { use_default_keymaps = false, max_join_length = 150 }, + }, + + { + "monaqa/dial.nvim", + -- lazy-load on keys + -- mode is `n` by default. For more advanced options, check the section on key mappings + keys = { "", { "", mode = "n" } }, + }, + + -- local plugins need to be explicitly configured with dir + { dir = "~/projects/secret.nvim" }, + + -- you can use a custom url to fetch a plugin + { url = "git@github.com:folke/noice.nvim.git" }, + + -- local plugins can also be configured with the dev option. + -- This will use {config.dev.path}/noice.nvim/ instead of fetching it from GitHub + -- With the dev option, you can easily switch between the local and installed version of a plugin + { "folke/noice.nvim", dev = true }, + } +< + + +LAZY LOADING *lazy.nvim-🔌-plugin-spec-lazy-loading* + +**lazy.nvim** automagically lazy-loads Lua modules. This means that if you have +a plugin `A` that is lazy-loaded and a plugin `B` that requires a module of +plugin `A`, then plugin `A` will be loaded on demand as expected. + + +Additionally, you can also lazy-load on **events**, **commands**, **file +types** and **key mappings**. + +Plugins will be lazy-loaded when one of the following is `true`: + +- The plugin only exists as a dependency in your spec +- It has an `event`, `cmd`, `ft` or `keys` key +- `config.defaults.lazy == true` + + +🌈 COLORSCHEMES ~ + +Colorscheme plugins can be configured with `lazy=true`. The plugin will +automagically load when doing `colorscheme foobar`. + + + +⌨️ LAZY KEY MAPPINGS ~ + +The `keys` property can be a `string` or `string[]` for simple normal-mode +mappings, or it can be a `LazyKeysSpec` table with the following key-value +pairs: + +- **[1]**: (`string`) lhs **(required)** +- **[2]**: (`string|fun()`) rhs **(optional)** +- **mode**: (`string|string[]`) mode **(optional, defaults to "n")** +- **ft**: (`string|string[]`) `filetype` for buffer-local keymaps **(optional)** +- any other option valid for `vim.keymap.set` + +Key mappings will load the plugin the first time they get executed. + +When `[2]` is `nil`, then the real mapping has to be created by the `config()` +function. + +>lua + -- Example for neo-tree.nvim + { + "nvim-neo-tree/neo-tree.nvim", + keys = { + { "ft", "Neotree toggle", desc = "NeoTree" }, + }, + config = function() + require("neo-tree").setup() + end, + } +< + + +VERSIONING *lazy.nvim-🔌-plugin-spec-versioning* + +If you want to install a specific revision of a plugin, you can use `commit`, +`tag`, `branch`, `version`. + +The `version` property supports Semver ranges. + + + +EXAMPLES ~ + +- `*`: latest stable version (this excludes pre-release versions) +- `1.2.x`: any version that starts with `1.2`, such as `1.2.0`, `1.2.3`, etc. +- `^1.2.3`: any version that is compatible with `1.2.3`, such as `1.3.0`, `1.4.5`, etc., but not `2.0.0`. +- `~1.2.3`: any version that is compatible with `1.2.3`, such as `1.2.4`, `1.2.5`, but not `1.3.0`. +- `>1.2.3`: any version that is greater than `1.2.3`, such as `1.3.0`, `1.4.5`, etc. +- `>=1.2.3`: any version that is greater than or equal to `1.2.3`, such as `1.2.3`, `1.3.0`, `1.4.5`, etc. +- `<1.2.3`: any version that is less than `1.2.3`, such as `1.1.0`, `1.0.5`, etc. +- `<=1.2.3`: any version that is less than or equal to `1.2.3`, such as `1.2.3`, `1.1.0`, `1.0.5`, etc + + +============================================================================== +5. 📦 Packages *lazy.nvim-📦-packages* + +**lazy.nvim** supports three ways for plugins to define their dependencies and +configuration. + +- **Lazy**: `lazy.lua` file +- **Rockspec**: luarocks `*-scm-1.rockspec` file +- **Packspec**: `pkg.json` (experimental, since the format is not quite there yet) + +You can enable/disable package sources with `config.pkg.sources` +. The order of sources is important, as the first source that +finds a package will be used. + + + +LAZY *lazy.nvim-📦-packages-lazy* + +Using a `lazy.lua` file is the recommended way to define your plugin +dependencies and configuration. Syntax is the same as any plugin spec. + + +ROCKSPEC *lazy.nvim-📦-packages-rockspec* + +When a plugin contains a `*-1.rockspec` file, **lazy.nvim** will automatically +build the rock and its dependencies. + +A **rockspec** will only be used if one of the following is true: + +- the package does not have a `/lua` directory +- the package has a complex build step +- the package has dependencies (excluding `lua`) + + +PACKSPEC *lazy.nvim-📦-packages-packspec* + +Supports the pkg.json + format, with +a lazy extension in `lazy`. `lazy` can contain any valid lazy spec fields. They +will be added to the plugin’s spec. + + +============================================================================== +6. ⚙️ Configuration *lazy.nvim-⚙️-configuration* + +**lazy.nvim** comes with the following defaults: + +>lua + { + root = vim.fn.stdpath("data") .. "/lazy", -- directory where plugins will be installed + defaults = { + -- Set this to `true` to have all your plugins lazy-loaded by default. + -- Only do this if you know what you are doing, as it can lead to unexpected behavior. + lazy = false, -- should plugins be lazy-loaded? + -- It's recommended to leave version=false for now, since a lot the plugin that support versioning, + -- have outdated releases, which may break your Neovim install. + version = nil, -- always use the latest git commit + -- version = "*", -- try installing the latest stable version for plugins that support semver + -- default `cond` you can use to globally disable a lot of plugins + -- when running inside vscode for example + cond = nil, ---@type boolean|fun(self:LazyPlugin):boolean|nil + }, + -- leave nil when passing the spec as the first argument to setup() + spec = nil, ---@type LazySpec + local_spec = true, -- load project specific .lazy.lua spec files. They will be added at the end of the spec. + lockfile = vim.fn.stdpath("config") .. "/lazy-lock.json", -- lockfile generated after running update. + ---@type number? limit the maximum amount of concurrent tasks + concurrency = jit.os:find("Windows") and (vim.uv.available_parallelism() * 2) or nil, + git = { + -- defaults for the `Lazy log` command + -- log = { "--since=3 days ago" }, -- show commits from the last 3 days + log = { "-8" }, -- show the last 8 commits + timeout = 120, -- kill processes that take more than 2 minutes + url_format = "https://github.com/%s.git", + -- lazy.nvim requires git >=2.19.0. If you really want to use lazy with an older version, + -- then set the below to false. This should work, but is NOT supported and will + -- increase downloads a lot. + filter = true, + }, + pkg = { + enabled = true, + cache = vim.fn.stdpath("state") .. "/lazy/pkg-cache.lua", + versions = true, -- Honor versions in pkg sources + -- the first package source that is found for a plugin will be used. + sources = { + "lazy", + "rockspec", + "packspec", + }, + }, + rocks = { + root = vim.fn.stdpath("data") .. "/lazy-rocks", + server = "https://nvim-neorocks.github.io/rocks-binaries/", + }, + dev = { + ---@type string | fun(plugin: LazyPlugin): string directory where you store your local plugin projects + path = "~/projects", + ---@type string[] plugins that match these patterns will use your local versions instead of being fetched from GitHub + patterns = {}, -- For example {"folke"} + fallback = false, -- Fallback to git when local plugin doesn't exist + }, + install = { + -- install missing plugins on startup. This doesn't increase startup time. + missing = true, + -- try to load one of these colorschemes when starting an installation during startup + colorscheme = { "habamax" }, + }, + ui = { + -- a number <1 is a percentage., >1 is a fixed size + size = { width = 0.8, height = 0.8 }, + wrap = true, -- wrap the lines in the ui + -- The border to use for the UI window. Accepts same border values as |nvim_open_win()|. + border = "none", + -- The backdrop opacity. 0 is fully opaque, 100 is fully transparent. + backdrop = 60, + title = nil, ---@type string only works when border is not "none" + title_pos = "center", ---@type "center" | "left" | "right" + -- Show pills on top of the Lazy window + pills = true, ---@type boolean + icons = { + cmd = " ", + config = "", + event = " ", + favorite = " ", + ft = " ", + init = " ", + import = " ", + keys = " ", + lazy = "󰒲 ", + loaded = "●", + not_loaded = "○", + plugin = " ", + runtime = " ", + require = "󰢱 ", + source = " ", + start = " ", + task = "✔ ", + list = { + "●", + "➜", + "★", + "‒", + }, + }, + -- leave nil, to automatically select a browser depending on your OS. + -- If you want to use a specific browser, you can define it here + browser = nil, ---@type string? + throttle = 20, -- how frequently should the ui process render events + custom_keys = { + -- You can define custom key maps here. If present, the description will + -- be shown in the help menu. + -- To disable one of the defaults, set it to false. + + ["l"] = { + function(plugin) + require("lazy.util").float_term({ "lazygit", "log" }, { + cwd = plugin.dir, + }) + end, + desc = "Open lazygit log", + }, + + ["t"] = { + function(plugin) + require("lazy.util").float_term(nil, { + cwd = plugin.dir, + }) + end, + desc = "Open terminal in plugin dir", + }, + }, + }, + diff = { + -- diff command can be one of: + -- * browser: opens the github compare view. Note that this is always mapped to as well, + -- so you can have a different command for diff + -- * git: will run git diff and open a buffer with filetype git + -- * terminal_git: will open a pseudo terminal with git diff + -- * diffview.nvim: will open Diffview to show the diff + cmd = "git", + }, + checker = { + -- automatically check for plugin updates + enabled = false, + concurrency = nil, ---@type number? set to 1 to check for updates very slowly + notify = true, -- get a notification when new updates are found + frequency = 3600, -- check for updates every hour + check_pinned = false, -- check for pinned packages that can't be updated + }, + change_detection = { + -- automatically check for config file changes and reload the ui + enabled = true, + notify = true, -- get a notification when changes are found + }, + performance = { + cache = { + enabled = true, + }, + reset_packpath = true, -- reset the package path to improve startup time + rtp = { + reset = true, -- reset the runtime path to $VIMRUNTIME and your config directory + ---@type string[] + paths = {}, -- add any custom paths here that you want to includes in the rtp + ---@type string[] list any plugins you want to disable here + disabled_plugins = { + -- "gzip", + -- "matchit", + -- "matchparen", + -- "netrwPlugin", + -- "tarPlugin", + -- "tohtml", + -- "tutor", + -- "zipPlugin", + }, + }, + }, + -- lazy can generate helptags from the headings in markdown readme files, + -- so :help works even for plugins that don't have vim docs. + -- when the readme opens with :help it will be correctly displayed as markdown + readme = { + enabled = true, + root = vim.fn.stdpath("state") .. "/lazy/readme", + files = { "README.md", "lua/**/README.md" }, + -- only generate markdown helptags for plugins that dont have docs + skip_if_doc_exists = true, + }, + state = vim.fn.stdpath("state") .. "/lazy/state.json", -- state info for checker and other things + -- Enable profiling of lazy.nvim. This will add some overhead, + -- so only enable this when you are debugging lazy.nvim + profiling = { + -- Enables extra stats on the debug tab related to the loader cache. + -- Additionally gathers stats about all package.loaders + loader = false, + -- Track each new require in the Lazy profiling tab + require = false, + }, + } +< + +If you don’t want to use a Nerd Font, you can replace the icons with Unicode symbols. ~ + +>lua + { + ui = { + icons = { + cmd = "⌘", + config = "🛠", + event = "📅", + ft = "📂", + init = "⚙", + keys = "🗝", + plugin = "🔌", + runtime = "💻", + require = "🌙", + source = "📄", + start = "🚀", + task = "📌", + lazy = "💤 ", + }, + }, + } +< + + +🌈 HIGHLIGHT GROUPS *lazy.nvim-⚙️-configuration-🌈-highlight-groups* + + ----------------------------------------------------------------------- + Highlight Group Default Group Description + ----------------------- ----------------------- ----------------------- + LazyButton CursorLine + + LazyButtonActive Visual + + LazyComment Comment + + LazyCommit @variable.builtin commit ref + + LazyCommitIssue Number + + LazyCommitScope Italic conventional commit + scope + + LazyCommitType Title conventional commit + type + + LazyDimmed Conceal property + + LazyDir @markup.link directory + + LazyH1 IncSearch home button + + LazyH2 Bold titles + + LazyLocal Constant + + LazyNoCond DiagnosticWarn unloaded icon for a + plugin where cond() was + false + + LazyNormal NormalFloat + + LazyProgressDone Constant progress bar done + + LazyProgressTodo LineNr progress bar todo + + LazyProp Conceal property + + LazyReasonCmd Operator + + LazyReasonEvent Constant + + LazyReasonFt Character + + LazyReasonImport Identifier + + LazyReasonKeys Statement + + LazyReasonPlugin Special + + LazyReasonRequire @variable.parameter + + LazyReasonRuntime @macro + + LazyReasonSource Character + + LazyReasonStart @variable.member + + LazySpecial @punctuation.special + + LazyTaskError ErrorMsg task errors + + LazyTaskOutput MsgArea task output + + LazyUrl @markup.link url + + LazyValue @string value of a property + ----------------------------------------------------------------------- + +============================================================================== +7. 🚀 Usage *lazy.nvim-🚀-usage* + + +▶️ STARTUP SEQUENCE *lazy.nvim-🚀-usage-▶️-startup-sequence* + +**lazy.nvim** does **NOT** use Neovim packages and even disables plugin loading +completely (`vim.go.loadplugins = false`). It takes over the complete startup +sequence for more flexibility and better performance. + +In practice this means that step 10 of |Neovim Initialization| is done by Lazy: + +1. All the plugins’ `init()` functions are executed +2. All plugins with `lazy=false` are loaded. This includes sourcing `/plugin` and `/ftdetect` files. (`/after` will not be sourced yet) +3. All files from `/plugin` and `/ftdetect` directories in your rtp are sourced (excluding `/after`) +4. All `/after/plugin` files are sourced (this includes `/after` from plugins) + +Files from runtime directories are always sourced in alphabetical order. + + +🚀 COMMANDS *lazy.nvim-🚀-usage-🚀-commands* + +Plugins are managed with the `:Lazy` command. Open the help with `` to see +all the key mappings. + +You can press `` on a plugin to show its details. Most properties can be +hovered with `` to open links, help files, readmes, git commits and git +issues. + +Lazy can automatically check for updates in the background. This feature can be +enabled with `config.checker.enabled = true`. + +Any operation can be started from the UI, with a sub command or an API +function: + + ---------------------------------------------------------------------------------- + Command Lua Description + ------------------------- -------------------------------- ----------------------- + :Lazy build {plugins} require("lazy").build(opts) Rebuild a plugin + + :Lazy check [plugins] require("lazy").check(opts?) Check for updates and + show the log (git + fetch) + + :Lazy clean [plugins] require("lazy").clean(opts?) Clean plugins that are + no longer needed + + :Lazy clear require("lazy").clear() Clear finished tasks + + :Lazy debug require("lazy").debug() Show debug information + + :Lazy health require("lazy").health() Run :checkhealth lazy + + :Lazy help require("lazy").help() Toggle this help page + + :Lazy home require("lazy").home() Go back to plugin list + + :Lazy install [plugins] require("lazy").install(opts?) Install missing plugins + + :Lazy load {plugins} require("lazy").load(opts) Load a plugin that has + not been loaded yet. + Similar to :packadd. + Like + :Lazy load foo.nvim. + Use :Lazy! load to skip + cond checks. + + :Lazy log [plugins] require("lazy").log(opts?) Show recent updates + + :Lazy profile require("lazy").profile() Show detailed profiling + + :Lazy reload {plugins} require("lazy").reload(opts) Reload a plugin + (experimental!!) + + :Lazy restore [plugins] require("lazy").restore(opts?) Updates all plugins to + the state in the + lockfile. For a single + plugin: restore it to + the state in the + lockfile or to a given + commit under the cursor + + :Lazy sync [plugins] require("lazy").sync(opts?) Run install, clean and + update + + :Lazy update [plugins] require("lazy").update(opts?) Update plugins. This + will also update the + lockfile + ---------------------------------------------------------------------------------- +Any command can have a **bang** to make the command wait till it finished. For +example, if you want to sync lazy from the cmdline, you can use: + +>shell + nvim --headless "+Lazy! sync" +qa +< + +`opts` is a table with the following key-values: + +- **wait**: when true, then the call will wait till the operation completed +- **show**: when false, the UI will not be shown +- **plugins**: a list of plugin names to run the operation on +- **concurrency**: limit the `number` of concurrently running tasks + +Stats API (`require("lazy").stats()`): + +>lua + { + -- startuptime in milliseconds till UIEnter + startuptime = 0, + -- when true, startuptime is the accurate cputime for the Neovim process. (Linux & macOS) + -- this is more accurate than `nvim --startuptime`, and as such will be slightly higher + -- when false, startuptime is calculated based on a delta with a timestamp when lazy started. + real_cputime = false, + count = 0, -- total number of plugins + loaded = 0, -- number of loaded plugins + ---@type table + times = {}, + } +< + +**lazy.nvim** provides a statusline component that you can use to show the +number of pending updates. Make sure to enable `config.checker.enabled = true` +to make this work. + +Example of configuring lualine.nvim ~ + +>lua + require("lualine").setup({ + sections = { + lualine_x = { + { + require("lazy.status").updates, + cond = require("lazy.status").has_updates, + color = { fg = "#ff9e64" }, + }, + }, + }, + }) +< + + +📆 USER EVENTS *lazy.nvim-🚀-usage-📆-user-events* + +The following user events will be triggered: + +- **LazyDone**: when lazy has finished starting up and loaded your config +- **LazySync**: after running sync +- **LazyInstall**: after an install +- **LazyUpdate**: after an update +- **LazyClean**: after a clean +- **LazyCheck**: after checking for updates +- **LazyLog**: after running log +- **LazyLoad**: after loading a plugin. The `data` attribute will contain the plugin name. +- **LazySyncPre**: before running sync +- **LazyInstallPre**: before an install +- **LazyUpdatePre**: before an update +- **LazyCleanPre**: before a clean +- **LazyCheckPre**: before checking for updates +- **LazyLogPre**: before running log +- **LazyReload**: triggered by change detection after reloading plugin specs +- **VeryLazy**: triggered after `LazyDone` and processing `VimEnter` auto commands +- **LazyVimStarted**: triggered after `UIEnter` when `require("lazy").stats().startuptime` has been calculated. + Useful to update the startuptime on your dashboard. + + +❌ UNINSTALLING *lazy.nvim-🚀-usage-❌-uninstalling* + +To uninstall **lazy.nvim**, you need to remove the following files and +directories: + +- **data**: `~/.local/share/nvim/lazy` +- **state**: `~/.local/state/nvim/lazy` +- **lockfile**: `~/.config/nvim/lazy-lock.json` + + + Paths can differ if you changed `XDG` environment variables. + +🔒 LOCKFILE *lazy.nvim-🚀-usage-🔒-lockfile* + +After every **update**, the local lockfile (`lazy-lock.json`) is updated with +the installed revisions. It is recommended to have this file under version +control. + +If you use your Neovim config on multiple machines, using the lockfile, you can +ensure that the same version of every plugin is installed. + +If you are on another machine, you can do `:Lazy restore`, to update all your +plugins to the version from the lockfile. + + +📦 MIGRATION GUIDE *lazy.nvim-🚀-usage-📦-migration-guide* + + +PACKER.NVIM ~ + +- `setup` ➡️ `init` +- `requires` ➡️ `dependencies` +- `as` ➡️ `name` +- `opt` ➡️ `lazy` +- `run` ➡️ `build` +- `lock` ➡️ `pin` +- `disable=true` ➡️ `enabled = false` +- `tag='*'` ➡️ `version="*"` +- `after` is **not needed** for most use-cases. Use `dependencies` otherwise. +- `wants` is **not needed** for most use-cases. Use `dependencies` otherwise. +- `config` don’t support string type, use `fun(LazyPlugin)` instead. +- `module` is auto-loaded. No need to specify +- `keys` spec is |lazy.nvim-different| +- `rtp` can be accomplished with: + +>lua + config = function(plugin) + vim.opt.rtp:append(plugin.dir .. "/custom-rtp") + end +< + +With packer `wants`, `requires` and `after` can be used to manage dependencies. +With lazy, this isn’t needed for most of the Lua dependencies. They can be +installed just like normal plugins (even with `lazy=true`) and will be loaded +when other plugins need them. The `dependencies` key can be used to group those +required plugins with the one that requires them. The plugins which are added +as `dependencies` will always be lazy-loaded and loaded when the plugin is +loaded. + + +PAQ-NVIM ~ + +- `as` ➡️ `name` +- `opt` ➡️ `lazy` +- `run` ➡️ `build` + + +⚡ PROFILING & DEBUG *lazy.nvim-🚀-usage-⚡-profiling-&-debug* + +Great care has been taken to make the startup code (`lazy.core`) as efficient +as possible. During startup, all Lua files used before `VimEnter` or +`BufReadPre` are byte-compiled and cached, similar to what impatient.nvim + does. + +My config for example loads in about `11ms` with `93` plugins. I do a lot of +lazy-loading though :) + +**lazy.nvim** comes with an advanced profiler `:Lazy profile` to help you +improve performance. The profiling view shows you why and how long it took to +load your plugins. + + +🐛 DEBUG ~ + +See an overview of active lazy-loading handlers and what’s in the module +cache. + + +📂 STRUCTURING YOUR PLUGINS*lazy.nvim-🚀-usage-📂-structuring-your-plugins* + +Some users may want to split their plugin specs in multiple files. Instead of +passing a spec table to `setup()`, you can use a Lua module. The specs from the +**module** and any top-level **sub-modules** will be merged together in the +final spec, so it is not needed to add `require` calls in your main plugin file +to the other files. + +The benefits of using this approach: + +- Simple to **add** new plugin specs. Just create a new file in your plugins module. +- Allows for **caching** of all your plugin specs. This becomes important if you have a lot of smaller plugin specs. +- Spec changes will automatically be **reloaded** when they’re updated, so the `:Lazy` UI is always up to date. + +Example: + +- `~/.config/nvim/init.lua` + +>lua + require("lazy").setup("plugins") +< + +- `~/.config/nvim/lua/plugins.lua` or `~/.config/nvim/lua/plugins/init.lua` **(this file is optional)** + +>lua + return { + "folke/neodev.nvim", + "folke/which-key.nvim", + { "folke/neoconf.nvim", cmd = "Neoconf" }, + } +< + +- Any lua file in `~/.config/nvim/lua/plugins/*.lua` will be automatically merged in the main plugin spec + +For a real-life example, you can check LazyVim + and more specifically: + +- lazyvim.plugins contains all the plugin specs that will be loaded + + +↩️ IMPORTING SPECS, CONFIG & OPTS + +As part of a spec, you can add `import` statements to import additional plugin +modules. Both of the `setup()` calls are equivalent: + +>lua + require("lazy").setup("plugins") + + -- Same as: + require("lazy").setup({{import = "plugins"}}) +< + +To import multiple modules from a plugin, add additional specs for each import. +For example, to import LazyVim core plugins and an optional plugin: + +>lua + require("lazy").setup({ + spec = { + { "LazyVim/LazyVim", import = "lazyvim.plugins" }, + { import = "lazyvim.plugins.extras.coding.copilot" }, + } + }) +< + +When you import specs, you can override them by simply adding a spec for the +same plugin to your local specs, adding any keys you want to override / merge. + +`opts`, `dependencies`, `cmd`, `event`, `ft` and `keys` are always merged with +the parent spec. Any other property will override the property from the parent +spec. + + +============================================================================== +8. 🔥 Developers *lazy.nvim-🔥-developers* + +To make it easier for users to install your plugin, you can include a package +spec in your repo. + + +BEST PRACTICES *lazy.nvim-🔥-developers-best-practices* + +- If your plugin needs `setup()`, then create a simple `lazy.lua` file like this: + >lua + return { "me/my-plugin", opts = {} } + < +- Plugins that are pure lua libraries should be lazy-loaded with `lazy = true`. + >lua + { "nvim-lua/plenary.nvim", lazy = true } + < +- Always use `opts` instead of `config` when possible. `config` is almost never + needed. +- Only use `dependencies` if a plugin needs the dep to be installed **AND** + loaded. Lua plugins/libraries are automatically loaded when they are + `require()`d, so they don’t need to be in `dependencies`. +- Inside a `build` function or `*.lua` build file, use + `coroutine.yield(msg:string|LazyMsg)` to show progress. +- Don’t change the `cwd` in your build function, since builds run in parallel + and changing the `cwd` will affect other builds. + + +BUILDING *lazy.nvim-🔥-developers-building* + +The spec **build** property can be one of the following: + +- `fun(plugin: LazyPlugin)`: a function that builds the plugin. +- `*.lua`: a Lua file that builds the plugin (like `build.lua`) +- `":Command"`: a Neovim command +- `"rockspec"`: this will run `luarocks make` in the plugin’s directory + This is automatically set by the `rockspec` package source. +- any other **string** will be run as a shell command +- a `list` of any of the above to run multiple build steps +- if no `build` is specified, but a `build.lua` file exists, that will be used instead. + +Build functions and `*.lua` files run asynchronously in a coroutine. Use +`coroutine.yield(msg:string|LazyMsg)` to show progress. + +Yielding will also schedule the next `coroutine.resume()` to run in the next +tick, so you can do long-running tasks without blocking Neovim. + +>lua + ---@class LazyMsg + ---@field msg string + ---@field level? number vim.log.levels.XXX +< + +Use `vim.log.levels.TRACE` to only show the message as a **status** message for +the task. + + + +MINIT (MINIMAL INIT) *lazy.nvim-🔥-developers-minit-(minimal-init)* + +**lazy.nvim** comes with some built-in functionality to help you create a +minimal init for your plugin. + +I mainly use this for testing and for users to create a `repro.lua`. + +When running in **headless** mode, **lazy.nvim** will log any messages to the +terminal. See `opts.headless` for more info. + +**minit** will install/load all your specs and will always run an update as +well. + + +BOOTSTRAP ~ + +>lua + -- setting this env will override all XDG paths + vim.env.LAZY_STDPATH = ".tests" + -- this will install lazy in your stdpath + load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() +< + + +TESTING WITH BUSTED ~ + +This will add `"lunarmodules/busted"`, configure `hererocks` and run `busted`. + +Below is an example of how I use **minit** to run tests with busted + in **LazyVim**. + +>lua + #!/usr/bin/env -S nvim -l + + vim.env.LAZY_STDPATH = ".tests" + load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() + + -- Setup lazy.nvim + require("lazy.minit").busted({ + spec = { + "LazyVim/starter", + "williamboman/mason-lspconfig.nvim", + "williamboman/mason.nvim", + "nvim-treesitter/nvim-treesitter", + }, + }) +< + +To use this, you can run: + +>sh + nvim -l ./tests/busted.lua tests +< + +If you want to inspect the test environment, run: + +>sh + nvim -u ./tests/busted.lua +< + + +REPRO.LUA ~ + +>lua + vim.env.LAZY_STDPATH = ".repro" + load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() + + require("lazy.minit").repro({ + spec = { + "stevearc/conform.nvim", + "nvim-neotest/nvim-nio", + }, + }) + + -- do anything else you need to do to reproduce the issue +< + +Then run it with: + +>sh + nvim -u repro.lua +< + +============================================================================== +9. Links *lazy.nvim-links* 1. *image*: https://user-images.githubusercontent.com/292349/208301737-68fb279c-ba70-43ef-a369-8c3e8367d6b1.png +2. *image*: https://user-images.githubusercontent.com/292349/208301766-5c400561-83c3-4811-9667-1ec4bb3c43b8.png +3. *image*: https://user-images.githubusercontent.com/292349/208301790-7eedbfa5-d202-4e70-852e-de68aa47233b.png Generated by panvimdoc From 538f060e42d60dedf058d478cc410c6b193bf188 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Fri, 5 Jul 2024 19:02:48 +0200 Subject: [PATCH 223/342] ci: update --- .github/ISSUE_TEMPLATE/bug_report.yml | 1 - .github/ISSUE_TEMPLATE/config.yml | 5 +++++ .github/PULL_REQUEST_TEMPLATE.md | 12 ++++++++++++ 3 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 .github/ISSUE_TEMPLATE/config.yml create mode 100644 .github/PULL_REQUEST_TEMPLATE.md diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 7f1e1ed..4a77601 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -75,7 +75,6 @@ body: -- install plugins local plugins = { "folke/tokyonight.nvim", - -- add any other plugins here } require("lazy").setup(plugins, { diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..d6851ed --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,5 @@ +blank_issues_enabled: false +contact_links: + - name: Ask a question or start a discussion + url: https://github.com/folke/lazy.nvim/discussions + about: Use Github discussions instead diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..c064b8c --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,12 @@ +## What is this PR for? + + + +## Does this PR fix an existing issue? + + + From 94b6b6703129bb659220720515655d2eaf36cbc3 Mon Sep 17 00:00:00 2001 From: folke Date: Fri, 5 Jul 2024 17:03:29 +0000 Subject: [PATCH 224/342] chore(build): auto-generate docs --- doc/lazy.nvim.txt | 1398 ++------------------------------------------- 1 file changed, 46 insertions(+), 1352 deletions(-) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index 73bd0ae..89fb0a4 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -1,130 +1,61 @@ -*lazy.nvim.txt* A modern plugin manager for Neovim +*lazy.nvim.txt* For Neovim Last change: 2024 July 05 ============================================================================== 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. 📰 What’s new? *lazy.nvim-📰-what’s-new?* + - Features |lazy.nvim-features| + - Requirements |lazy.nvim-requirements| + - Getting Started |lazy.nvim-getting-started| +1. Links |lazy.nvim-links| +Install +· +Configure +· +Docs + + + + + + + + + + + + + + -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 . The GitHub `README.md` - has been updated to point to the new website. The `vimdoc` contains all the - information that is available on the website. -- **Spec Resolution & Merging**: the code that resolves a final spec from a - plugin’s fragments has been rewritten. This should be a tiny bit faster, but - more importantly, fixes some issues and is easier to maintain. -- Packages can now specify their dependencies - and configuration using one of: - - **Lazy**: `lazy.lua` file - - **Rockspec**: luarocks `*-scm-1.rockspec` file - - **Packspec**: `pkg.json` (experimental, since the format is not quite there yet) - Related _lazy.nvim_ options: - >lua - { - pkg = { - enabled = true, - cache = vim.fn.stdpath("state") .. "/lazy/pkg-cache.lua", - -- the first package source that is found for a plugin will be used. - sources = { - "lazy", - "rockspec", -- will only be used when rocks.enabled is true - "packspec", - }, - }, - rocks = { - enabled = true, - root = vim.fn.stdpath("data") .. "/lazy-rocks", - server = "https://nvim-neorocks.github.io/rocks-binaries/", - }, - } - < -- Installing neorg is now as simple as: - >lua - { "nvim-neorg/neorg", opts = {} } - < -- Packages are not limited to just Neovim plugins. You can install any - **luarocks** package, like: - >lua - { "https://github.com/lubyk/yaml" } - < - Luarocks packages without a `/lua` directory are never lazy-loaded, since - it’s just a library. -- `build` functions or `*.lua` build files (like `build.lua`) now run - asynchronously. You can use `coroutine.yield(status_msg)` to show progress. - Yielding will also schedule the next `resume` to run in the next tick, so you - can do long-running tasks without blocking Neovim. -============================================================================== -2. 🚀 Getting Started *lazy.nvim-🚀-getting-started* **lazy.nvim** is a modern plugin manager for Neovim. -✨ FEATURES *lazy.nvim-🚀-getting-started-✨-features* +FEATURES *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 support -- 📈 Statusline component to see the number of pending updates -- 🎨 Automatically lazy-loads colorschemes +- 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 support +- Statusline component to see the number of pending updates +- Automatically lazy-loads colorschemes -⚡️ REQUIREMENTS *lazy.nvim-🚀-getting-started-⚡️-requirements* +REQUIREMENTS *lazy.nvim-requirements* - Neovim >= **0.8.0** (needs to be built with **LuaJIT**) - Git >= **2.19.0** (for partial clones support) @@ -133,1251 +64,14 @@ Table of Contents *lazy.nvim-table-of-contents* You can remove `rockspec` from `opts.pkg.sources` to disable this feature. -============================================================================== -3. 🛠️ Installation *lazy.nvim-🛠️-installation* - -There are multiple ways to install **lazy.nvim**. The **Structured Setup** is -the recommended way, but you can also use the **Single File Setup** if you -prefer to keep everything in your `init.lua`. - -Please refer to the Configuration section for an overview of -all available options. - - - - -STRUCTURED SETUP *lazy.nvim-🛠️-installation-structured-setup* - ->lua - require("config.lazy") -< - ->lua - -- Bootstrap lazy.nvim - local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" - if not (vim.uv or vim.loop).fs_stat(lazypath) then - local lazyrepo = "https://github.com/folke/lazy.nvim.git" - local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) - if vim.v.shell_error ~= 0 then - vim.api.nvim_echo({ - { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, - { out, "WarningMsg" }, - { "\nPress any key to exit..." }, - }, true, {}) - vim.fn.getchar() - os.exit(1) - end - end - vim.opt.rtp:prepend(lazypath) - - -- Make sure to setup `mapleader` and `maplocalleader` before - -- loading lazy.nvim so that mappings are correct. - -- This is also a good place to setup other settings (vim.opt) - vim.g.mapleader = " " - vim.g.maplocalleader = "\\" - - -- Setup lazy.nvim - require("lazy").setup({ - -- highlight-start - spec = { - -- import your plugins - { import = "plugins" }, - }, - -- highlight-end - -- Configure any other settings here. See the documentation for more details. - -- colorscheme that will be used when installing plugins. - install = { colorscheme = { "habamax" } }, - -- automatically check for plugin updates - checker = { enabled = true }, - }) -< - -You can then create your plugin specs in `~/.config/nvim/lua/plugins/`. Each -file should return a table with the plugins you want to install. - -For more info see Structuring Your Plugins - - -SINGLE FILE SETUP *lazy.nvim-🛠️-installation-single-file-setup* - ->lua - -- Bootstrap lazy.nvim - local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" - if not (vim.uv or vim.loop).fs_stat(lazypath) then - local lazyrepo = "https://github.com/folke/lazy.nvim.git" - local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) - if vim.v.shell_error ~= 0 then - vim.api.nvim_echo({ - { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, - { out, "WarningMsg" }, - { "\nPress any key to exit..." }, - }, true, {}) - vim.fn.getchar() - os.exit(1) - end - end - vim.opt.rtp:prepend(lazypath) - - -- Make sure to setup `mapleader` and `maplocalleader` before - -- loading lazy.nvim so that mappings are correct. - -- This is also a good place to setup other settings (vim.opt) - vim.g.mapleader = " " - vim.g.maplocalleader = "\\" - - -- Setup lazy.nvim - require("lazy").setup({ - -- highlight-start - spec = { - -- add your plugins here - }, - -- highlight-end - -- Configure any other settings here. See the documentation for more details. - -- colorscheme that will be used when installing plugins. - install = { colorscheme = { "habamax" } }, - -- automatically check for plugin updates - checker = { enabled = true }, - }) -< +GETTING STARTED *lazy.nvim-getting-started* +Check the documentation website for more information. ============================================================================== -4. 🔌 Plugin Spec *lazy.nvim-🔌-plugin-spec* - - -SPEC SOURCE *lazy.nvim-🔌-plugin-spec-spec-source* - - ----------------------------------------------------------------------------------- - Property Type Description - ---------- ---------- ------------------------------------------------------------- - [1] string? Short plugin url. Will be expanded using - config.git.url_format. Can also be a url or dir. - - dir string? A directory pointing to a local plugin - - url string? A custom git url where the plugin is hosted - - name string? A custom name for the plugin used for the local plugin - directory and as the display name - - dev boolean? When true, a local plugin directory will be used instead. See - config.dev - ----------------------------------------------------------------------------------- -A valid spec should define one of `[1]`, `dir` or `url`. - - -SPEC LOADING *lazy.nvim-🔌-plugin-spec-spec-loading* - - -------------------------------------------------------------------------------------------------- - Property Type Description - -------------- ------------------------- --------------------------------------------------------- - dependencies LazySpec[] A list of plugin names or plugin specs that should be - loaded when the plugin loads. Dependencies are always - lazy-loaded unless specified otherwise. When specifying a - name, make sure the plugin spec has been defined - somewhere else. - - enabled boolean? or fun():boolean When false, or if the function returns false, then this - plugin will not be included in the spec - - cond boolean? or Behaves the same as enabled, but won’t uninstall the - fun(LazyPlugin):boolean plugin when the condition is false. Useful to disable - some plugins in vscode, or firenvim for example. - - priority number? Only useful for start plugins (lazy=false) to force - loading certain plugins first. Default priority is 50. - It’s recommended to set this to a high number for - colorschemes. - -------------------------------------------------------------------------------------------------- - -SPEC SETUP *lazy.nvim-🔌-plugin-spec-spec-setup* - - -------------------------------------------------------------------------------------------------- - Property Type Description - ---------- ----------------------------- --------------------------------------------------------- - init fun(LazyPlugin) init functions are always executed during. Mostly useful - for setting vim.g.* configuration used by Vim plugins - startup - - opts table or opts should be a table (will be merged with parent - fun(LazyPlugin, opts:table) specs), return a table (replaces parent specs) or should - change a table. The table will be passed to the - Plugin.config() function. Setting this value will imply - Plugin.config() - - config fun(LazyPlugin, opts:table) config is executed when the plugin loads. The default - or true implementation will automatically run - require(MAIN).setup(opts) if opts or config = true is - set. Lazy uses several heuristics to determine the - plugin’s MAIN module automatically based on the plugin’s - name. (opts is the recommended way to configure plugins). - - main string? You can specify the main module to use for config() and - opts(), in case it can not be determined automatically. - See config() - - build fun(LazyPlugin) or string or build is executed when a plugin is installed or updated. - false or a list of build See Building for more information. - commands - -------------------------------------------------------------------------------------------------- -Always use `opts` instead of `config` when possible. `config` is almost never -needed. - - - - -SPEC LAZY LOADING *lazy.nvim-🔌-plugin-spec-spec-lazy-loading* - - -------------------------------------------------------------------------------------------------------------------- - Property Type Description - ---------- ---------------------------------------------------------------- ---------------------------------------- - lazy boolean? When true, the plugin will only be - loaded when needed. Lazy-loaded plugins - are automatically loaded when their Lua - modules are required, or when one of the - lazy-loading handlers triggers - - event string? or string[] or Lazy-load on event. Events can be - fun(self:LazyPlugin, event:string[]):string[] or specified as BufEnter or with a pattern - {event:string[]\|string, pattern?:string[]\|string} like BufEnter *.lua - - cmd string? or string[] or Lazy-load on command - fun(self:LazyPlugin, cmd:string[]):string[] - - ft string? or string[] or Lazy-load on filetype - fun(self:LazyPlugin, ft:string[]):string[] - - keys string? or string[] or LazyKeysSpec[] or Lazy-load on key mapping - fun(self:LazyPlugin, keys:string[]):(string \| LazyKeysSpec)[] - -------------------------------------------------------------------------------------------------------------------- -Refer to the Lazy Loading <./lazy_loading.md> section for more information. - - -SPEC VERSIONING *lazy.nvim-🔌-plugin-spec-spec-versioning* - - ------------------------------------------------------------------------------ - Property Type Description - ------------ -------------------- -------------------------------------------- - branch string? Branch of the repository - - tag string? Tag of the repository - - commit string? Commit of the repository - - version string? or false to Version to use from the repository. Full - override the default Semver ranges are supported - - pin boolean? When true, this plugin will not be included - in updates - - submodules boolean? When false, git submodules will not be - fetched. Defaults to true - ------------------------------------------------------------------------------ -Refer to the Versioning <./versioning.md> section for more information. - - -SPEC ADVANCED *lazy.nvim-🔌-plugin-spec-spec-advanced* - - ---------------------------------------------------------------------------------------- - Property Type Description - ---------- ---------- ------------------------------------------------------------------ - optional boolean? When a spec is tagged optional, it will only be included in the - final spec, when the same plugin has been specified at least once - somewhere else without optional. This is mainly useful for Neovim - distros, to allow setting options on plugins that may/may not be - part of the user’s plugins. - - specs LazySpec A list of plugin specs defined in the scope of the plugin. This is - mainly useful for Neovim distros, to allow setting options on - plugins that may/may not be part of the user’s plugins. When the - plugin is disabled, none of the scoped specs will be included in - the final spec. Similar to dependencies without the automatic - loading of the specs. - - module false? Do not automatically load this Lua module when it’s required - somewhere - - import string? Import the given spec module. - ---------------------------------------------------------------------------------------- - -EXAMPLES *lazy.nvim-🔌-plugin-spec-examples* - ->lua - return { - -- the colorscheme should be available when starting Neovim - { - "folke/tokyonight.nvim", - lazy = false, -- make sure we load this during startup if it is your main colorscheme - priority = 1000, -- make sure to load this before all the other start plugins - config = function() - -- load the colorscheme here - vim.cmd([[colorscheme tokyonight]]) - end, - }, - - -- I have a separate config.mappings file where I require which-key. - -- With lazy the plugin will be automatically loaded when it is required somewhere - { "folke/which-key.nvim", lazy = true }, - - { - "nvim-neorg/neorg", - -- lazy-load on filetype - ft = "norg", - -- options for neorg. This will automatically call `require("neorg").setup(opts)` - opts = { - load = { - ["core.defaults"] = {}, - }, - }, - }, - - { - "dstein64/vim-startuptime", - -- lazy-load on a command - cmd = "StartupTime", - -- init is called during startup. Configuration for vim plugins typically should be set in an init function - init = function() - vim.g.startuptime_tries = 10 - end, - }, - - { - "hrsh7th/nvim-cmp", - -- load cmp on InsertEnter - event = "InsertEnter", - -- these dependencies will only be loaded when cmp loads - -- dependencies are always lazy-loaded unless specified otherwise - dependencies = { - "hrsh7th/cmp-nvim-lsp", - "hrsh7th/cmp-buffer", - }, - config = function() - -- ... - end, - }, - - -- if some code requires a module from an unloaded plugin, it will be automatically loaded. - -- So for api plugins like devicons, we can always set lazy=true - { "nvim-tree/nvim-web-devicons", lazy = true }, - - -- you can use the VeryLazy event for things that can - -- load later and are not important for the initial UI - { "stevearc/dressing.nvim", event = "VeryLazy" }, - - { - "Wansmer/treesj", - keys = { - { "J", "TSJToggle", desc = "Join Toggle" }, - }, - opts = { use_default_keymaps = false, max_join_length = 150 }, - }, - - { - "monaqa/dial.nvim", - -- lazy-load on keys - -- mode is `n` by default. For more advanced options, check the section on key mappings - keys = { "", { "", mode = "n" } }, - }, - - -- local plugins need to be explicitly configured with dir - { dir = "~/projects/secret.nvim" }, - - -- you can use a custom url to fetch a plugin - { url = "git@github.com:folke/noice.nvim.git" }, - - -- local plugins can also be configured with the dev option. - -- This will use {config.dev.path}/noice.nvim/ instead of fetching it from GitHub - -- With the dev option, you can easily switch between the local and installed version of a plugin - { "folke/noice.nvim", dev = true }, - } -< - - -LAZY LOADING *lazy.nvim-🔌-plugin-spec-lazy-loading* - -**lazy.nvim** automagically lazy-loads Lua modules. This means that if you have -a plugin `A` that is lazy-loaded and a plugin `B` that requires a module of -plugin `A`, then plugin `A` will be loaded on demand as expected. - - -Additionally, you can also lazy-load on **events**, **commands**, **file -types** and **key mappings**. - -Plugins will be lazy-loaded when one of the following is `true`: - -- The plugin only exists as a dependency in your spec -- It has an `event`, `cmd`, `ft` or `keys` key -- `config.defaults.lazy == true` - - -🌈 COLORSCHEMES ~ - -Colorscheme plugins can be configured with `lazy=true`. The plugin will -automagically load when doing `colorscheme foobar`. - - - -⌨️ LAZY KEY MAPPINGS ~ - -The `keys` property can be a `string` or `string[]` for simple normal-mode -mappings, or it can be a `LazyKeysSpec` table with the following key-value -pairs: - -- **[1]**: (`string`) lhs **(required)** -- **[2]**: (`string|fun()`) rhs **(optional)** -- **mode**: (`string|string[]`) mode **(optional, defaults to "n")** -- **ft**: (`string|string[]`) `filetype` for buffer-local keymaps **(optional)** -- any other option valid for `vim.keymap.set` - -Key mappings will load the plugin the first time they get executed. - -When `[2]` is `nil`, then the real mapping has to be created by the `config()` -function. - ->lua - -- Example for neo-tree.nvim - { - "nvim-neo-tree/neo-tree.nvim", - keys = { - { "ft", "Neotree toggle", desc = "NeoTree" }, - }, - config = function() - require("neo-tree").setup() - end, - } -< - - -VERSIONING *lazy.nvim-🔌-plugin-spec-versioning* - -If you want to install a specific revision of a plugin, you can use `commit`, -`tag`, `branch`, `version`. - -The `version` property supports Semver ranges. - - - -EXAMPLES ~ - -- `*`: latest stable version (this excludes pre-release versions) -- `1.2.x`: any version that starts with `1.2`, such as `1.2.0`, `1.2.3`, etc. -- `^1.2.3`: any version that is compatible with `1.2.3`, such as `1.3.0`, `1.4.5`, etc., but not `2.0.0`. -- `~1.2.3`: any version that is compatible with `1.2.3`, such as `1.2.4`, `1.2.5`, but not `1.3.0`. -- `>1.2.3`: any version that is greater than `1.2.3`, such as `1.3.0`, `1.4.5`, etc. -- `>=1.2.3`: any version that is greater than or equal to `1.2.3`, such as `1.2.3`, `1.3.0`, `1.4.5`, etc. -- `<1.2.3`: any version that is less than `1.2.3`, such as `1.1.0`, `1.0.5`, etc. -- `<=1.2.3`: any version that is less than or equal to `1.2.3`, such as `1.2.3`, `1.1.0`, `1.0.5`, etc - - -============================================================================== -5. 📦 Packages *lazy.nvim-📦-packages* - -**lazy.nvim** supports three ways for plugins to define their dependencies and -configuration. - -- **Lazy**: `lazy.lua` file -- **Rockspec**: luarocks `*-scm-1.rockspec` file -- **Packspec**: `pkg.json` (experimental, since the format is not quite there yet) - -You can enable/disable package sources with `config.pkg.sources` -. The order of sources is important, as the first source that -finds a package will be used. - - - -LAZY *lazy.nvim-📦-packages-lazy* - -Using a `lazy.lua` file is the recommended way to define your plugin -dependencies and configuration. Syntax is the same as any plugin spec. - - -ROCKSPEC *lazy.nvim-📦-packages-rockspec* - -When a plugin contains a `*-1.rockspec` file, **lazy.nvim** will automatically -build the rock and its dependencies. - -A **rockspec** will only be used if one of the following is true: - -- the package does not have a `/lua` directory -- the package has a complex build step -- the package has dependencies (excluding `lua`) - - -PACKSPEC *lazy.nvim-📦-packages-packspec* - -Supports the pkg.json - format, with -a lazy extension in `lazy`. `lazy` can contain any valid lazy spec fields. They -will be added to the plugin’s spec. - - -============================================================================== -6. ⚙️ Configuration *lazy.nvim-⚙️-configuration* - -**lazy.nvim** comes with the following defaults: - ->lua - { - root = vim.fn.stdpath("data") .. "/lazy", -- directory where plugins will be installed - defaults = { - -- Set this to `true` to have all your plugins lazy-loaded by default. - -- Only do this if you know what you are doing, as it can lead to unexpected behavior. - lazy = false, -- should plugins be lazy-loaded? - -- It's recommended to leave version=false for now, since a lot the plugin that support versioning, - -- have outdated releases, which may break your Neovim install. - version = nil, -- always use the latest git commit - -- version = "*", -- try installing the latest stable version for plugins that support semver - -- default `cond` you can use to globally disable a lot of plugins - -- when running inside vscode for example - cond = nil, ---@type boolean|fun(self:LazyPlugin):boolean|nil - }, - -- leave nil when passing the spec as the first argument to setup() - spec = nil, ---@type LazySpec - local_spec = true, -- load project specific .lazy.lua spec files. They will be added at the end of the spec. - lockfile = vim.fn.stdpath("config") .. "/lazy-lock.json", -- lockfile generated after running update. - ---@type number? limit the maximum amount of concurrent tasks - concurrency = jit.os:find("Windows") and (vim.uv.available_parallelism() * 2) or nil, - git = { - -- defaults for the `Lazy log` command - -- log = { "--since=3 days ago" }, -- show commits from the last 3 days - log = { "-8" }, -- show the last 8 commits - timeout = 120, -- kill processes that take more than 2 minutes - url_format = "https://github.com/%s.git", - -- lazy.nvim requires git >=2.19.0. If you really want to use lazy with an older version, - -- then set the below to false. This should work, but is NOT supported and will - -- increase downloads a lot. - filter = true, - }, - pkg = { - enabled = true, - cache = vim.fn.stdpath("state") .. "/lazy/pkg-cache.lua", - versions = true, -- Honor versions in pkg sources - -- the first package source that is found for a plugin will be used. - sources = { - "lazy", - "rockspec", - "packspec", - }, - }, - rocks = { - root = vim.fn.stdpath("data") .. "/lazy-rocks", - server = "https://nvim-neorocks.github.io/rocks-binaries/", - }, - dev = { - ---@type string | fun(plugin: LazyPlugin): string directory where you store your local plugin projects - path = "~/projects", - ---@type string[] plugins that match these patterns will use your local versions instead of being fetched from GitHub - patterns = {}, -- For example {"folke"} - fallback = false, -- Fallback to git when local plugin doesn't exist - }, - install = { - -- install missing plugins on startup. This doesn't increase startup time. - missing = true, - -- try to load one of these colorschemes when starting an installation during startup - colorscheme = { "habamax" }, - }, - ui = { - -- a number <1 is a percentage., >1 is a fixed size - size = { width = 0.8, height = 0.8 }, - wrap = true, -- wrap the lines in the ui - -- The border to use for the UI window. Accepts same border values as |nvim_open_win()|. - border = "none", - -- The backdrop opacity. 0 is fully opaque, 100 is fully transparent. - backdrop = 60, - title = nil, ---@type string only works when border is not "none" - title_pos = "center", ---@type "center" | "left" | "right" - -- Show pills on top of the Lazy window - pills = true, ---@type boolean - icons = { - cmd = " ", - config = "", - event = " ", - favorite = " ", - ft = " ", - init = " ", - import = " ", - keys = " ", - lazy = "󰒲 ", - loaded = "●", - not_loaded = "○", - plugin = " ", - runtime = " ", - require = "󰢱 ", - source = " ", - start = " ", - task = "✔ ", - list = { - "●", - "➜", - "★", - "‒", - }, - }, - -- leave nil, to automatically select a browser depending on your OS. - -- If you want to use a specific browser, you can define it here - browser = nil, ---@type string? - throttle = 20, -- how frequently should the ui process render events - custom_keys = { - -- You can define custom key maps here. If present, the description will - -- be shown in the help menu. - -- To disable one of the defaults, set it to false. - - ["l"] = { - function(plugin) - require("lazy.util").float_term({ "lazygit", "log" }, { - cwd = plugin.dir, - }) - end, - desc = "Open lazygit log", - }, - - ["t"] = { - function(plugin) - require("lazy.util").float_term(nil, { - cwd = plugin.dir, - }) - end, - desc = "Open terminal in plugin dir", - }, - }, - }, - diff = { - -- diff command can be one of: - -- * browser: opens the github compare view. Note that this is always mapped to as well, - -- so you can have a different command for diff - -- * git: will run git diff and open a buffer with filetype git - -- * terminal_git: will open a pseudo terminal with git diff - -- * diffview.nvim: will open Diffview to show the diff - cmd = "git", - }, - checker = { - -- automatically check for plugin updates - enabled = false, - concurrency = nil, ---@type number? set to 1 to check for updates very slowly - notify = true, -- get a notification when new updates are found - frequency = 3600, -- check for updates every hour - check_pinned = false, -- check for pinned packages that can't be updated - }, - change_detection = { - -- automatically check for config file changes and reload the ui - enabled = true, - notify = true, -- get a notification when changes are found - }, - performance = { - cache = { - enabled = true, - }, - reset_packpath = true, -- reset the package path to improve startup time - rtp = { - reset = true, -- reset the runtime path to $VIMRUNTIME and your config directory - ---@type string[] - paths = {}, -- add any custom paths here that you want to includes in the rtp - ---@type string[] list any plugins you want to disable here - disabled_plugins = { - -- "gzip", - -- "matchit", - -- "matchparen", - -- "netrwPlugin", - -- "tarPlugin", - -- "tohtml", - -- "tutor", - -- "zipPlugin", - }, - }, - }, - -- lazy can generate helptags from the headings in markdown readme files, - -- so :help works even for plugins that don't have vim docs. - -- when the readme opens with :help it will be correctly displayed as markdown - readme = { - enabled = true, - root = vim.fn.stdpath("state") .. "/lazy/readme", - files = { "README.md", "lua/**/README.md" }, - -- only generate markdown helptags for plugins that dont have docs - skip_if_doc_exists = true, - }, - state = vim.fn.stdpath("state") .. "/lazy/state.json", -- state info for checker and other things - -- Enable profiling of lazy.nvim. This will add some overhead, - -- so only enable this when you are debugging lazy.nvim - profiling = { - -- Enables extra stats on the debug tab related to the loader cache. - -- Additionally gathers stats about all package.loaders - loader = false, - -- Track each new require in the Lazy profiling tab - require = false, - }, - } -< - -If you don’t want to use a Nerd Font, you can replace the icons with Unicode symbols. ~ - ->lua - { - ui = { - icons = { - cmd = "⌘", - config = "🛠", - event = "📅", - ft = "📂", - init = "⚙", - keys = "🗝", - plugin = "🔌", - runtime = "💻", - require = "🌙", - source = "📄", - start = "🚀", - task = "📌", - lazy = "💤 ", - }, - }, - } -< - - -🌈 HIGHLIGHT GROUPS *lazy.nvim-⚙️-configuration-🌈-highlight-groups* - - ----------------------------------------------------------------------- - Highlight Group Default Group Description - ----------------------- ----------------------- ----------------------- - LazyButton CursorLine - - LazyButtonActive Visual - - LazyComment Comment - - LazyCommit @variable.builtin commit ref - - LazyCommitIssue Number - - LazyCommitScope Italic conventional commit - scope - - LazyCommitType Title conventional commit - type - - LazyDimmed Conceal property - - LazyDir @markup.link directory - - LazyH1 IncSearch home button - - LazyH2 Bold titles - - LazyLocal Constant - - LazyNoCond DiagnosticWarn unloaded icon for a - plugin where cond() was - false - - LazyNormal NormalFloat - - LazyProgressDone Constant progress bar done - - LazyProgressTodo LineNr progress bar todo - - LazyProp Conceal property - - LazyReasonCmd Operator - - LazyReasonEvent Constant - - LazyReasonFt Character - - LazyReasonImport Identifier - - LazyReasonKeys Statement - - LazyReasonPlugin Special - - LazyReasonRequire @variable.parameter - - LazyReasonRuntime @macro - - LazyReasonSource Character - - LazyReasonStart @variable.member - - LazySpecial @punctuation.special - - LazyTaskError ErrorMsg task errors - - LazyTaskOutput MsgArea task output - - LazyUrl @markup.link url - - LazyValue @string value of a property - ----------------------------------------------------------------------- - -============================================================================== -7. 🚀 Usage *lazy.nvim-🚀-usage* - - -▶️ STARTUP SEQUENCE *lazy.nvim-🚀-usage-▶️-startup-sequence* - -**lazy.nvim** does **NOT** use Neovim packages and even disables plugin loading -completely (`vim.go.loadplugins = false`). It takes over the complete startup -sequence for more flexibility and better performance. - -In practice this means that step 10 of |Neovim Initialization| is done by Lazy: - -1. All the plugins’ `init()` functions are executed -2. All plugins with `lazy=false` are loaded. This includes sourcing `/plugin` and `/ftdetect` files. (`/after` will not be sourced yet) -3. All files from `/plugin` and `/ftdetect` directories in your rtp are sourced (excluding `/after`) -4. All `/after/plugin` files are sourced (this includes `/after` from plugins) - -Files from runtime directories are always sourced in alphabetical order. - - -🚀 COMMANDS *lazy.nvim-🚀-usage-🚀-commands* - -Plugins are managed with the `:Lazy` command. Open the help with `` to see -all the key mappings. - -You can press `` on a plugin to show its details. Most properties can be -hovered with `` to open links, help files, readmes, git commits and git -issues. - -Lazy can automatically check for updates in the background. This feature can be -enabled with `config.checker.enabled = true`. - -Any operation can be started from the UI, with a sub command or an API -function: - - ---------------------------------------------------------------------------------- - Command Lua Description - ------------------------- -------------------------------- ----------------------- - :Lazy build {plugins} require("lazy").build(opts) Rebuild a plugin - - :Lazy check [plugins] require("lazy").check(opts?) Check for updates and - show the log (git - fetch) - - :Lazy clean [plugins] require("lazy").clean(opts?) Clean plugins that are - no longer needed - - :Lazy clear require("lazy").clear() Clear finished tasks - - :Lazy debug require("lazy").debug() Show debug information - - :Lazy health require("lazy").health() Run :checkhealth lazy - - :Lazy help require("lazy").help() Toggle this help page - - :Lazy home require("lazy").home() Go back to plugin list - - :Lazy install [plugins] require("lazy").install(opts?) Install missing plugins - - :Lazy load {plugins} require("lazy").load(opts) Load a plugin that has - not been loaded yet. - Similar to :packadd. - Like - :Lazy load foo.nvim. - Use :Lazy! load to skip - cond checks. - - :Lazy log [plugins] require("lazy").log(opts?) Show recent updates - - :Lazy profile require("lazy").profile() Show detailed profiling - - :Lazy reload {plugins} require("lazy").reload(opts) Reload a plugin - (experimental!!) - - :Lazy restore [plugins] require("lazy").restore(opts?) Updates all plugins to - the state in the - lockfile. For a single - plugin: restore it to - the state in the - lockfile or to a given - commit under the cursor - - :Lazy sync [plugins] require("lazy").sync(opts?) Run install, clean and - update - - :Lazy update [plugins] require("lazy").update(opts?) Update plugins. This - will also update the - lockfile - ---------------------------------------------------------------------------------- -Any command can have a **bang** to make the command wait till it finished. For -example, if you want to sync lazy from the cmdline, you can use: - ->shell - nvim --headless "+Lazy! sync" +qa -< - -`opts` is a table with the following key-values: - -- **wait**: when true, then the call will wait till the operation completed -- **show**: when false, the UI will not be shown -- **plugins**: a list of plugin names to run the operation on -- **concurrency**: limit the `number` of concurrently running tasks - -Stats API (`require("lazy").stats()`): - ->lua - { - -- startuptime in milliseconds till UIEnter - startuptime = 0, - -- when true, startuptime is the accurate cputime for the Neovim process. (Linux & macOS) - -- this is more accurate than `nvim --startuptime`, and as such will be slightly higher - -- when false, startuptime is calculated based on a delta with a timestamp when lazy started. - real_cputime = false, - count = 0, -- total number of plugins - loaded = 0, -- number of loaded plugins - ---@type table - times = {}, - } -< - -**lazy.nvim** provides a statusline component that you can use to show the -number of pending updates. Make sure to enable `config.checker.enabled = true` -to make this work. - -Example of configuring lualine.nvim ~ - ->lua - require("lualine").setup({ - sections = { - lualine_x = { - { - require("lazy.status").updates, - cond = require("lazy.status").has_updates, - color = { fg = "#ff9e64" }, - }, - }, - }, - }) -< - - -📆 USER EVENTS *lazy.nvim-🚀-usage-📆-user-events* - -The following user events will be triggered: - -- **LazyDone**: when lazy has finished starting up and loaded your config -- **LazySync**: after running sync -- **LazyInstall**: after an install -- **LazyUpdate**: after an update -- **LazyClean**: after a clean -- **LazyCheck**: after checking for updates -- **LazyLog**: after running log -- **LazyLoad**: after loading a plugin. The `data` attribute will contain the plugin name. -- **LazySyncPre**: before running sync -- **LazyInstallPre**: before an install -- **LazyUpdatePre**: before an update -- **LazyCleanPre**: before a clean -- **LazyCheckPre**: before checking for updates -- **LazyLogPre**: before running log -- **LazyReload**: triggered by change detection after reloading plugin specs -- **VeryLazy**: triggered after `LazyDone` and processing `VimEnter` auto commands -- **LazyVimStarted**: triggered after `UIEnter` when `require("lazy").stats().startuptime` has been calculated. - Useful to update the startuptime on your dashboard. - - -❌ UNINSTALLING *lazy.nvim-🚀-usage-❌-uninstalling* - -To uninstall **lazy.nvim**, you need to remove the following files and -directories: - -- **data**: `~/.local/share/nvim/lazy` -- **state**: `~/.local/state/nvim/lazy` -- **lockfile**: `~/.config/nvim/lazy-lock.json` - - - Paths can differ if you changed `XDG` environment variables. - -🔒 LOCKFILE *lazy.nvim-🚀-usage-🔒-lockfile* - -After every **update**, the local lockfile (`lazy-lock.json`) is updated with -the installed revisions. It is recommended to have this file under version -control. - -If you use your Neovim config on multiple machines, using the lockfile, you can -ensure that the same version of every plugin is installed. - -If you are on another machine, you can do `:Lazy restore`, to update all your -plugins to the version from the lockfile. - - -📦 MIGRATION GUIDE *lazy.nvim-🚀-usage-📦-migration-guide* - - -PACKER.NVIM ~ - -- `setup` ➡️ `init` -- `requires` ➡️ `dependencies` -- `as` ➡️ `name` -- `opt` ➡️ `lazy` -- `run` ➡️ `build` -- `lock` ➡️ `pin` -- `disable=true` ➡️ `enabled = false` -- `tag='*'` ➡️ `version="*"` -- `after` is **not needed** for most use-cases. Use `dependencies` otherwise. -- `wants` is **not needed** for most use-cases. Use `dependencies` otherwise. -- `config` don’t support string type, use `fun(LazyPlugin)` instead. -- `module` is auto-loaded. No need to specify -- `keys` spec is |lazy.nvim-different| -- `rtp` can be accomplished with: - ->lua - config = function(plugin) - vim.opt.rtp:append(plugin.dir .. "/custom-rtp") - end -< - -With packer `wants`, `requires` and `after` can be used to manage dependencies. -With lazy, this isn’t needed for most of the Lua dependencies. They can be -installed just like normal plugins (even with `lazy=true`) and will be loaded -when other plugins need them. The `dependencies` key can be used to group those -required plugins with the one that requires them. The plugins which are added -as `dependencies` will always be lazy-loaded and loaded when the plugin is -loaded. - - -PAQ-NVIM ~ - -- `as` ➡️ `name` -- `opt` ➡️ `lazy` -- `run` ➡️ `build` - - -⚡ PROFILING & DEBUG *lazy.nvim-🚀-usage-⚡-profiling-&-debug* - -Great care has been taken to make the startup code (`lazy.core`) as efficient -as possible. During startup, all Lua files used before `VimEnter` or -`BufReadPre` are byte-compiled and cached, similar to what impatient.nvim - does. - -My config for example loads in about `11ms` with `93` plugins. I do a lot of -lazy-loading though :) - -**lazy.nvim** comes with an advanced profiler `:Lazy profile` to help you -improve performance. The profiling view shows you why and how long it took to -load your plugins. - - -🐛 DEBUG ~ - -See an overview of active lazy-loading handlers and what’s in the module -cache. - - -📂 STRUCTURING YOUR PLUGINS*lazy.nvim-🚀-usage-📂-structuring-your-plugins* - -Some users may want to split their plugin specs in multiple files. Instead of -passing a spec table to `setup()`, you can use a Lua module. The specs from the -**module** and any top-level **sub-modules** will be merged together in the -final spec, so it is not needed to add `require` calls in your main plugin file -to the other files. - -The benefits of using this approach: - -- Simple to **add** new plugin specs. Just create a new file in your plugins module. -- Allows for **caching** of all your plugin specs. This becomes important if you have a lot of smaller plugin specs. -- Spec changes will automatically be **reloaded** when they’re updated, so the `:Lazy` UI is always up to date. - -Example: - -- `~/.config/nvim/init.lua` - ->lua - require("lazy").setup("plugins") -< - -- `~/.config/nvim/lua/plugins.lua` or `~/.config/nvim/lua/plugins/init.lua` **(this file is optional)** - ->lua - return { - "folke/neodev.nvim", - "folke/which-key.nvim", - { "folke/neoconf.nvim", cmd = "Neoconf" }, - } -< - -- Any lua file in `~/.config/nvim/lua/plugins/*.lua` will be automatically merged in the main plugin spec - -For a real-life example, you can check LazyVim - and more specifically: - -- lazyvim.plugins contains all the plugin specs that will be loaded - - -↩️ IMPORTING SPECS, CONFIG & OPTS - -As part of a spec, you can add `import` statements to import additional plugin -modules. Both of the `setup()` calls are equivalent: - ->lua - require("lazy").setup("plugins") - - -- Same as: - require("lazy").setup({{import = "plugins"}}) -< - -To import multiple modules from a plugin, add additional specs for each import. -For example, to import LazyVim core plugins and an optional plugin: - ->lua - require("lazy").setup({ - spec = { - { "LazyVim/LazyVim", import = "lazyvim.plugins" }, - { import = "lazyvim.plugins.extras.coding.copilot" }, - } - }) -< - -When you import specs, you can override them by simply adding a spec for the -same plugin to your local specs, adding any keys you want to override / merge. - -`opts`, `dependencies`, `cmd`, `event`, `ft` and `keys` are always merged with -the parent spec. Any other property will override the property from the parent -spec. - - -============================================================================== -8. 🔥 Developers *lazy.nvim-🔥-developers* - -To make it easier for users to install your plugin, you can include a package -spec in your repo. - - -BEST PRACTICES *lazy.nvim-🔥-developers-best-practices* - -- If your plugin needs `setup()`, then create a simple `lazy.lua` file like this: - >lua - return { "me/my-plugin", opts = {} } - < -- Plugins that are pure lua libraries should be lazy-loaded with `lazy = true`. - >lua - { "nvim-lua/plenary.nvim", lazy = true } - < -- Always use `opts` instead of `config` when possible. `config` is almost never - needed. -- Only use `dependencies` if a plugin needs the dep to be installed **AND** - loaded. Lua plugins/libraries are automatically loaded when they are - `require()`d, so they don’t need to be in `dependencies`. -- Inside a `build` function or `*.lua` build file, use - `coroutine.yield(msg:string|LazyMsg)` to show progress. -- Don’t change the `cwd` in your build function, since builds run in parallel - and changing the `cwd` will affect other builds. - - -BUILDING *lazy.nvim-🔥-developers-building* - -The spec **build** property can be one of the following: - -- `fun(plugin: LazyPlugin)`: a function that builds the plugin. -- `*.lua`: a Lua file that builds the plugin (like `build.lua`) -- `":Command"`: a Neovim command -- `"rockspec"`: this will run `luarocks make` in the plugin’s directory - This is automatically set by the `rockspec` package source. -- any other **string** will be run as a shell command -- a `list` of any of the above to run multiple build steps -- if no `build` is specified, but a `build.lua` file exists, that will be used instead. - -Build functions and `*.lua` files run asynchronously in a coroutine. Use -`coroutine.yield(msg:string|LazyMsg)` to show progress. - -Yielding will also schedule the next `coroutine.resume()` to run in the next -tick, so you can do long-running tasks without blocking Neovim. - ->lua - ---@class LazyMsg - ---@field msg string - ---@field level? number vim.log.levels.XXX -< - -Use `vim.log.levels.TRACE` to only show the message as a **status** message for -the task. - - - -MINIT (MINIMAL INIT) *lazy.nvim-🔥-developers-minit-(minimal-init)* - -**lazy.nvim** comes with some built-in functionality to help you create a -minimal init for your plugin. - -I mainly use this for testing and for users to create a `repro.lua`. - -When running in **headless** mode, **lazy.nvim** will log any messages to the -terminal. See `opts.headless` for more info. - -**minit** will install/load all your specs and will always run an update as -well. - - -BOOTSTRAP ~ - ->lua - -- setting this env will override all XDG paths - vim.env.LAZY_STDPATH = ".tests" - -- this will install lazy in your stdpath - load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() -< - - -TESTING WITH BUSTED ~ - -This will add `"lunarmodules/busted"`, configure `hererocks` and run `busted`. - -Below is an example of how I use **minit** to run tests with busted - in **LazyVim**. - ->lua - #!/usr/bin/env -S nvim -l - - vim.env.LAZY_STDPATH = ".tests" - load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() - - -- Setup lazy.nvim - require("lazy.minit").busted({ - spec = { - "LazyVim/starter", - "williamboman/mason-lspconfig.nvim", - "williamboman/mason.nvim", - "nvim-treesitter/nvim-treesitter", - }, - }) -< - -To use this, you can run: - ->sh - nvim -l ./tests/busted.lua tests -< - -If you want to inspect the test environment, run: - ->sh - nvim -u ./tests/busted.lua -< - - -REPRO.LUA ~ - ->lua - vim.env.LAZY_STDPATH = ".repro" - load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() - - require("lazy.minit").repro({ - spec = { - "stevearc/conform.nvim", - "nvim-neotest/nvim-nio", - }, - }) - - -- do anything else you need to do to reproduce the issue -< - -Then run it with: - ->sh - nvim -u repro.lua -< - -============================================================================== -9. Links *lazy.nvim-links* +1. Links *lazy.nvim-links* 1. *image*: https://user-images.githubusercontent.com/292349/208301737-68fb279c-ba70-43ef-a369-8c3e8367d6b1.png -2. *image*: https://user-images.githubusercontent.com/292349/208301766-5c400561-83c3-4811-9667-1ec4bb3c43b8.png -3. *image*: https://user-images.githubusercontent.com/292349/208301790-7eedbfa5-d202-4e70-852e-de68aa47233b.png Generated by panvimdoc From d901d2166fef0304e360316e7a04316f11ab62d0 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 5 Jul 2024 17:03:38 +0000 Subject: [PATCH 225/342] chore(build): auto-generate docs --- doc/lazy.nvim.txt | 1398 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 1352 insertions(+), 46 deletions(-) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index 89fb0a4..73bd0ae 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -1,61 +1,130 @@ -*lazy.nvim.txt* For Neovim Last change: 2024 July 05 +*lazy.nvim.txt* A modern plugin manager for Neovim ============================================================================== Table of Contents *lazy.nvim-table-of-contents* - - Features |lazy.nvim-features| - - Requirements |lazy.nvim-requirements| - - Getting Started |lazy.nvim-getting-started| -1. Links |lazy.nvim-links| -Install -· -Configure -· -Docs - - - - - - - - - - - - - - +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. 📰 What’s new? *lazy.nvim-📰-what’s-new?* +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 . The GitHub `README.md` + has been updated to point to the new website. The `vimdoc` contains all the + information that is available on the website. +- **Spec Resolution & Merging**: the code that resolves a final spec from a + plugin’s fragments has been rewritten. This should be a tiny bit faster, but + more importantly, fixes some issues and is easier to maintain. +- Packages can now specify their dependencies + and configuration using one of: + - **Lazy**: `lazy.lua` file + - **Rockspec**: luarocks `*-scm-1.rockspec` file + - **Packspec**: `pkg.json` (experimental, since the format is not quite there yet) + Related _lazy.nvim_ options: + >lua + { + pkg = { + enabled = true, + cache = vim.fn.stdpath("state") .. "/lazy/pkg-cache.lua", + -- the first package source that is found for a plugin will be used. + sources = { + "lazy", + "rockspec", -- will only be used when rocks.enabled is true + "packspec", + }, + }, + rocks = { + enabled = true, + root = vim.fn.stdpath("data") .. "/lazy-rocks", + server = "https://nvim-neorocks.github.io/rocks-binaries/", + }, + } + < +- Installing neorg is now as simple as: + >lua + { "nvim-neorg/neorg", opts = {} } + < +- Packages are not limited to just Neovim plugins. You can install any + **luarocks** package, like: + >lua + { "https://github.com/lubyk/yaml" } + < + Luarocks packages without a `/lua` directory are never lazy-loaded, since + it’s just a library. +- `build` functions or `*.lua` build files (like `build.lua`) now run + asynchronously. You can use `coroutine.yield(status_msg)` to show progress. + Yielding will also schedule the next `resume` to run in the next tick, so you + can do long-running tasks without blocking Neovim. +============================================================================== +2. 🚀 Getting Started *lazy.nvim-🚀-getting-started* **lazy.nvim** is a modern plugin manager for Neovim. -FEATURES *lazy.nvim-features* +✨ FEATURES *lazy.nvim-🚀-getting-started-✨-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 support -- Statusline component to see the number of pending updates -- Automatically lazy-loads colorschemes +- 📦 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 support +- 📈 Statusline component to see the number of pending updates +- 🎨 Automatically lazy-loads colorschemes -REQUIREMENTS *lazy.nvim-requirements* +⚡️ REQUIREMENTS *lazy.nvim-🚀-getting-started-⚡️-requirements* - Neovim >= **0.8.0** (needs to be built with **LuaJIT**) - Git >= **2.19.0** (for partial clones support) @@ -64,14 +133,1251 @@ REQUIREMENTS *lazy.nvim-requirements* You can remove `rockspec` from `opts.pkg.sources` to disable this feature. -GETTING STARTED *lazy.nvim-getting-started* +============================================================================== +3. 🛠️ Installation *lazy.nvim-🛠️-installation* + +There are multiple ways to install **lazy.nvim**. The **Structured Setup** is +the recommended way, but you can also use the **Single File Setup** if you +prefer to keep everything in your `init.lua`. + +Please refer to the Configuration section for an overview of +all available options. + + + + +STRUCTURED SETUP *lazy.nvim-🛠️-installation-structured-setup* + +>lua + require("config.lazy") +< + +>lua + -- Bootstrap lazy.nvim + local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" + if not (vim.uv or vim.loop).fs_stat(lazypath) then + local lazyrepo = "https://github.com/folke/lazy.nvim.git" + local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) + if vim.v.shell_error ~= 0 then + vim.api.nvim_echo({ + { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, + { out, "WarningMsg" }, + { "\nPress any key to exit..." }, + }, true, {}) + vim.fn.getchar() + os.exit(1) + end + end + vim.opt.rtp:prepend(lazypath) + + -- Make sure to setup `mapleader` and `maplocalleader` before + -- loading lazy.nvim so that mappings are correct. + -- This is also a good place to setup other settings (vim.opt) + vim.g.mapleader = " " + vim.g.maplocalleader = "\\" + + -- Setup lazy.nvim + require("lazy").setup({ + -- highlight-start + spec = { + -- import your plugins + { import = "plugins" }, + }, + -- highlight-end + -- Configure any other settings here. See the documentation for more details. + -- colorscheme that will be used when installing plugins. + install = { colorscheme = { "habamax" } }, + -- automatically check for plugin updates + checker = { enabled = true }, + }) +< + +You can then create your plugin specs in `~/.config/nvim/lua/plugins/`. Each +file should return a table with the plugins you want to install. + +For more info see Structuring Your Plugins + + +SINGLE FILE SETUP *lazy.nvim-🛠️-installation-single-file-setup* + +>lua + -- Bootstrap lazy.nvim + local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" + if not (vim.uv or vim.loop).fs_stat(lazypath) then + local lazyrepo = "https://github.com/folke/lazy.nvim.git" + local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) + if vim.v.shell_error ~= 0 then + vim.api.nvim_echo({ + { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, + { out, "WarningMsg" }, + { "\nPress any key to exit..." }, + }, true, {}) + vim.fn.getchar() + os.exit(1) + end + end + vim.opt.rtp:prepend(lazypath) + + -- Make sure to setup `mapleader` and `maplocalleader` before + -- loading lazy.nvim so that mappings are correct. + -- This is also a good place to setup other settings (vim.opt) + vim.g.mapleader = " " + vim.g.maplocalleader = "\\" + + -- Setup lazy.nvim + require("lazy").setup({ + -- highlight-start + spec = { + -- add your plugins here + }, + -- highlight-end + -- Configure any other settings here. See the documentation for more details. + -- colorscheme that will be used when installing plugins. + install = { colorscheme = { "habamax" } }, + -- automatically check for plugin updates + checker = { enabled = true }, + }) +< -Check the documentation website for more information. ============================================================================== -1. Links *lazy.nvim-links* +4. 🔌 Plugin Spec *lazy.nvim-🔌-plugin-spec* + + +SPEC SOURCE *lazy.nvim-🔌-plugin-spec-spec-source* + + ----------------------------------------------------------------------------------- + Property Type Description + ---------- ---------- ------------------------------------------------------------- + [1] string? Short plugin url. Will be expanded using + config.git.url_format. Can also be a url or dir. + + dir string? A directory pointing to a local plugin + + url string? A custom git url where the plugin is hosted + + name string? A custom name for the plugin used for the local plugin + directory and as the display name + + dev boolean? When true, a local plugin directory will be used instead. See + config.dev + ----------------------------------------------------------------------------------- +A valid spec should define one of `[1]`, `dir` or `url`. + + +SPEC LOADING *lazy.nvim-🔌-plugin-spec-spec-loading* + + -------------------------------------------------------------------------------------------------- + Property Type Description + -------------- ------------------------- --------------------------------------------------------- + dependencies LazySpec[] A list of plugin names or plugin specs that should be + loaded when the plugin loads. Dependencies are always + lazy-loaded unless specified otherwise. When specifying a + name, make sure the plugin spec has been defined + somewhere else. + + enabled boolean? or fun():boolean When false, or if the function returns false, then this + plugin will not be included in the spec + + cond boolean? or Behaves the same as enabled, but won’t uninstall the + fun(LazyPlugin):boolean plugin when the condition is false. Useful to disable + some plugins in vscode, or firenvim for example. + + priority number? Only useful for start plugins (lazy=false) to force + loading certain plugins first. Default priority is 50. + It’s recommended to set this to a high number for + colorschemes. + -------------------------------------------------------------------------------------------------- + +SPEC SETUP *lazy.nvim-🔌-plugin-spec-spec-setup* + + -------------------------------------------------------------------------------------------------- + Property Type Description + ---------- ----------------------------- --------------------------------------------------------- + init fun(LazyPlugin) init functions are always executed during. Mostly useful + for setting vim.g.* configuration used by Vim plugins + startup + + opts table or opts should be a table (will be merged with parent + fun(LazyPlugin, opts:table) specs), return a table (replaces parent specs) or should + change a table. The table will be passed to the + Plugin.config() function. Setting this value will imply + Plugin.config() + + config fun(LazyPlugin, opts:table) config is executed when the plugin loads. The default + or true implementation will automatically run + require(MAIN).setup(opts) if opts or config = true is + set. Lazy uses several heuristics to determine the + plugin’s MAIN module automatically based on the plugin’s + name. (opts is the recommended way to configure plugins). + + main string? You can specify the main module to use for config() and + opts(), in case it can not be determined automatically. + See config() + + build fun(LazyPlugin) or string or build is executed when a plugin is installed or updated. + false or a list of build See Building for more information. + commands + -------------------------------------------------------------------------------------------------- +Always use `opts` instead of `config` when possible. `config` is almost never +needed. + + + + +SPEC LAZY LOADING *lazy.nvim-🔌-plugin-spec-spec-lazy-loading* + + -------------------------------------------------------------------------------------------------------------------- + Property Type Description + ---------- ---------------------------------------------------------------- ---------------------------------------- + lazy boolean? When true, the plugin will only be + loaded when needed. Lazy-loaded plugins + are automatically loaded when their Lua + modules are required, or when one of the + lazy-loading handlers triggers + + event string? or string[] or Lazy-load on event. Events can be + fun(self:LazyPlugin, event:string[]):string[] or specified as BufEnter or with a pattern + {event:string[]\|string, pattern?:string[]\|string} like BufEnter *.lua + + cmd string? or string[] or Lazy-load on command + fun(self:LazyPlugin, cmd:string[]):string[] + + ft string? or string[] or Lazy-load on filetype + fun(self:LazyPlugin, ft:string[]):string[] + + keys string? or string[] or LazyKeysSpec[] or Lazy-load on key mapping + fun(self:LazyPlugin, keys:string[]):(string \| LazyKeysSpec)[] + -------------------------------------------------------------------------------------------------------------------- +Refer to the Lazy Loading <./lazy_loading.md> section for more information. + + +SPEC VERSIONING *lazy.nvim-🔌-plugin-spec-spec-versioning* + + ------------------------------------------------------------------------------ + Property Type Description + ------------ -------------------- -------------------------------------------- + branch string? Branch of the repository + + tag string? Tag of the repository + + commit string? Commit of the repository + + version string? or false to Version to use from the repository. Full + override the default Semver ranges are supported + + pin boolean? When true, this plugin will not be included + in updates + + submodules boolean? When false, git submodules will not be + fetched. Defaults to true + ------------------------------------------------------------------------------ +Refer to the Versioning <./versioning.md> section for more information. + + +SPEC ADVANCED *lazy.nvim-🔌-plugin-spec-spec-advanced* + + ---------------------------------------------------------------------------------------- + Property Type Description + ---------- ---------- ------------------------------------------------------------------ + optional boolean? When a spec is tagged optional, it will only be included in the + final spec, when the same plugin has been specified at least once + somewhere else without optional. This is mainly useful for Neovim + distros, to allow setting options on plugins that may/may not be + part of the user’s plugins. + + specs LazySpec A list of plugin specs defined in the scope of the plugin. This is + mainly useful for Neovim distros, to allow setting options on + plugins that may/may not be part of the user’s plugins. When the + plugin is disabled, none of the scoped specs will be included in + the final spec. Similar to dependencies without the automatic + loading of the specs. + + module false? Do not automatically load this Lua module when it’s required + somewhere + + import string? Import the given spec module. + ---------------------------------------------------------------------------------------- + +EXAMPLES *lazy.nvim-🔌-plugin-spec-examples* + +>lua + return { + -- the colorscheme should be available when starting Neovim + { + "folke/tokyonight.nvim", + lazy = false, -- make sure we load this during startup if it is your main colorscheme + priority = 1000, -- make sure to load this before all the other start plugins + config = function() + -- load the colorscheme here + vim.cmd([[colorscheme tokyonight]]) + end, + }, + + -- I have a separate config.mappings file where I require which-key. + -- With lazy the plugin will be automatically loaded when it is required somewhere + { "folke/which-key.nvim", lazy = true }, + + { + "nvim-neorg/neorg", + -- lazy-load on filetype + ft = "norg", + -- options for neorg. This will automatically call `require("neorg").setup(opts)` + opts = { + load = { + ["core.defaults"] = {}, + }, + }, + }, + + { + "dstein64/vim-startuptime", + -- lazy-load on a command + cmd = "StartupTime", + -- init is called during startup. Configuration for vim plugins typically should be set in an init function + init = function() + vim.g.startuptime_tries = 10 + end, + }, + + { + "hrsh7th/nvim-cmp", + -- load cmp on InsertEnter + event = "InsertEnter", + -- these dependencies will only be loaded when cmp loads + -- dependencies are always lazy-loaded unless specified otherwise + dependencies = { + "hrsh7th/cmp-nvim-lsp", + "hrsh7th/cmp-buffer", + }, + config = function() + -- ... + end, + }, + + -- if some code requires a module from an unloaded plugin, it will be automatically loaded. + -- So for api plugins like devicons, we can always set lazy=true + { "nvim-tree/nvim-web-devicons", lazy = true }, + + -- you can use the VeryLazy event for things that can + -- load later and are not important for the initial UI + { "stevearc/dressing.nvim", event = "VeryLazy" }, + + { + "Wansmer/treesj", + keys = { + { "J", "TSJToggle", desc = "Join Toggle" }, + }, + opts = { use_default_keymaps = false, max_join_length = 150 }, + }, + + { + "monaqa/dial.nvim", + -- lazy-load on keys + -- mode is `n` by default. For more advanced options, check the section on key mappings + keys = { "", { "", mode = "n" } }, + }, + + -- local plugins need to be explicitly configured with dir + { dir = "~/projects/secret.nvim" }, + + -- you can use a custom url to fetch a plugin + { url = "git@github.com:folke/noice.nvim.git" }, + + -- local plugins can also be configured with the dev option. + -- This will use {config.dev.path}/noice.nvim/ instead of fetching it from GitHub + -- With the dev option, you can easily switch between the local and installed version of a plugin + { "folke/noice.nvim", dev = true }, + } +< + + +LAZY LOADING *lazy.nvim-🔌-plugin-spec-lazy-loading* + +**lazy.nvim** automagically lazy-loads Lua modules. This means that if you have +a plugin `A` that is lazy-loaded and a plugin `B` that requires a module of +plugin `A`, then plugin `A` will be loaded on demand as expected. + + +Additionally, you can also lazy-load on **events**, **commands**, **file +types** and **key mappings**. + +Plugins will be lazy-loaded when one of the following is `true`: + +- The plugin only exists as a dependency in your spec +- It has an `event`, `cmd`, `ft` or `keys` key +- `config.defaults.lazy == true` + + +🌈 COLORSCHEMES ~ + +Colorscheme plugins can be configured with `lazy=true`. The plugin will +automagically load when doing `colorscheme foobar`. + + + +⌨️ LAZY KEY MAPPINGS ~ + +The `keys` property can be a `string` or `string[]` for simple normal-mode +mappings, or it can be a `LazyKeysSpec` table with the following key-value +pairs: + +- **[1]**: (`string`) lhs **(required)** +- **[2]**: (`string|fun()`) rhs **(optional)** +- **mode**: (`string|string[]`) mode **(optional, defaults to "n")** +- **ft**: (`string|string[]`) `filetype` for buffer-local keymaps **(optional)** +- any other option valid for `vim.keymap.set` + +Key mappings will load the plugin the first time they get executed. + +When `[2]` is `nil`, then the real mapping has to be created by the `config()` +function. + +>lua + -- Example for neo-tree.nvim + { + "nvim-neo-tree/neo-tree.nvim", + keys = { + { "ft", "Neotree toggle", desc = "NeoTree" }, + }, + config = function() + require("neo-tree").setup() + end, + } +< + + +VERSIONING *lazy.nvim-🔌-plugin-spec-versioning* + +If you want to install a specific revision of a plugin, you can use `commit`, +`tag`, `branch`, `version`. + +The `version` property supports Semver ranges. + + + +EXAMPLES ~ + +- `*`: latest stable version (this excludes pre-release versions) +- `1.2.x`: any version that starts with `1.2`, such as `1.2.0`, `1.2.3`, etc. +- `^1.2.3`: any version that is compatible with `1.2.3`, such as `1.3.0`, `1.4.5`, etc., but not `2.0.0`. +- `~1.2.3`: any version that is compatible with `1.2.3`, such as `1.2.4`, `1.2.5`, but not `1.3.0`. +- `>1.2.3`: any version that is greater than `1.2.3`, such as `1.3.0`, `1.4.5`, etc. +- `>=1.2.3`: any version that is greater than or equal to `1.2.3`, such as `1.2.3`, `1.3.0`, `1.4.5`, etc. +- `<1.2.3`: any version that is less than `1.2.3`, such as `1.1.0`, `1.0.5`, etc. +- `<=1.2.3`: any version that is less than or equal to `1.2.3`, such as `1.2.3`, `1.1.0`, `1.0.5`, etc + + +============================================================================== +5. 📦 Packages *lazy.nvim-📦-packages* + +**lazy.nvim** supports three ways for plugins to define their dependencies and +configuration. + +- **Lazy**: `lazy.lua` file +- **Rockspec**: luarocks `*-scm-1.rockspec` file +- **Packspec**: `pkg.json` (experimental, since the format is not quite there yet) + +You can enable/disable package sources with `config.pkg.sources` +. The order of sources is important, as the first source that +finds a package will be used. + + + +LAZY *lazy.nvim-📦-packages-lazy* + +Using a `lazy.lua` file is the recommended way to define your plugin +dependencies and configuration. Syntax is the same as any plugin spec. + + +ROCKSPEC *lazy.nvim-📦-packages-rockspec* + +When a plugin contains a `*-1.rockspec` file, **lazy.nvim** will automatically +build the rock and its dependencies. + +A **rockspec** will only be used if one of the following is true: + +- the package does not have a `/lua` directory +- the package has a complex build step +- the package has dependencies (excluding `lua`) + + +PACKSPEC *lazy.nvim-📦-packages-packspec* + +Supports the pkg.json + format, with +a lazy extension in `lazy`. `lazy` can contain any valid lazy spec fields. They +will be added to the plugin’s spec. + + +============================================================================== +6. ⚙️ Configuration *lazy.nvim-⚙️-configuration* + +**lazy.nvim** comes with the following defaults: + +>lua + { + root = vim.fn.stdpath("data") .. "/lazy", -- directory where plugins will be installed + defaults = { + -- Set this to `true` to have all your plugins lazy-loaded by default. + -- Only do this if you know what you are doing, as it can lead to unexpected behavior. + lazy = false, -- should plugins be lazy-loaded? + -- It's recommended to leave version=false for now, since a lot the plugin that support versioning, + -- have outdated releases, which may break your Neovim install. + version = nil, -- always use the latest git commit + -- version = "*", -- try installing the latest stable version for plugins that support semver + -- default `cond` you can use to globally disable a lot of plugins + -- when running inside vscode for example + cond = nil, ---@type boolean|fun(self:LazyPlugin):boolean|nil + }, + -- leave nil when passing the spec as the first argument to setup() + spec = nil, ---@type LazySpec + local_spec = true, -- load project specific .lazy.lua spec files. They will be added at the end of the spec. + lockfile = vim.fn.stdpath("config") .. "/lazy-lock.json", -- lockfile generated after running update. + ---@type number? limit the maximum amount of concurrent tasks + concurrency = jit.os:find("Windows") and (vim.uv.available_parallelism() * 2) or nil, + git = { + -- defaults for the `Lazy log` command + -- log = { "--since=3 days ago" }, -- show commits from the last 3 days + log = { "-8" }, -- show the last 8 commits + timeout = 120, -- kill processes that take more than 2 minutes + url_format = "https://github.com/%s.git", + -- lazy.nvim requires git >=2.19.0. If you really want to use lazy with an older version, + -- then set the below to false. This should work, but is NOT supported and will + -- increase downloads a lot. + filter = true, + }, + pkg = { + enabled = true, + cache = vim.fn.stdpath("state") .. "/lazy/pkg-cache.lua", + versions = true, -- Honor versions in pkg sources + -- the first package source that is found for a plugin will be used. + sources = { + "lazy", + "rockspec", + "packspec", + }, + }, + rocks = { + root = vim.fn.stdpath("data") .. "/lazy-rocks", + server = "https://nvim-neorocks.github.io/rocks-binaries/", + }, + dev = { + ---@type string | fun(plugin: LazyPlugin): string directory where you store your local plugin projects + path = "~/projects", + ---@type string[] plugins that match these patterns will use your local versions instead of being fetched from GitHub + patterns = {}, -- For example {"folke"} + fallback = false, -- Fallback to git when local plugin doesn't exist + }, + install = { + -- install missing plugins on startup. This doesn't increase startup time. + missing = true, + -- try to load one of these colorschemes when starting an installation during startup + colorscheme = { "habamax" }, + }, + ui = { + -- a number <1 is a percentage., >1 is a fixed size + size = { width = 0.8, height = 0.8 }, + wrap = true, -- wrap the lines in the ui + -- The border to use for the UI window. Accepts same border values as |nvim_open_win()|. + border = "none", + -- The backdrop opacity. 0 is fully opaque, 100 is fully transparent. + backdrop = 60, + title = nil, ---@type string only works when border is not "none" + title_pos = "center", ---@type "center" | "left" | "right" + -- Show pills on top of the Lazy window + pills = true, ---@type boolean + icons = { + cmd = " ", + config = "", + event = " ", + favorite = " ", + ft = " ", + init = " ", + import = " ", + keys = " ", + lazy = "󰒲 ", + loaded = "●", + not_loaded = "○", + plugin = " ", + runtime = " ", + require = "󰢱 ", + source = " ", + start = " ", + task = "✔ ", + list = { + "●", + "➜", + "★", + "‒", + }, + }, + -- leave nil, to automatically select a browser depending on your OS. + -- If you want to use a specific browser, you can define it here + browser = nil, ---@type string? + throttle = 20, -- how frequently should the ui process render events + custom_keys = { + -- You can define custom key maps here. If present, the description will + -- be shown in the help menu. + -- To disable one of the defaults, set it to false. + + ["l"] = { + function(plugin) + require("lazy.util").float_term({ "lazygit", "log" }, { + cwd = plugin.dir, + }) + end, + desc = "Open lazygit log", + }, + + ["t"] = { + function(plugin) + require("lazy.util").float_term(nil, { + cwd = plugin.dir, + }) + end, + desc = "Open terminal in plugin dir", + }, + }, + }, + diff = { + -- diff command can be one of: + -- * browser: opens the github compare view. Note that this is always mapped to as well, + -- so you can have a different command for diff + -- * git: will run git diff and open a buffer with filetype git + -- * terminal_git: will open a pseudo terminal with git diff + -- * diffview.nvim: will open Diffview to show the diff + cmd = "git", + }, + checker = { + -- automatically check for plugin updates + enabled = false, + concurrency = nil, ---@type number? set to 1 to check for updates very slowly + notify = true, -- get a notification when new updates are found + frequency = 3600, -- check for updates every hour + check_pinned = false, -- check for pinned packages that can't be updated + }, + change_detection = { + -- automatically check for config file changes and reload the ui + enabled = true, + notify = true, -- get a notification when changes are found + }, + performance = { + cache = { + enabled = true, + }, + reset_packpath = true, -- reset the package path to improve startup time + rtp = { + reset = true, -- reset the runtime path to $VIMRUNTIME and your config directory + ---@type string[] + paths = {}, -- add any custom paths here that you want to includes in the rtp + ---@type string[] list any plugins you want to disable here + disabled_plugins = { + -- "gzip", + -- "matchit", + -- "matchparen", + -- "netrwPlugin", + -- "tarPlugin", + -- "tohtml", + -- "tutor", + -- "zipPlugin", + }, + }, + }, + -- lazy can generate helptags from the headings in markdown readme files, + -- so :help works even for plugins that don't have vim docs. + -- when the readme opens with :help it will be correctly displayed as markdown + readme = { + enabled = true, + root = vim.fn.stdpath("state") .. "/lazy/readme", + files = { "README.md", "lua/**/README.md" }, + -- only generate markdown helptags for plugins that dont have docs + skip_if_doc_exists = true, + }, + state = vim.fn.stdpath("state") .. "/lazy/state.json", -- state info for checker and other things + -- Enable profiling of lazy.nvim. This will add some overhead, + -- so only enable this when you are debugging lazy.nvim + profiling = { + -- Enables extra stats on the debug tab related to the loader cache. + -- Additionally gathers stats about all package.loaders + loader = false, + -- Track each new require in the Lazy profiling tab + require = false, + }, + } +< + +If you don’t want to use a Nerd Font, you can replace the icons with Unicode symbols. ~ + +>lua + { + ui = { + icons = { + cmd = "⌘", + config = "🛠", + event = "📅", + ft = "📂", + init = "⚙", + keys = "🗝", + plugin = "🔌", + runtime = "💻", + require = "🌙", + source = "📄", + start = "🚀", + task = "📌", + lazy = "💤 ", + }, + }, + } +< + + +🌈 HIGHLIGHT GROUPS *lazy.nvim-⚙️-configuration-🌈-highlight-groups* + + ----------------------------------------------------------------------- + Highlight Group Default Group Description + ----------------------- ----------------------- ----------------------- + LazyButton CursorLine + + LazyButtonActive Visual + + LazyComment Comment + + LazyCommit @variable.builtin commit ref + + LazyCommitIssue Number + + LazyCommitScope Italic conventional commit + scope + + LazyCommitType Title conventional commit + type + + LazyDimmed Conceal property + + LazyDir @markup.link directory + + LazyH1 IncSearch home button + + LazyH2 Bold titles + + LazyLocal Constant + + LazyNoCond DiagnosticWarn unloaded icon for a + plugin where cond() was + false + + LazyNormal NormalFloat + + LazyProgressDone Constant progress bar done + + LazyProgressTodo LineNr progress bar todo + + LazyProp Conceal property + + LazyReasonCmd Operator + + LazyReasonEvent Constant + + LazyReasonFt Character + + LazyReasonImport Identifier + + LazyReasonKeys Statement + + LazyReasonPlugin Special + + LazyReasonRequire @variable.parameter + + LazyReasonRuntime @macro + + LazyReasonSource Character + + LazyReasonStart @variable.member + + LazySpecial @punctuation.special + + LazyTaskError ErrorMsg task errors + + LazyTaskOutput MsgArea task output + + LazyUrl @markup.link url + + LazyValue @string value of a property + ----------------------------------------------------------------------- + +============================================================================== +7. 🚀 Usage *lazy.nvim-🚀-usage* + + +▶️ STARTUP SEQUENCE *lazy.nvim-🚀-usage-▶️-startup-sequence* + +**lazy.nvim** does **NOT** use Neovim packages and even disables plugin loading +completely (`vim.go.loadplugins = false`). It takes over the complete startup +sequence for more flexibility and better performance. + +In practice this means that step 10 of |Neovim Initialization| is done by Lazy: + +1. All the plugins’ `init()` functions are executed +2. All plugins with `lazy=false` are loaded. This includes sourcing `/plugin` and `/ftdetect` files. (`/after` will not be sourced yet) +3. All files from `/plugin` and `/ftdetect` directories in your rtp are sourced (excluding `/after`) +4. All `/after/plugin` files are sourced (this includes `/after` from plugins) + +Files from runtime directories are always sourced in alphabetical order. + + +🚀 COMMANDS *lazy.nvim-🚀-usage-🚀-commands* + +Plugins are managed with the `:Lazy` command. Open the help with `` to see +all the key mappings. + +You can press `` on a plugin to show its details. Most properties can be +hovered with `` to open links, help files, readmes, git commits and git +issues. + +Lazy can automatically check for updates in the background. This feature can be +enabled with `config.checker.enabled = true`. + +Any operation can be started from the UI, with a sub command or an API +function: + + ---------------------------------------------------------------------------------- + Command Lua Description + ------------------------- -------------------------------- ----------------------- + :Lazy build {plugins} require("lazy").build(opts) Rebuild a plugin + + :Lazy check [plugins] require("lazy").check(opts?) Check for updates and + show the log (git + fetch) + + :Lazy clean [plugins] require("lazy").clean(opts?) Clean plugins that are + no longer needed + + :Lazy clear require("lazy").clear() Clear finished tasks + + :Lazy debug require("lazy").debug() Show debug information + + :Lazy health require("lazy").health() Run :checkhealth lazy + + :Lazy help require("lazy").help() Toggle this help page + + :Lazy home require("lazy").home() Go back to plugin list + + :Lazy install [plugins] require("lazy").install(opts?) Install missing plugins + + :Lazy load {plugins} require("lazy").load(opts) Load a plugin that has + not been loaded yet. + Similar to :packadd. + Like + :Lazy load foo.nvim. + Use :Lazy! load to skip + cond checks. + + :Lazy log [plugins] require("lazy").log(opts?) Show recent updates + + :Lazy profile require("lazy").profile() Show detailed profiling + + :Lazy reload {plugins} require("lazy").reload(opts) Reload a plugin + (experimental!!) + + :Lazy restore [plugins] require("lazy").restore(opts?) Updates all plugins to + the state in the + lockfile. For a single + plugin: restore it to + the state in the + lockfile or to a given + commit under the cursor + + :Lazy sync [plugins] require("lazy").sync(opts?) Run install, clean and + update + + :Lazy update [plugins] require("lazy").update(opts?) Update plugins. This + will also update the + lockfile + ---------------------------------------------------------------------------------- +Any command can have a **bang** to make the command wait till it finished. For +example, if you want to sync lazy from the cmdline, you can use: + +>shell + nvim --headless "+Lazy! sync" +qa +< + +`opts` is a table with the following key-values: + +- **wait**: when true, then the call will wait till the operation completed +- **show**: when false, the UI will not be shown +- **plugins**: a list of plugin names to run the operation on +- **concurrency**: limit the `number` of concurrently running tasks + +Stats API (`require("lazy").stats()`): + +>lua + { + -- startuptime in milliseconds till UIEnter + startuptime = 0, + -- when true, startuptime is the accurate cputime for the Neovim process. (Linux & macOS) + -- this is more accurate than `nvim --startuptime`, and as such will be slightly higher + -- when false, startuptime is calculated based on a delta with a timestamp when lazy started. + real_cputime = false, + count = 0, -- total number of plugins + loaded = 0, -- number of loaded plugins + ---@type table + times = {}, + } +< + +**lazy.nvim** provides a statusline component that you can use to show the +number of pending updates. Make sure to enable `config.checker.enabled = true` +to make this work. + +Example of configuring lualine.nvim ~ + +>lua + require("lualine").setup({ + sections = { + lualine_x = { + { + require("lazy.status").updates, + cond = require("lazy.status").has_updates, + color = { fg = "#ff9e64" }, + }, + }, + }, + }) +< + + +📆 USER EVENTS *lazy.nvim-🚀-usage-📆-user-events* + +The following user events will be triggered: + +- **LazyDone**: when lazy has finished starting up and loaded your config +- **LazySync**: after running sync +- **LazyInstall**: after an install +- **LazyUpdate**: after an update +- **LazyClean**: after a clean +- **LazyCheck**: after checking for updates +- **LazyLog**: after running log +- **LazyLoad**: after loading a plugin. The `data` attribute will contain the plugin name. +- **LazySyncPre**: before running sync +- **LazyInstallPre**: before an install +- **LazyUpdatePre**: before an update +- **LazyCleanPre**: before a clean +- **LazyCheckPre**: before checking for updates +- **LazyLogPre**: before running log +- **LazyReload**: triggered by change detection after reloading plugin specs +- **VeryLazy**: triggered after `LazyDone` and processing `VimEnter` auto commands +- **LazyVimStarted**: triggered after `UIEnter` when `require("lazy").stats().startuptime` has been calculated. + Useful to update the startuptime on your dashboard. + + +❌ UNINSTALLING *lazy.nvim-🚀-usage-❌-uninstalling* + +To uninstall **lazy.nvim**, you need to remove the following files and +directories: + +- **data**: `~/.local/share/nvim/lazy` +- **state**: `~/.local/state/nvim/lazy` +- **lockfile**: `~/.config/nvim/lazy-lock.json` + + + Paths can differ if you changed `XDG` environment variables. + +🔒 LOCKFILE *lazy.nvim-🚀-usage-🔒-lockfile* + +After every **update**, the local lockfile (`lazy-lock.json`) is updated with +the installed revisions. It is recommended to have this file under version +control. + +If you use your Neovim config on multiple machines, using the lockfile, you can +ensure that the same version of every plugin is installed. + +If you are on another machine, you can do `:Lazy restore`, to update all your +plugins to the version from the lockfile. + + +📦 MIGRATION GUIDE *lazy.nvim-🚀-usage-📦-migration-guide* + + +PACKER.NVIM ~ + +- `setup` ➡️ `init` +- `requires` ➡️ `dependencies` +- `as` ➡️ `name` +- `opt` ➡️ `lazy` +- `run` ➡️ `build` +- `lock` ➡️ `pin` +- `disable=true` ➡️ `enabled = false` +- `tag='*'` ➡️ `version="*"` +- `after` is **not needed** for most use-cases. Use `dependencies` otherwise. +- `wants` is **not needed** for most use-cases. Use `dependencies` otherwise. +- `config` don’t support string type, use `fun(LazyPlugin)` instead. +- `module` is auto-loaded. No need to specify +- `keys` spec is |lazy.nvim-different| +- `rtp` can be accomplished with: + +>lua + config = function(plugin) + vim.opt.rtp:append(plugin.dir .. "/custom-rtp") + end +< + +With packer `wants`, `requires` and `after` can be used to manage dependencies. +With lazy, this isn’t needed for most of the Lua dependencies. They can be +installed just like normal plugins (even with `lazy=true`) and will be loaded +when other plugins need them. The `dependencies` key can be used to group those +required plugins with the one that requires them. The plugins which are added +as `dependencies` will always be lazy-loaded and loaded when the plugin is +loaded. + + +PAQ-NVIM ~ + +- `as` ➡️ `name` +- `opt` ➡️ `lazy` +- `run` ➡️ `build` + + +⚡ PROFILING & DEBUG *lazy.nvim-🚀-usage-⚡-profiling-&-debug* + +Great care has been taken to make the startup code (`lazy.core`) as efficient +as possible. During startup, all Lua files used before `VimEnter` or +`BufReadPre` are byte-compiled and cached, similar to what impatient.nvim + does. + +My config for example loads in about `11ms` with `93` plugins. I do a lot of +lazy-loading though :) + +**lazy.nvim** comes with an advanced profiler `:Lazy profile` to help you +improve performance. The profiling view shows you why and how long it took to +load your plugins. + + +🐛 DEBUG ~ + +See an overview of active lazy-loading handlers and what’s in the module +cache. + + +📂 STRUCTURING YOUR PLUGINS*lazy.nvim-🚀-usage-📂-structuring-your-plugins* + +Some users may want to split their plugin specs in multiple files. Instead of +passing a spec table to `setup()`, you can use a Lua module. The specs from the +**module** and any top-level **sub-modules** will be merged together in the +final spec, so it is not needed to add `require` calls in your main plugin file +to the other files. + +The benefits of using this approach: + +- Simple to **add** new plugin specs. Just create a new file in your plugins module. +- Allows for **caching** of all your plugin specs. This becomes important if you have a lot of smaller plugin specs. +- Spec changes will automatically be **reloaded** when they’re updated, so the `:Lazy` UI is always up to date. + +Example: + +- `~/.config/nvim/init.lua` + +>lua + require("lazy").setup("plugins") +< + +- `~/.config/nvim/lua/plugins.lua` or `~/.config/nvim/lua/plugins/init.lua` **(this file is optional)** + +>lua + return { + "folke/neodev.nvim", + "folke/which-key.nvim", + { "folke/neoconf.nvim", cmd = "Neoconf" }, + } +< + +- Any lua file in `~/.config/nvim/lua/plugins/*.lua` will be automatically merged in the main plugin spec + +For a real-life example, you can check LazyVim + and more specifically: + +- lazyvim.plugins contains all the plugin specs that will be loaded + + +↩️ IMPORTING SPECS, CONFIG & OPTS + +As part of a spec, you can add `import` statements to import additional plugin +modules. Both of the `setup()` calls are equivalent: + +>lua + require("lazy").setup("plugins") + + -- Same as: + require("lazy").setup({{import = "plugins"}}) +< + +To import multiple modules from a plugin, add additional specs for each import. +For example, to import LazyVim core plugins and an optional plugin: + +>lua + require("lazy").setup({ + spec = { + { "LazyVim/LazyVim", import = "lazyvim.plugins" }, + { import = "lazyvim.plugins.extras.coding.copilot" }, + } + }) +< + +When you import specs, you can override them by simply adding a spec for the +same plugin to your local specs, adding any keys you want to override / merge. + +`opts`, `dependencies`, `cmd`, `event`, `ft` and `keys` are always merged with +the parent spec. Any other property will override the property from the parent +spec. + + +============================================================================== +8. 🔥 Developers *lazy.nvim-🔥-developers* + +To make it easier for users to install your plugin, you can include a package +spec in your repo. + + +BEST PRACTICES *lazy.nvim-🔥-developers-best-practices* + +- If your plugin needs `setup()`, then create a simple `lazy.lua` file like this: + >lua + return { "me/my-plugin", opts = {} } + < +- Plugins that are pure lua libraries should be lazy-loaded with `lazy = true`. + >lua + { "nvim-lua/plenary.nvim", lazy = true } + < +- Always use `opts` instead of `config` when possible. `config` is almost never + needed. +- Only use `dependencies` if a plugin needs the dep to be installed **AND** + loaded. Lua plugins/libraries are automatically loaded when they are + `require()`d, so they don’t need to be in `dependencies`. +- Inside a `build` function or `*.lua` build file, use + `coroutine.yield(msg:string|LazyMsg)` to show progress. +- Don’t change the `cwd` in your build function, since builds run in parallel + and changing the `cwd` will affect other builds. + + +BUILDING *lazy.nvim-🔥-developers-building* + +The spec **build** property can be one of the following: + +- `fun(plugin: LazyPlugin)`: a function that builds the plugin. +- `*.lua`: a Lua file that builds the plugin (like `build.lua`) +- `":Command"`: a Neovim command +- `"rockspec"`: this will run `luarocks make` in the plugin’s directory + This is automatically set by the `rockspec` package source. +- any other **string** will be run as a shell command +- a `list` of any of the above to run multiple build steps +- if no `build` is specified, but a `build.lua` file exists, that will be used instead. + +Build functions and `*.lua` files run asynchronously in a coroutine. Use +`coroutine.yield(msg:string|LazyMsg)` to show progress. + +Yielding will also schedule the next `coroutine.resume()` to run in the next +tick, so you can do long-running tasks without blocking Neovim. + +>lua + ---@class LazyMsg + ---@field msg string + ---@field level? number vim.log.levels.XXX +< + +Use `vim.log.levels.TRACE` to only show the message as a **status** message for +the task. + + + +MINIT (MINIMAL INIT) *lazy.nvim-🔥-developers-minit-(minimal-init)* + +**lazy.nvim** comes with some built-in functionality to help you create a +minimal init for your plugin. + +I mainly use this for testing and for users to create a `repro.lua`. + +When running in **headless** mode, **lazy.nvim** will log any messages to the +terminal. See `opts.headless` for more info. + +**minit** will install/load all your specs and will always run an update as +well. + + +BOOTSTRAP ~ + +>lua + -- setting this env will override all XDG paths + vim.env.LAZY_STDPATH = ".tests" + -- this will install lazy in your stdpath + load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() +< + + +TESTING WITH BUSTED ~ + +This will add `"lunarmodules/busted"`, configure `hererocks` and run `busted`. + +Below is an example of how I use **minit** to run tests with busted + in **LazyVim**. + +>lua + #!/usr/bin/env -S nvim -l + + vim.env.LAZY_STDPATH = ".tests" + load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() + + -- Setup lazy.nvim + require("lazy.minit").busted({ + spec = { + "LazyVim/starter", + "williamboman/mason-lspconfig.nvim", + "williamboman/mason.nvim", + "nvim-treesitter/nvim-treesitter", + }, + }) +< + +To use this, you can run: + +>sh + nvim -l ./tests/busted.lua tests +< + +If you want to inspect the test environment, run: + +>sh + nvim -u ./tests/busted.lua +< + + +REPRO.LUA ~ + +>lua + vim.env.LAZY_STDPATH = ".repro" + load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() + + require("lazy.minit").repro({ + spec = { + "stevearc/conform.nvim", + "nvim-neotest/nvim-nio", + }, + }) + + -- do anything else you need to do to reproduce the issue +< + +Then run it with: + +>sh + nvim -u repro.lua +< + +============================================================================== +9. Links *lazy.nvim-links* 1. *image*: https://user-images.githubusercontent.com/292349/208301737-68fb279c-ba70-43ef-a369-8c3e8367d6b1.png +2. *image*: https://user-images.githubusercontent.com/292349/208301766-5c400561-83c3-4811-9667-1ec4bb3c43b8.png +3. *image*: https://user-images.githubusercontent.com/292349/208301790-7eedbfa5-d202-4e70-852e-de68aa47233b.png Generated by panvimdoc From c3a9cec06b62c7fbd896644c13840f18fcc79e67 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 6 Jul 2024 11:45:24 +0200 Subject: [PATCH 226/342] ci: update --- .github/workflows/update.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 .github/workflows/update.yml diff --git a/.github/workflows/update.yml b/.github/workflows/update.yml new file mode 100644 index 0000000..2177a50 --- /dev/null +++ b/.github/workflows/update.yml @@ -0,0 +1,12 @@ +name: Update Repo + +on: + workflow_dispatch: + schedule: + # Run every hour + - cron: "0 * * * *" + +jobs: + ci: + uses: folke/github/.github/workflows/update.yml@main + secrets: inherit From e3154ff0b7055f1bcded818d52cb518cac899ee8 Mon Sep 17 00:00:00 2001 From: folke Date: Sat, 6 Jul 2024 09:48:26 +0000 Subject: [PATCH 227/342] chore(build): auto-generate docs --- doc/lazy.nvim.txt | 1398 ++------------------------------------------- 1 file changed, 46 insertions(+), 1352 deletions(-) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index 73bd0ae..cb18dda 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -1,130 +1,61 @@ -*lazy.nvim.txt* A modern plugin manager for Neovim +*lazy.nvim.txt* For Neovim Last change: 2024 July 06 ============================================================================== 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. 📰 What’s new? *lazy.nvim-📰-what’s-new?* + - Features |lazy.nvim-features| + - Requirements |lazy.nvim-requirements| + - Getting Started |lazy.nvim-getting-started| +1. Links |lazy.nvim-links| +Install +· +Configure +· +Docs + + + + + + + + + + + + + + -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 . The GitHub `README.md` - has been updated to point to the new website. The `vimdoc` contains all the - information that is available on the website. -- **Spec Resolution & Merging**: the code that resolves a final spec from a - plugin’s fragments has been rewritten. This should be a tiny bit faster, but - more importantly, fixes some issues and is easier to maintain. -- Packages can now specify their dependencies - and configuration using one of: - - **Lazy**: `lazy.lua` file - - **Rockspec**: luarocks `*-scm-1.rockspec` file - - **Packspec**: `pkg.json` (experimental, since the format is not quite there yet) - Related _lazy.nvim_ options: - >lua - { - pkg = { - enabled = true, - cache = vim.fn.stdpath("state") .. "/lazy/pkg-cache.lua", - -- the first package source that is found for a plugin will be used. - sources = { - "lazy", - "rockspec", -- will only be used when rocks.enabled is true - "packspec", - }, - }, - rocks = { - enabled = true, - root = vim.fn.stdpath("data") .. "/lazy-rocks", - server = "https://nvim-neorocks.github.io/rocks-binaries/", - }, - } - < -- Installing neorg is now as simple as: - >lua - { "nvim-neorg/neorg", opts = {} } - < -- Packages are not limited to just Neovim plugins. You can install any - **luarocks** package, like: - >lua - { "https://github.com/lubyk/yaml" } - < - Luarocks packages without a `/lua` directory are never lazy-loaded, since - it’s just a library. -- `build` functions or `*.lua` build files (like `build.lua`) now run - asynchronously. You can use `coroutine.yield(status_msg)` to show progress. - Yielding will also schedule the next `resume` to run in the next tick, so you - can do long-running tasks without blocking Neovim. -============================================================================== -2. 🚀 Getting Started *lazy.nvim-🚀-getting-started* **lazy.nvim** is a modern plugin manager for Neovim. -✨ FEATURES *lazy.nvim-🚀-getting-started-✨-features* +FEATURES *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 support -- 📈 Statusline component to see the number of pending updates -- 🎨 Automatically lazy-loads colorschemes +- 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 support +- Statusline component to see the number of pending updates +- Automatically lazy-loads colorschemes -⚡️ REQUIREMENTS *lazy.nvim-🚀-getting-started-⚡️-requirements* +REQUIREMENTS *lazy.nvim-requirements* - Neovim >= **0.8.0** (needs to be built with **LuaJIT**) - Git >= **2.19.0** (for partial clones support) @@ -133,1251 +64,14 @@ Table of Contents *lazy.nvim-table-of-contents* You can remove `rockspec` from `opts.pkg.sources` to disable this feature. -============================================================================== -3. 🛠️ Installation *lazy.nvim-🛠️-installation* - -There are multiple ways to install **lazy.nvim**. The **Structured Setup** is -the recommended way, but you can also use the **Single File Setup** if you -prefer to keep everything in your `init.lua`. - -Please refer to the Configuration section for an overview of -all available options. - - - - -STRUCTURED SETUP *lazy.nvim-🛠️-installation-structured-setup* - ->lua - require("config.lazy") -< - ->lua - -- Bootstrap lazy.nvim - local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" - if not (vim.uv or vim.loop).fs_stat(lazypath) then - local lazyrepo = "https://github.com/folke/lazy.nvim.git" - local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) - if vim.v.shell_error ~= 0 then - vim.api.nvim_echo({ - { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, - { out, "WarningMsg" }, - { "\nPress any key to exit..." }, - }, true, {}) - vim.fn.getchar() - os.exit(1) - end - end - vim.opt.rtp:prepend(lazypath) - - -- Make sure to setup `mapleader` and `maplocalleader` before - -- loading lazy.nvim so that mappings are correct. - -- This is also a good place to setup other settings (vim.opt) - vim.g.mapleader = " " - vim.g.maplocalleader = "\\" - - -- Setup lazy.nvim - require("lazy").setup({ - -- highlight-start - spec = { - -- import your plugins - { import = "plugins" }, - }, - -- highlight-end - -- Configure any other settings here. See the documentation for more details. - -- colorscheme that will be used when installing plugins. - install = { colorscheme = { "habamax" } }, - -- automatically check for plugin updates - checker = { enabled = true }, - }) -< - -You can then create your plugin specs in `~/.config/nvim/lua/plugins/`. Each -file should return a table with the plugins you want to install. - -For more info see Structuring Your Plugins - - -SINGLE FILE SETUP *lazy.nvim-🛠️-installation-single-file-setup* - ->lua - -- Bootstrap lazy.nvim - local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" - if not (vim.uv or vim.loop).fs_stat(lazypath) then - local lazyrepo = "https://github.com/folke/lazy.nvim.git" - local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) - if vim.v.shell_error ~= 0 then - vim.api.nvim_echo({ - { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, - { out, "WarningMsg" }, - { "\nPress any key to exit..." }, - }, true, {}) - vim.fn.getchar() - os.exit(1) - end - end - vim.opt.rtp:prepend(lazypath) - - -- Make sure to setup `mapleader` and `maplocalleader` before - -- loading lazy.nvim so that mappings are correct. - -- This is also a good place to setup other settings (vim.opt) - vim.g.mapleader = " " - vim.g.maplocalleader = "\\" - - -- Setup lazy.nvim - require("lazy").setup({ - -- highlight-start - spec = { - -- add your plugins here - }, - -- highlight-end - -- Configure any other settings here. See the documentation for more details. - -- colorscheme that will be used when installing plugins. - install = { colorscheme = { "habamax" } }, - -- automatically check for plugin updates - checker = { enabled = true }, - }) -< +GETTING STARTED *lazy.nvim-getting-started* +Check the documentation website for more information. ============================================================================== -4. 🔌 Plugin Spec *lazy.nvim-🔌-plugin-spec* - - -SPEC SOURCE *lazy.nvim-🔌-plugin-spec-spec-source* - - ----------------------------------------------------------------------------------- - Property Type Description - ---------- ---------- ------------------------------------------------------------- - [1] string? Short plugin url. Will be expanded using - config.git.url_format. Can also be a url or dir. - - dir string? A directory pointing to a local plugin - - url string? A custom git url where the plugin is hosted - - name string? A custom name for the plugin used for the local plugin - directory and as the display name - - dev boolean? When true, a local plugin directory will be used instead. See - config.dev - ----------------------------------------------------------------------------------- -A valid spec should define one of `[1]`, `dir` or `url`. - - -SPEC LOADING *lazy.nvim-🔌-plugin-spec-spec-loading* - - -------------------------------------------------------------------------------------------------- - Property Type Description - -------------- ------------------------- --------------------------------------------------------- - dependencies LazySpec[] A list of plugin names or plugin specs that should be - loaded when the plugin loads. Dependencies are always - lazy-loaded unless specified otherwise. When specifying a - name, make sure the plugin spec has been defined - somewhere else. - - enabled boolean? or fun():boolean When false, or if the function returns false, then this - plugin will not be included in the spec - - cond boolean? or Behaves the same as enabled, but won’t uninstall the - fun(LazyPlugin):boolean plugin when the condition is false. Useful to disable - some plugins in vscode, or firenvim for example. - - priority number? Only useful for start plugins (lazy=false) to force - loading certain plugins first. Default priority is 50. - It’s recommended to set this to a high number for - colorschemes. - -------------------------------------------------------------------------------------------------- - -SPEC SETUP *lazy.nvim-🔌-plugin-spec-spec-setup* - - -------------------------------------------------------------------------------------------------- - Property Type Description - ---------- ----------------------------- --------------------------------------------------------- - init fun(LazyPlugin) init functions are always executed during. Mostly useful - for setting vim.g.* configuration used by Vim plugins - startup - - opts table or opts should be a table (will be merged with parent - fun(LazyPlugin, opts:table) specs), return a table (replaces parent specs) or should - change a table. The table will be passed to the - Plugin.config() function. Setting this value will imply - Plugin.config() - - config fun(LazyPlugin, opts:table) config is executed when the plugin loads. The default - or true implementation will automatically run - require(MAIN).setup(opts) if opts or config = true is - set. Lazy uses several heuristics to determine the - plugin’s MAIN module automatically based on the plugin’s - name. (opts is the recommended way to configure plugins). - - main string? You can specify the main module to use for config() and - opts(), in case it can not be determined automatically. - See config() - - build fun(LazyPlugin) or string or build is executed when a plugin is installed or updated. - false or a list of build See Building for more information. - commands - -------------------------------------------------------------------------------------------------- -Always use `opts` instead of `config` when possible. `config` is almost never -needed. - - - - -SPEC LAZY LOADING *lazy.nvim-🔌-plugin-spec-spec-lazy-loading* - - -------------------------------------------------------------------------------------------------------------------- - Property Type Description - ---------- ---------------------------------------------------------------- ---------------------------------------- - lazy boolean? When true, the plugin will only be - loaded when needed. Lazy-loaded plugins - are automatically loaded when their Lua - modules are required, or when one of the - lazy-loading handlers triggers - - event string? or string[] or Lazy-load on event. Events can be - fun(self:LazyPlugin, event:string[]):string[] or specified as BufEnter or with a pattern - {event:string[]\|string, pattern?:string[]\|string} like BufEnter *.lua - - cmd string? or string[] or Lazy-load on command - fun(self:LazyPlugin, cmd:string[]):string[] - - ft string? or string[] or Lazy-load on filetype - fun(self:LazyPlugin, ft:string[]):string[] - - keys string? or string[] or LazyKeysSpec[] or Lazy-load on key mapping - fun(self:LazyPlugin, keys:string[]):(string \| LazyKeysSpec)[] - -------------------------------------------------------------------------------------------------------------------- -Refer to the Lazy Loading <./lazy_loading.md> section for more information. - - -SPEC VERSIONING *lazy.nvim-🔌-plugin-spec-spec-versioning* - - ------------------------------------------------------------------------------ - Property Type Description - ------------ -------------------- -------------------------------------------- - branch string? Branch of the repository - - tag string? Tag of the repository - - commit string? Commit of the repository - - version string? or false to Version to use from the repository. Full - override the default Semver ranges are supported - - pin boolean? When true, this plugin will not be included - in updates - - submodules boolean? When false, git submodules will not be - fetched. Defaults to true - ------------------------------------------------------------------------------ -Refer to the Versioning <./versioning.md> section for more information. - - -SPEC ADVANCED *lazy.nvim-🔌-plugin-spec-spec-advanced* - - ---------------------------------------------------------------------------------------- - Property Type Description - ---------- ---------- ------------------------------------------------------------------ - optional boolean? When a spec is tagged optional, it will only be included in the - final spec, when the same plugin has been specified at least once - somewhere else without optional. This is mainly useful for Neovim - distros, to allow setting options on plugins that may/may not be - part of the user’s plugins. - - specs LazySpec A list of plugin specs defined in the scope of the plugin. This is - mainly useful for Neovim distros, to allow setting options on - plugins that may/may not be part of the user’s plugins. When the - plugin is disabled, none of the scoped specs will be included in - the final spec. Similar to dependencies without the automatic - loading of the specs. - - module false? Do not automatically load this Lua module when it’s required - somewhere - - import string? Import the given spec module. - ---------------------------------------------------------------------------------------- - -EXAMPLES *lazy.nvim-🔌-plugin-spec-examples* - ->lua - return { - -- the colorscheme should be available when starting Neovim - { - "folke/tokyonight.nvim", - lazy = false, -- make sure we load this during startup if it is your main colorscheme - priority = 1000, -- make sure to load this before all the other start plugins - config = function() - -- load the colorscheme here - vim.cmd([[colorscheme tokyonight]]) - end, - }, - - -- I have a separate config.mappings file where I require which-key. - -- With lazy the plugin will be automatically loaded when it is required somewhere - { "folke/which-key.nvim", lazy = true }, - - { - "nvim-neorg/neorg", - -- lazy-load on filetype - ft = "norg", - -- options for neorg. This will automatically call `require("neorg").setup(opts)` - opts = { - load = { - ["core.defaults"] = {}, - }, - }, - }, - - { - "dstein64/vim-startuptime", - -- lazy-load on a command - cmd = "StartupTime", - -- init is called during startup. Configuration for vim plugins typically should be set in an init function - init = function() - vim.g.startuptime_tries = 10 - end, - }, - - { - "hrsh7th/nvim-cmp", - -- load cmp on InsertEnter - event = "InsertEnter", - -- these dependencies will only be loaded when cmp loads - -- dependencies are always lazy-loaded unless specified otherwise - dependencies = { - "hrsh7th/cmp-nvim-lsp", - "hrsh7th/cmp-buffer", - }, - config = function() - -- ... - end, - }, - - -- if some code requires a module from an unloaded plugin, it will be automatically loaded. - -- So for api plugins like devicons, we can always set lazy=true - { "nvim-tree/nvim-web-devicons", lazy = true }, - - -- you can use the VeryLazy event for things that can - -- load later and are not important for the initial UI - { "stevearc/dressing.nvim", event = "VeryLazy" }, - - { - "Wansmer/treesj", - keys = { - { "J", "TSJToggle", desc = "Join Toggle" }, - }, - opts = { use_default_keymaps = false, max_join_length = 150 }, - }, - - { - "monaqa/dial.nvim", - -- lazy-load on keys - -- mode is `n` by default. For more advanced options, check the section on key mappings - keys = { "", { "", mode = "n" } }, - }, - - -- local plugins need to be explicitly configured with dir - { dir = "~/projects/secret.nvim" }, - - -- you can use a custom url to fetch a plugin - { url = "git@github.com:folke/noice.nvim.git" }, - - -- local plugins can also be configured with the dev option. - -- This will use {config.dev.path}/noice.nvim/ instead of fetching it from GitHub - -- With the dev option, you can easily switch between the local and installed version of a plugin - { "folke/noice.nvim", dev = true }, - } -< - - -LAZY LOADING *lazy.nvim-🔌-plugin-spec-lazy-loading* - -**lazy.nvim** automagically lazy-loads Lua modules. This means that if you have -a plugin `A` that is lazy-loaded and a plugin `B` that requires a module of -plugin `A`, then plugin `A` will be loaded on demand as expected. - - -Additionally, you can also lazy-load on **events**, **commands**, **file -types** and **key mappings**. - -Plugins will be lazy-loaded when one of the following is `true`: - -- The plugin only exists as a dependency in your spec -- It has an `event`, `cmd`, `ft` or `keys` key -- `config.defaults.lazy == true` - - -🌈 COLORSCHEMES ~ - -Colorscheme plugins can be configured with `lazy=true`. The plugin will -automagically load when doing `colorscheme foobar`. - - - -⌨️ LAZY KEY MAPPINGS ~ - -The `keys` property can be a `string` or `string[]` for simple normal-mode -mappings, or it can be a `LazyKeysSpec` table with the following key-value -pairs: - -- **[1]**: (`string`) lhs **(required)** -- **[2]**: (`string|fun()`) rhs **(optional)** -- **mode**: (`string|string[]`) mode **(optional, defaults to "n")** -- **ft**: (`string|string[]`) `filetype` for buffer-local keymaps **(optional)** -- any other option valid for `vim.keymap.set` - -Key mappings will load the plugin the first time they get executed. - -When `[2]` is `nil`, then the real mapping has to be created by the `config()` -function. - ->lua - -- Example for neo-tree.nvim - { - "nvim-neo-tree/neo-tree.nvim", - keys = { - { "ft", "Neotree toggle", desc = "NeoTree" }, - }, - config = function() - require("neo-tree").setup() - end, - } -< - - -VERSIONING *lazy.nvim-🔌-plugin-spec-versioning* - -If you want to install a specific revision of a plugin, you can use `commit`, -`tag`, `branch`, `version`. - -The `version` property supports Semver ranges. - - - -EXAMPLES ~ - -- `*`: latest stable version (this excludes pre-release versions) -- `1.2.x`: any version that starts with `1.2`, such as `1.2.0`, `1.2.3`, etc. -- `^1.2.3`: any version that is compatible with `1.2.3`, such as `1.3.0`, `1.4.5`, etc., but not `2.0.0`. -- `~1.2.3`: any version that is compatible with `1.2.3`, such as `1.2.4`, `1.2.5`, but not `1.3.0`. -- `>1.2.3`: any version that is greater than `1.2.3`, such as `1.3.0`, `1.4.5`, etc. -- `>=1.2.3`: any version that is greater than or equal to `1.2.3`, such as `1.2.3`, `1.3.0`, `1.4.5`, etc. -- `<1.2.3`: any version that is less than `1.2.3`, such as `1.1.0`, `1.0.5`, etc. -- `<=1.2.3`: any version that is less than or equal to `1.2.3`, such as `1.2.3`, `1.1.0`, `1.0.5`, etc - - -============================================================================== -5. 📦 Packages *lazy.nvim-📦-packages* - -**lazy.nvim** supports three ways for plugins to define their dependencies and -configuration. - -- **Lazy**: `lazy.lua` file -- **Rockspec**: luarocks `*-scm-1.rockspec` file -- **Packspec**: `pkg.json` (experimental, since the format is not quite there yet) - -You can enable/disable package sources with `config.pkg.sources` -. The order of sources is important, as the first source that -finds a package will be used. - - - -LAZY *lazy.nvim-📦-packages-lazy* - -Using a `lazy.lua` file is the recommended way to define your plugin -dependencies and configuration. Syntax is the same as any plugin spec. - - -ROCKSPEC *lazy.nvim-📦-packages-rockspec* - -When a plugin contains a `*-1.rockspec` file, **lazy.nvim** will automatically -build the rock and its dependencies. - -A **rockspec** will only be used if one of the following is true: - -- the package does not have a `/lua` directory -- the package has a complex build step -- the package has dependencies (excluding `lua`) - - -PACKSPEC *lazy.nvim-📦-packages-packspec* - -Supports the pkg.json - format, with -a lazy extension in `lazy`. `lazy` can contain any valid lazy spec fields. They -will be added to the plugin’s spec. - - -============================================================================== -6. ⚙️ Configuration *lazy.nvim-⚙️-configuration* - -**lazy.nvim** comes with the following defaults: - ->lua - { - root = vim.fn.stdpath("data") .. "/lazy", -- directory where plugins will be installed - defaults = { - -- Set this to `true` to have all your plugins lazy-loaded by default. - -- Only do this if you know what you are doing, as it can lead to unexpected behavior. - lazy = false, -- should plugins be lazy-loaded? - -- It's recommended to leave version=false for now, since a lot the plugin that support versioning, - -- have outdated releases, which may break your Neovim install. - version = nil, -- always use the latest git commit - -- version = "*", -- try installing the latest stable version for plugins that support semver - -- default `cond` you can use to globally disable a lot of plugins - -- when running inside vscode for example - cond = nil, ---@type boolean|fun(self:LazyPlugin):boolean|nil - }, - -- leave nil when passing the spec as the first argument to setup() - spec = nil, ---@type LazySpec - local_spec = true, -- load project specific .lazy.lua spec files. They will be added at the end of the spec. - lockfile = vim.fn.stdpath("config") .. "/lazy-lock.json", -- lockfile generated after running update. - ---@type number? limit the maximum amount of concurrent tasks - concurrency = jit.os:find("Windows") and (vim.uv.available_parallelism() * 2) or nil, - git = { - -- defaults for the `Lazy log` command - -- log = { "--since=3 days ago" }, -- show commits from the last 3 days - log = { "-8" }, -- show the last 8 commits - timeout = 120, -- kill processes that take more than 2 minutes - url_format = "https://github.com/%s.git", - -- lazy.nvim requires git >=2.19.0. If you really want to use lazy with an older version, - -- then set the below to false. This should work, but is NOT supported and will - -- increase downloads a lot. - filter = true, - }, - pkg = { - enabled = true, - cache = vim.fn.stdpath("state") .. "/lazy/pkg-cache.lua", - versions = true, -- Honor versions in pkg sources - -- the first package source that is found for a plugin will be used. - sources = { - "lazy", - "rockspec", - "packspec", - }, - }, - rocks = { - root = vim.fn.stdpath("data") .. "/lazy-rocks", - server = "https://nvim-neorocks.github.io/rocks-binaries/", - }, - dev = { - ---@type string | fun(plugin: LazyPlugin): string directory where you store your local plugin projects - path = "~/projects", - ---@type string[] plugins that match these patterns will use your local versions instead of being fetched from GitHub - patterns = {}, -- For example {"folke"} - fallback = false, -- Fallback to git when local plugin doesn't exist - }, - install = { - -- install missing plugins on startup. This doesn't increase startup time. - missing = true, - -- try to load one of these colorschemes when starting an installation during startup - colorscheme = { "habamax" }, - }, - ui = { - -- a number <1 is a percentage., >1 is a fixed size - size = { width = 0.8, height = 0.8 }, - wrap = true, -- wrap the lines in the ui - -- The border to use for the UI window. Accepts same border values as |nvim_open_win()|. - border = "none", - -- The backdrop opacity. 0 is fully opaque, 100 is fully transparent. - backdrop = 60, - title = nil, ---@type string only works when border is not "none" - title_pos = "center", ---@type "center" | "left" | "right" - -- Show pills on top of the Lazy window - pills = true, ---@type boolean - icons = { - cmd = " ", - config = "", - event = " ", - favorite = " ", - ft = " ", - init = " ", - import = " ", - keys = " ", - lazy = "󰒲 ", - loaded = "●", - not_loaded = "○", - plugin = " ", - runtime = " ", - require = "󰢱 ", - source = " ", - start = " ", - task = "✔ ", - list = { - "●", - "➜", - "★", - "‒", - }, - }, - -- leave nil, to automatically select a browser depending on your OS. - -- If you want to use a specific browser, you can define it here - browser = nil, ---@type string? - throttle = 20, -- how frequently should the ui process render events - custom_keys = { - -- You can define custom key maps here. If present, the description will - -- be shown in the help menu. - -- To disable one of the defaults, set it to false. - - ["l"] = { - function(plugin) - require("lazy.util").float_term({ "lazygit", "log" }, { - cwd = plugin.dir, - }) - end, - desc = "Open lazygit log", - }, - - ["t"] = { - function(plugin) - require("lazy.util").float_term(nil, { - cwd = plugin.dir, - }) - end, - desc = "Open terminal in plugin dir", - }, - }, - }, - diff = { - -- diff command can be one of: - -- * browser: opens the github compare view. Note that this is always mapped to as well, - -- so you can have a different command for diff - -- * git: will run git diff and open a buffer with filetype git - -- * terminal_git: will open a pseudo terminal with git diff - -- * diffview.nvim: will open Diffview to show the diff - cmd = "git", - }, - checker = { - -- automatically check for plugin updates - enabled = false, - concurrency = nil, ---@type number? set to 1 to check for updates very slowly - notify = true, -- get a notification when new updates are found - frequency = 3600, -- check for updates every hour - check_pinned = false, -- check for pinned packages that can't be updated - }, - change_detection = { - -- automatically check for config file changes and reload the ui - enabled = true, - notify = true, -- get a notification when changes are found - }, - performance = { - cache = { - enabled = true, - }, - reset_packpath = true, -- reset the package path to improve startup time - rtp = { - reset = true, -- reset the runtime path to $VIMRUNTIME and your config directory - ---@type string[] - paths = {}, -- add any custom paths here that you want to includes in the rtp - ---@type string[] list any plugins you want to disable here - disabled_plugins = { - -- "gzip", - -- "matchit", - -- "matchparen", - -- "netrwPlugin", - -- "tarPlugin", - -- "tohtml", - -- "tutor", - -- "zipPlugin", - }, - }, - }, - -- lazy can generate helptags from the headings in markdown readme files, - -- so :help works even for plugins that don't have vim docs. - -- when the readme opens with :help it will be correctly displayed as markdown - readme = { - enabled = true, - root = vim.fn.stdpath("state") .. "/lazy/readme", - files = { "README.md", "lua/**/README.md" }, - -- only generate markdown helptags for plugins that dont have docs - skip_if_doc_exists = true, - }, - state = vim.fn.stdpath("state") .. "/lazy/state.json", -- state info for checker and other things - -- Enable profiling of lazy.nvim. This will add some overhead, - -- so only enable this when you are debugging lazy.nvim - profiling = { - -- Enables extra stats on the debug tab related to the loader cache. - -- Additionally gathers stats about all package.loaders - loader = false, - -- Track each new require in the Lazy profiling tab - require = false, - }, - } -< - -If you don’t want to use a Nerd Font, you can replace the icons with Unicode symbols. ~ - ->lua - { - ui = { - icons = { - cmd = "⌘", - config = "🛠", - event = "📅", - ft = "📂", - init = "⚙", - keys = "🗝", - plugin = "🔌", - runtime = "💻", - require = "🌙", - source = "📄", - start = "🚀", - task = "📌", - lazy = "💤 ", - }, - }, - } -< - - -🌈 HIGHLIGHT GROUPS *lazy.nvim-⚙️-configuration-🌈-highlight-groups* - - ----------------------------------------------------------------------- - Highlight Group Default Group Description - ----------------------- ----------------------- ----------------------- - LazyButton CursorLine - - LazyButtonActive Visual - - LazyComment Comment - - LazyCommit @variable.builtin commit ref - - LazyCommitIssue Number - - LazyCommitScope Italic conventional commit - scope - - LazyCommitType Title conventional commit - type - - LazyDimmed Conceal property - - LazyDir @markup.link directory - - LazyH1 IncSearch home button - - LazyH2 Bold titles - - LazyLocal Constant - - LazyNoCond DiagnosticWarn unloaded icon for a - plugin where cond() was - false - - LazyNormal NormalFloat - - LazyProgressDone Constant progress bar done - - LazyProgressTodo LineNr progress bar todo - - LazyProp Conceal property - - LazyReasonCmd Operator - - LazyReasonEvent Constant - - LazyReasonFt Character - - LazyReasonImport Identifier - - LazyReasonKeys Statement - - LazyReasonPlugin Special - - LazyReasonRequire @variable.parameter - - LazyReasonRuntime @macro - - LazyReasonSource Character - - LazyReasonStart @variable.member - - LazySpecial @punctuation.special - - LazyTaskError ErrorMsg task errors - - LazyTaskOutput MsgArea task output - - LazyUrl @markup.link url - - LazyValue @string value of a property - ----------------------------------------------------------------------- - -============================================================================== -7. 🚀 Usage *lazy.nvim-🚀-usage* - - -▶️ STARTUP SEQUENCE *lazy.nvim-🚀-usage-▶️-startup-sequence* - -**lazy.nvim** does **NOT** use Neovim packages and even disables plugin loading -completely (`vim.go.loadplugins = false`). It takes over the complete startup -sequence for more flexibility and better performance. - -In practice this means that step 10 of |Neovim Initialization| is done by Lazy: - -1. All the plugins’ `init()` functions are executed -2. All plugins with `lazy=false` are loaded. This includes sourcing `/plugin` and `/ftdetect` files. (`/after` will not be sourced yet) -3. All files from `/plugin` and `/ftdetect` directories in your rtp are sourced (excluding `/after`) -4. All `/after/plugin` files are sourced (this includes `/after` from plugins) - -Files from runtime directories are always sourced in alphabetical order. - - -🚀 COMMANDS *lazy.nvim-🚀-usage-🚀-commands* - -Plugins are managed with the `:Lazy` command. Open the help with `` to see -all the key mappings. - -You can press `` on a plugin to show its details. Most properties can be -hovered with `` to open links, help files, readmes, git commits and git -issues. - -Lazy can automatically check for updates in the background. This feature can be -enabled with `config.checker.enabled = true`. - -Any operation can be started from the UI, with a sub command or an API -function: - - ---------------------------------------------------------------------------------- - Command Lua Description - ------------------------- -------------------------------- ----------------------- - :Lazy build {plugins} require("lazy").build(opts) Rebuild a plugin - - :Lazy check [plugins] require("lazy").check(opts?) Check for updates and - show the log (git - fetch) - - :Lazy clean [plugins] require("lazy").clean(opts?) Clean plugins that are - no longer needed - - :Lazy clear require("lazy").clear() Clear finished tasks - - :Lazy debug require("lazy").debug() Show debug information - - :Lazy health require("lazy").health() Run :checkhealth lazy - - :Lazy help require("lazy").help() Toggle this help page - - :Lazy home require("lazy").home() Go back to plugin list - - :Lazy install [plugins] require("lazy").install(opts?) Install missing plugins - - :Lazy load {plugins} require("lazy").load(opts) Load a plugin that has - not been loaded yet. - Similar to :packadd. - Like - :Lazy load foo.nvim. - Use :Lazy! load to skip - cond checks. - - :Lazy log [plugins] require("lazy").log(opts?) Show recent updates - - :Lazy profile require("lazy").profile() Show detailed profiling - - :Lazy reload {plugins} require("lazy").reload(opts) Reload a plugin - (experimental!!) - - :Lazy restore [plugins] require("lazy").restore(opts?) Updates all plugins to - the state in the - lockfile. For a single - plugin: restore it to - the state in the - lockfile or to a given - commit under the cursor - - :Lazy sync [plugins] require("lazy").sync(opts?) Run install, clean and - update - - :Lazy update [plugins] require("lazy").update(opts?) Update plugins. This - will also update the - lockfile - ---------------------------------------------------------------------------------- -Any command can have a **bang** to make the command wait till it finished. For -example, if you want to sync lazy from the cmdline, you can use: - ->shell - nvim --headless "+Lazy! sync" +qa -< - -`opts` is a table with the following key-values: - -- **wait**: when true, then the call will wait till the operation completed -- **show**: when false, the UI will not be shown -- **plugins**: a list of plugin names to run the operation on -- **concurrency**: limit the `number` of concurrently running tasks - -Stats API (`require("lazy").stats()`): - ->lua - { - -- startuptime in milliseconds till UIEnter - startuptime = 0, - -- when true, startuptime is the accurate cputime for the Neovim process. (Linux & macOS) - -- this is more accurate than `nvim --startuptime`, and as such will be slightly higher - -- when false, startuptime is calculated based on a delta with a timestamp when lazy started. - real_cputime = false, - count = 0, -- total number of plugins - loaded = 0, -- number of loaded plugins - ---@type table - times = {}, - } -< - -**lazy.nvim** provides a statusline component that you can use to show the -number of pending updates. Make sure to enable `config.checker.enabled = true` -to make this work. - -Example of configuring lualine.nvim ~ - ->lua - require("lualine").setup({ - sections = { - lualine_x = { - { - require("lazy.status").updates, - cond = require("lazy.status").has_updates, - color = { fg = "#ff9e64" }, - }, - }, - }, - }) -< - - -📆 USER EVENTS *lazy.nvim-🚀-usage-📆-user-events* - -The following user events will be triggered: - -- **LazyDone**: when lazy has finished starting up and loaded your config -- **LazySync**: after running sync -- **LazyInstall**: after an install -- **LazyUpdate**: after an update -- **LazyClean**: after a clean -- **LazyCheck**: after checking for updates -- **LazyLog**: after running log -- **LazyLoad**: after loading a plugin. The `data` attribute will contain the plugin name. -- **LazySyncPre**: before running sync -- **LazyInstallPre**: before an install -- **LazyUpdatePre**: before an update -- **LazyCleanPre**: before a clean -- **LazyCheckPre**: before checking for updates -- **LazyLogPre**: before running log -- **LazyReload**: triggered by change detection after reloading plugin specs -- **VeryLazy**: triggered after `LazyDone` and processing `VimEnter` auto commands -- **LazyVimStarted**: triggered after `UIEnter` when `require("lazy").stats().startuptime` has been calculated. - Useful to update the startuptime on your dashboard. - - -❌ UNINSTALLING *lazy.nvim-🚀-usage-❌-uninstalling* - -To uninstall **lazy.nvim**, you need to remove the following files and -directories: - -- **data**: `~/.local/share/nvim/lazy` -- **state**: `~/.local/state/nvim/lazy` -- **lockfile**: `~/.config/nvim/lazy-lock.json` - - - Paths can differ if you changed `XDG` environment variables. - -🔒 LOCKFILE *lazy.nvim-🚀-usage-🔒-lockfile* - -After every **update**, the local lockfile (`lazy-lock.json`) is updated with -the installed revisions. It is recommended to have this file under version -control. - -If you use your Neovim config on multiple machines, using the lockfile, you can -ensure that the same version of every plugin is installed. - -If you are on another machine, you can do `:Lazy restore`, to update all your -plugins to the version from the lockfile. - - -📦 MIGRATION GUIDE *lazy.nvim-🚀-usage-📦-migration-guide* - - -PACKER.NVIM ~ - -- `setup` ➡️ `init` -- `requires` ➡️ `dependencies` -- `as` ➡️ `name` -- `opt` ➡️ `lazy` -- `run` ➡️ `build` -- `lock` ➡️ `pin` -- `disable=true` ➡️ `enabled = false` -- `tag='*'` ➡️ `version="*"` -- `after` is **not needed** for most use-cases. Use `dependencies` otherwise. -- `wants` is **not needed** for most use-cases. Use `dependencies` otherwise. -- `config` don’t support string type, use `fun(LazyPlugin)` instead. -- `module` is auto-loaded. No need to specify -- `keys` spec is |lazy.nvim-different| -- `rtp` can be accomplished with: - ->lua - config = function(plugin) - vim.opt.rtp:append(plugin.dir .. "/custom-rtp") - end -< - -With packer `wants`, `requires` and `after` can be used to manage dependencies. -With lazy, this isn’t needed for most of the Lua dependencies. They can be -installed just like normal plugins (even with `lazy=true`) and will be loaded -when other plugins need them. The `dependencies` key can be used to group those -required plugins with the one that requires them. The plugins which are added -as `dependencies` will always be lazy-loaded and loaded when the plugin is -loaded. - - -PAQ-NVIM ~ - -- `as` ➡️ `name` -- `opt` ➡️ `lazy` -- `run` ➡️ `build` - - -⚡ PROFILING & DEBUG *lazy.nvim-🚀-usage-⚡-profiling-&-debug* - -Great care has been taken to make the startup code (`lazy.core`) as efficient -as possible. During startup, all Lua files used before `VimEnter` or -`BufReadPre` are byte-compiled and cached, similar to what impatient.nvim - does. - -My config for example loads in about `11ms` with `93` plugins. I do a lot of -lazy-loading though :) - -**lazy.nvim** comes with an advanced profiler `:Lazy profile` to help you -improve performance. The profiling view shows you why and how long it took to -load your plugins. - - -🐛 DEBUG ~ - -See an overview of active lazy-loading handlers and what’s in the module -cache. - - -📂 STRUCTURING YOUR PLUGINS*lazy.nvim-🚀-usage-📂-structuring-your-plugins* - -Some users may want to split their plugin specs in multiple files. Instead of -passing a spec table to `setup()`, you can use a Lua module. The specs from the -**module** and any top-level **sub-modules** will be merged together in the -final spec, so it is not needed to add `require` calls in your main plugin file -to the other files. - -The benefits of using this approach: - -- Simple to **add** new plugin specs. Just create a new file in your plugins module. -- Allows for **caching** of all your plugin specs. This becomes important if you have a lot of smaller plugin specs. -- Spec changes will automatically be **reloaded** when they’re updated, so the `:Lazy` UI is always up to date. - -Example: - -- `~/.config/nvim/init.lua` - ->lua - require("lazy").setup("plugins") -< - -- `~/.config/nvim/lua/plugins.lua` or `~/.config/nvim/lua/plugins/init.lua` **(this file is optional)** - ->lua - return { - "folke/neodev.nvim", - "folke/which-key.nvim", - { "folke/neoconf.nvim", cmd = "Neoconf" }, - } -< - -- Any lua file in `~/.config/nvim/lua/plugins/*.lua` will be automatically merged in the main plugin spec - -For a real-life example, you can check LazyVim - and more specifically: - -- lazyvim.plugins contains all the plugin specs that will be loaded - - -↩️ IMPORTING SPECS, CONFIG & OPTS - -As part of a spec, you can add `import` statements to import additional plugin -modules. Both of the `setup()` calls are equivalent: - ->lua - require("lazy").setup("plugins") - - -- Same as: - require("lazy").setup({{import = "plugins"}}) -< - -To import multiple modules from a plugin, add additional specs for each import. -For example, to import LazyVim core plugins and an optional plugin: - ->lua - require("lazy").setup({ - spec = { - { "LazyVim/LazyVim", import = "lazyvim.plugins" }, - { import = "lazyvim.plugins.extras.coding.copilot" }, - } - }) -< - -When you import specs, you can override them by simply adding a spec for the -same plugin to your local specs, adding any keys you want to override / merge. - -`opts`, `dependencies`, `cmd`, `event`, `ft` and `keys` are always merged with -the parent spec. Any other property will override the property from the parent -spec. - - -============================================================================== -8. 🔥 Developers *lazy.nvim-🔥-developers* - -To make it easier for users to install your plugin, you can include a package -spec in your repo. - - -BEST PRACTICES *lazy.nvim-🔥-developers-best-practices* - -- If your plugin needs `setup()`, then create a simple `lazy.lua` file like this: - >lua - return { "me/my-plugin", opts = {} } - < -- Plugins that are pure lua libraries should be lazy-loaded with `lazy = true`. - >lua - { "nvim-lua/plenary.nvim", lazy = true } - < -- Always use `opts` instead of `config` when possible. `config` is almost never - needed. -- Only use `dependencies` if a plugin needs the dep to be installed **AND** - loaded. Lua plugins/libraries are automatically loaded when they are - `require()`d, so they don’t need to be in `dependencies`. -- Inside a `build` function or `*.lua` build file, use - `coroutine.yield(msg:string|LazyMsg)` to show progress. -- Don’t change the `cwd` in your build function, since builds run in parallel - and changing the `cwd` will affect other builds. - - -BUILDING *lazy.nvim-🔥-developers-building* - -The spec **build** property can be one of the following: - -- `fun(plugin: LazyPlugin)`: a function that builds the plugin. -- `*.lua`: a Lua file that builds the plugin (like `build.lua`) -- `":Command"`: a Neovim command -- `"rockspec"`: this will run `luarocks make` in the plugin’s directory - This is automatically set by the `rockspec` package source. -- any other **string** will be run as a shell command -- a `list` of any of the above to run multiple build steps -- if no `build` is specified, but a `build.lua` file exists, that will be used instead. - -Build functions and `*.lua` files run asynchronously in a coroutine. Use -`coroutine.yield(msg:string|LazyMsg)` to show progress. - -Yielding will also schedule the next `coroutine.resume()` to run in the next -tick, so you can do long-running tasks without blocking Neovim. - ->lua - ---@class LazyMsg - ---@field msg string - ---@field level? number vim.log.levels.XXX -< - -Use `vim.log.levels.TRACE` to only show the message as a **status** message for -the task. - - - -MINIT (MINIMAL INIT) *lazy.nvim-🔥-developers-minit-(minimal-init)* - -**lazy.nvim** comes with some built-in functionality to help you create a -minimal init for your plugin. - -I mainly use this for testing and for users to create a `repro.lua`. - -When running in **headless** mode, **lazy.nvim** will log any messages to the -terminal. See `opts.headless` for more info. - -**minit** will install/load all your specs and will always run an update as -well. - - -BOOTSTRAP ~ - ->lua - -- setting this env will override all XDG paths - vim.env.LAZY_STDPATH = ".tests" - -- this will install lazy in your stdpath - load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() -< - - -TESTING WITH BUSTED ~ - -This will add `"lunarmodules/busted"`, configure `hererocks` and run `busted`. - -Below is an example of how I use **minit** to run tests with busted - in **LazyVim**. - ->lua - #!/usr/bin/env -S nvim -l - - vim.env.LAZY_STDPATH = ".tests" - load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() - - -- Setup lazy.nvim - require("lazy.minit").busted({ - spec = { - "LazyVim/starter", - "williamboman/mason-lspconfig.nvim", - "williamboman/mason.nvim", - "nvim-treesitter/nvim-treesitter", - }, - }) -< - -To use this, you can run: - ->sh - nvim -l ./tests/busted.lua tests -< - -If you want to inspect the test environment, run: - ->sh - nvim -u ./tests/busted.lua -< - - -REPRO.LUA ~ - ->lua - vim.env.LAZY_STDPATH = ".repro" - load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() - - require("lazy.minit").repro({ - spec = { - "stevearc/conform.nvim", - "nvim-neotest/nvim-nio", - }, - }) - - -- do anything else you need to do to reproduce the issue -< - -Then run it with: - ->sh - nvim -u repro.lua -< - -============================================================================== -9. Links *lazy.nvim-links* +1. Links *lazy.nvim-links* 1. *image*: https://user-images.githubusercontent.com/292349/208301737-68fb279c-ba70-43ef-a369-8c3e8367d6b1.png -2. *image*: https://user-images.githubusercontent.com/292349/208301766-5c400561-83c3-4811-9667-1ec4bb3c43b8.png -3. *image*: https://user-images.githubusercontent.com/292349/208301790-7eedbfa5-d202-4e70-852e-de68aa47233b.png Generated by panvimdoc From c060de160a3cebb658969852d843915bc73a11ce Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 6 Jul 2024 15:00:16 +0200 Subject: [PATCH 228/342] chore(update): update repository (#1616) Automated changes by [create-pull-request](https://github.com/peter-evans/create-pull-request) GitHub action Co-authored-by: folke <292349+folke@users.noreply.github.com> --- .github/ISSUE_TEMPLATE/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index d6851ed..8dba2f4 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,5 +1,5 @@ blank_issues_enabled: false contact_links: - - name: Ask a question or start a discussion + - name: Ask a question url: https://github.com/folke/lazy.nvim/discussions about: Use Github discussions instead From 16ccd54360651ad2b27ee0117365f7a33577ea3c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 6 Jul 2024 13:01:02 +0000 Subject: [PATCH 229/342] chore(build): auto-generate docs --- doc/lazy.nvim.txt | 1398 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 1352 insertions(+), 46 deletions(-) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index cb18dda..73bd0ae 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -1,61 +1,130 @@ -*lazy.nvim.txt* For Neovim Last change: 2024 July 06 +*lazy.nvim.txt* A modern plugin manager for Neovim ============================================================================== Table of Contents *lazy.nvim-table-of-contents* - - Features |lazy.nvim-features| - - Requirements |lazy.nvim-requirements| - - Getting Started |lazy.nvim-getting-started| -1. Links |lazy.nvim-links| -Install -· -Configure -· -Docs - - - - - - - - - - - - - - +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. 📰 What’s new? *lazy.nvim-📰-what’s-new?* +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 . The GitHub `README.md` + has been updated to point to the new website. The `vimdoc` contains all the + information that is available on the website. +- **Spec Resolution & Merging**: the code that resolves a final spec from a + plugin’s fragments has been rewritten. This should be a tiny bit faster, but + more importantly, fixes some issues and is easier to maintain. +- Packages can now specify their dependencies + and configuration using one of: + - **Lazy**: `lazy.lua` file + - **Rockspec**: luarocks `*-scm-1.rockspec` file + - **Packspec**: `pkg.json` (experimental, since the format is not quite there yet) + Related _lazy.nvim_ options: + >lua + { + pkg = { + enabled = true, + cache = vim.fn.stdpath("state") .. "/lazy/pkg-cache.lua", + -- the first package source that is found for a plugin will be used. + sources = { + "lazy", + "rockspec", -- will only be used when rocks.enabled is true + "packspec", + }, + }, + rocks = { + enabled = true, + root = vim.fn.stdpath("data") .. "/lazy-rocks", + server = "https://nvim-neorocks.github.io/rocks-binaries/", + }, + } + < +- Installing neorg is now as simple as: + >lua + { "nvim-neorg/neorg", opts = {} } + < +- Packages are not limited to just Neovim plugins. You can install any + **luarocks** package, like: + >lua + { "https://github.com/lubyk/yaml" } + < + Luarocks packages without a `/lua` directory are never lazy-loaded, since + it’s just a library. +- `build` functions or `*.lua` build files (like `build.lua`) now run + asynchronously. You can use `coroutine.yield(status_msg)` to show progress. + Yielding will also schedule the next `resume` to run in the next tick, so you + can do long-running tasks without blocking Neovim. +============================================================================== +2. 🚀 Getting Started *lazy.nvim-🚀-getting-started* **lazy.nvim** is a modern plugin manager for Neovim. -FEATURES *lazy.nvim-features* +✨ FEATURES *lazy.nvim-🚀-getting-started-✨-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 support -- Statusline component to see the number of pending updates -- Automatically lazy-loads colorschemes +- 📦 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 support +- 📈 Statusline component to see the number of pending updates +- 🎨 Automatically lazy-loads colorschemes -REQUIREMENTS *lazy.nvim-requirements* +⚡️ REQUIREMENTS *lazy.nvim-🚀-getting-started-⚡️-requirements* - Neovim >= **0.8.0** (needs to be built with **LuaJIT**) - Git >= **2.19.0** (for partial clones support) @@ -64,14 +133,1251 @@ REQUIREMENTS *lazy.nvim-requirements* You can remove `rockspec` from `opts.pkg.sources` to disable this feature. -GETTING STARTED *lazy.nvim-getting-started* +============================================================================== +3. 🛠️ Installation *lazy.nvim-🛠️-installation* + +There are multiple ways to install **lazy.nvim**. The **Structured Setup** is +the recommended way, but you can also use the **Single File Setup** if you +prefer to keep everything in your `init.lua`. + +Please refer to the Configuration section for an overview of +all available options. + + + + +STRUCTURED SETUP *lazy.nvim-🛠️-installation-structured-setup* + +>lua + require("config.lazy") +< + +>lua + -- Bootstrap lazy.nvim + local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" + if not (vim.uv or vim.loop).fs_stat(lazypath) then + local lazyrepo = "https://github.com/folke/lazy.nvim.git" + local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) + if vim.v.shell_error ~= 0 then + vim.api.nvim_echo({ + { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, + { out, "WarningMsg" }, + { "\nPress any key to exit..." }, + }, true, {}) + vim.fn.getchar() + os.exit(1) + end + end + vim.opt.rtp:prepend(lazypath) + + -- Make sure to setup `mapleader` and `maplocalleader` before + -- loading lazy.nvim so that mappings are correct. + -- This is also a good place to setup other settings (vim.opt) + vim.g.mapleader = " " + vim.g.maplocalleader = "\\" + + -- Setup lazy.nvim + require("lazy").setup({ + -- highlight-start + spec = { + -- import your plugins + { import = "plugins" }, + }, + -- highlight-end + -- Configure any other settings here. See the documentation for more details. + -- colorscheme that will be used when installing plugins. + install = { colorscheme = { "habamax" } }, + -- automatically check for plugin updates + checker = { enabled = true }, + }) +< + +You can then create your plugin specs in `~/.config/nvim/lua/plugins/`. Each +file should return a table with the plugins you want to install. + +For more info see Structuring Your Plugins + + +SINGLE FILE SETUP *lazy.nvim-🛠️-installation-single-file-setup* + +>lua + -- Bootstrap lazy.nvim + local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" + if not (vim.uv or vim.loop).fs_stat(lazypath) then + local lazyrepo = "https://github.com/folke/lazy.nvim.git" + local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) + if vim.v.shell_error ~= 0 then + vim.api.nvim_echo({ + { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, + { out, "WarningMsg" }, + { "\nPress any key to exit..." }, + }, true, {}) + vim.fn.getchar() + os.exit(1) + end + end + vim.opt.rtp:prepend(lazypath) + + -- Make sure to setup `mapleader` and `maplocalleader` before + -- loading lazy.nvim so that mappings are correct. + -- This is also a good place to setup other settings (vim.opt) + vim.g.mapleader = " " + vim.g.maplocalleader = "\\" + + -- Setup lazy.nvim + require("lazy").setup({ + -- highlight-start + spec = { + -- add your plugins here + }, + -- highlight-end + -- Configure any other settings here. See the documentation for more details. + -- colorscheme that will be used when installing plugins. + install = { colorscheme = { "habamax" } }, + -- automatically check for plugin updates + checker = { enabled = true }, + }) +< -Check the documentation website for more information. ============================================================================== -1. Links *lazy.nvim-links* +4. 🔌 Plugin Spec *lazy.nvim-🔌-plugin-spec* + + +SPEC SOURCE *lazy.nvim-🔌-plugin-spec-spec-source* + + ----------------------------------------------------------------------------------- + Property Type Description + ---------- ---------- ------------------------------------------------------------- + [1] string? Short plugin url. Will be expanded using + config.git.url_format. Can also be a url or dir. + + dir string? A directory pointing to a local plugin + + url string? A custom git url where the plugin is hosted + + name string? A custom name for the plugin used for the local plugin + directory and as the display name + + dev boolean? When true, a local plugin directory will be used instead. See + config.dev + ----------------------------------------------------------------------------------- +A valid spec should define one of `[1]`, `dir` or `url`. + + +SPEC LOADING *lazy.nvim-🔌-plugin-spec-spec-loading* + + -------------------------------------------------------------------------------------------------- + Property Type Description + -------------- ------------------------- --------------------------------------------------------- + dependencies LazySpec[] A list of plugin names or plugin specs that should be + loaded when the plugin loads. Dependencies are always + lazy-loaded unless specified otherwise. When specifying a + name, make sure the plugin spec has been defined + somewhere else. + + enabled boolean? or fun():boolean When false, or if the function returns false, then this + plugin will not be included in the spec + + cond boolean? or Behaves the same as enabled, but won’t uninstall the + fun(LazyPlugin):boolean plugin when the condition is false. Useful to disable + some plugins in vscode, or firenvim for example. + + priority number? Only useful for start plugins (lazy=false) to force + loading certain plugins first. Default priority is 50. + It’s recommended to set this to a high number for + colorschemes. + -------------------------------------------------------------------------------------------------- + +SPEC SETUP *lazy.nvim-🔌-plugin-spec-spec-setup* + + -------------------------------------------------------------------------------------------------- + Property Type Description + ---------- ----------------------------- --------------------------------------------------------- + init fun(LazyPlugin) init functions are always executed during. Mostly useful + for setting vim.g.* configuration used by Vim plugins + startup + + opts table or opts should be a table (will be merged with parent + fun(LazyPlugin, opts:table) specs), return a table (replaces parent specs) or should + change a table. The table will be passed to the + Plugin.config() function. Setting this value will imply + Plugin.config() + + config fun(LazyPlugin, opts:table) config is executed when the plugin loads. The default + or true implementation will automatically run + require(MAIN).setup(opts) if opts or config = true is + set. Lazy uses several heuristics to determine the + plugin’s MAIN module automatically based on the plugin’s + name. (opts is the recommended way to configure plugins). + + main string? You can specify the main module to use for config() and + opts(), in case it can not be determined automatically. + See config() + + build fun(LazyPlugin) or string or build is executed when a plugin is installed or updated. + false or a list of build See Building for more information. + commands + -------------------------------------------------------------------------------------------------- +Always use `opts` instead of `config` when possible. `config` is almost never +needed. + + + + +SPEC LAZY LOADING *lazy.nvim-🔌-plugin-spec-spec-lazy-loading* + + -------------------------------------------------------------------------------------------------------------------- + Property Type Description + ---------- ---------------------------------------------------------------- ---------------------------------------- + lazy boolean? When true, the plugin will only be + loaded when needed. Lazy-loaded plugins + are automatically loaded when their Lua + modules are required, or when one of the + lazy-loading handlers triggers + + event string? or string[] or Lazy-load on event. Events can be + fun(self:LazyPlugin, event:string[]):string[] or specified as BufEnter or with a pattern + {event:string[]\|string, pattern?:string[]\|string} like BufEnter *.lua + + cmd string? or string[] or Lazy-load on command + fun(self:LazyPlugin, cmd:string[]):string[] + + ft string? or string[] or Lazy-load on filetype + fun(self:LazyPlugin, ft:string[]):string[] + + keys string? or string[] or LazyKeysSpec[] or Lazy-load on key mapping + fun(self:LazyPlugin, keys:string[]):(string \| LazyKeysSpec)[] + -------------------------------------------------------------------------------------------------------------------- +Refer to the Lazy Loading <./lazy_loading.md> section for more information. + + +SPEC VERSIONING *lazy.nvim-🔌-plugin-spec-spec-versioning* + + ------------------------------------------------------------------------------ + Property Type Description + ------------ -------------------- -------------------------------------------- + branch string? Branch of the repository + + tag string? Tag of the repository + + commit string? Commit of the repository + + version string? or false to Version to use from the repository. Full + override the default Semver ranges are supported + + pin boolean? When true, this plugin will not be included + in updates + + submodules boolean? When false, git submodules will not be + fetched. Defaults to true + ------------------------------------------------------------------------------ +Refer to the Versioning <./versioning.md> section for more information. + + +SPEC ADVANCED *lazy.nvim-🔌-plugin-spec-spec-advanced* + + ---------------------------------------------------------------------------------------- + Property Type Description + ---------- ---------- ------------------------------------------------------------------ + optional boolean? When a spec is tagged optional, it will only be included in the + final spec, when the same plugin has been specified at least once + somewhere else without optional. This is mainly useful for Neovim + distros, to allow setting options on plugins that may/may not be + part of the user’s plugins. + + specs LazySpec A list of plugin specs defined in the scope of the plugin. This is + mainly useful for Neovim distros, to allow setting options on + plugins that may/may not be part of the user’s plugins. When the + plugin is disabled, none of the scoped specs will be included in + the final spec. Similar to dependencies without the automatic + loading of the specs. + + module false? Do not automatically load this Lua module when it’s required + somewhere + + import string? Import the given spec module. + ---------------------------------------------------------------------------------------- + +EXAMPLES *lazy.nvim-🔌-plugin-spec-examples* + +>lua + return { + -- the colorscheme should be available when starting Neovim + { + "folke/tokyonight.nvim", + lazy = false, -- make sure we load this during startup if it is your main colorscheme + priority = 1000, -- make sure to load this before all the other start plugins + config = function() + -- load the colorscheme here + vim.cmd([[colorscheme tokyonight]]) + end, + }, + + -- I have a separate config.mappings file where I require which-key. + -- With lazy the plugin will be automatically loaded when it is required somewhere + { "folke/which-key.nvim", lazy = true }, + + { + "nvim-neorg/neorg", + -- lazy-load on filetype + ft = "norg", + -- options for neorg. This will automatically call `require("neorg").setup(opts)` + opts = { + load = { + ["core.defaults"] = {}, + }, + }, + }, + + { + "dstein64/vim-startuptime", + -- lazy-load on a command + cmd = "StartupTime", + -- init is called during startup. Configuration for vim plugins typically should be set in an init function + init = function() + vim.g.startuptime_tries = 10 + end, + }, + + { + "hrsh7th/nvim-cmp", + -- load cmp on InsertEnter + event = "InsertEnter", + -- these dependencies will only be loaded when cmp loads + -- dependencies are always lazy-loaded unless specified otherwise + dependencies = { + "hrsh7th/cmp-nvim-lsp", + "hrsh7th/cmp-buffer", + }, + config = function() + -- ... + end, + }, + + -- if some code requires a module from an unloaded plugin, it will be automatically loaded. + -- So for api plugins like devicons, we can always set lazy=true + { "nvim-tree/nvim-web-devicons", lazy = true }, + + -- you can use the VeryLazy event for things that can + -- load later and are not important for the initial UI + { "stevearc/dressing.nvim", event = "VeryLazy" }, + + { + "Wansmer/treesj", + keys = { + { "J", "TSJToggle", desc = "Join Toggle" }, + }, + opts = { use_default_keymaps = false, max_join_length = 150 }, + }, + + { + "monaqa/dial.nvim", + -- lazy-load on keys + -- mode is `n` by default. For more advanced options, check the section on key mappings + keys = { "", { "", mode = "n" } }, + }, + + -- local plugins need to be explicitly configured with dir + { dir = "~/projects/secret.nvim" }, + + -- you can use a custom url to fetch a plugin + { url = "git@github.com:folke/noice.nvim.git" }, + + -- local plugins can also be configured with the dev option. + -- This will use {config.dev.path}/noice.nvim/ instead of fetching it from GitHub + -- With the dev option, you can easily switch between the local and installed version of a plugin + { "folke/noice.nvim", dev = true }, + } +< + + +LAZY LOADING *lazy.nvim-🔌-plugin-spec-lazy-loading* + +**lazy.nvim** automagically lazy-loads Lua modules. This means that if you have +a plugin `A` that is lazy-loaded and a plugin `B` that requires a module of +plugin `A`, then plugin `A` will be loaded on demand as expected. + + +Additionally, you can also lazy-load on **events**, **commands**, **file +types** and **key mappings**. + +Plugins will be lazy-loaded when one of the following is `true`: + +- The plugin only exists as a dependency in your spec +- It has an `event`, `cmd`, `ft` or `keys` key +- `config.defaults.lazy == true` + + +🌈 COLORSCHEMES ~ + +Colorscheme plugins can be configured with `lazy=true`. The plugin will +automagically load when doing `colorscheme foobar`. + + + +⌨️ LAZY KEY MAPPINGS ~ + +The `keys` property can be a `string` or `string[]` for simple normal-mode +mappings, or it can be a `LazyKeysSpec` table with the following key-value +pairs: + +- **[1]**: (`string`) lhs **(required)** +- **[2]**: (`string|fun()`) rhs **(optional)** +- **mode**: (`string|string[]`) mode **(optional, defaults to "n")** +- **ft**: (`string|string[]`) `filetype` for buffer-local keymaps **(optional)** +- any other option valid for `vim.keymap.set` + +Key mappings will load the plugin the first time they get executed. + +When `[2]` is `nil`, then the real mapping has to be created by the `config()` +function. + +>lua + -- Example for neo-tree.nvim + { + "nvim-neo-tree/neo-tree.nvim", + keys = { + { "ft", "Neotree toggle", desc = "NeoTree" }, + }, + config = function() + require("neo-tree").setup() + end, + } +< + + +VERSIONING *lazy.nvim-🔌-plugin-spec-versioning* + +If you want to install a specific revision of a plugin, you can use `commit`, +`tag`, `branch`, `version`. + +The `version` property supports Semver ranges. + + + +EXAMPLES ~ + +- `*`: latest stable version (this excludes pre-release versions) +- `1.2.x`: any version that starts with `1.2`, such as `1.2.0`, `1.2.3`, etc. +- `^1.2.3`: any version that is compatible with `1.2.3`, such as `1.3.0`, `1.4.5`, etc., but not `2.0.0`. +- `~1.2.3`: any version that is compatible with `1.2.3`, such as `1.2.4`, `1.2.5`, but not `1.3.0`. +- `>1.2.3`: any version that is greater than `1.2.3`, such as `1.3.0`, `1.4.5`, etc. +- `>=1.2.3`: any version that is greater than or equal to `1.2.3`, such as `1.2.3`, `1.3.0`, `1.4.5`, etc. +- `<1.2.3`: any version that is less than `1.2.3`, such as `1.1.0`, `1.0.5`, etc. +- `<=1.2.3`: any version that is less than or equal to `1.2.3`, such as `1.2.3`, `1.1.0`, `1.0.5`, etc + + +============================================================================== +5. 📦 Packages *lazy.nvim-📦-packages* + +**lazy.nvim** supports three ways for plugins to define their dependencies and +configuration. + +- **Lazy**: `lazy.lua` file +- **Rockspec**: luarocks `*-scm-1.rockspec` file +- **Packspec**: `pkg.json` (experimental, since the format is not quite there yet) + +You can enable/disable package sources with `config.pkg.sources` +. The order of sources is important, as the first source that +finds a package will be used. + + + +LAZY *lazy.nvim-📦-packages-lazy* + +Using a `lazy.lua` file is the recommended way to define your plugin +dependencies and configuration. Syntax is the same as any plugin spec. + + +ROCKSPEC *lazy.nvim-📦-packages-rockspec* + +When a plugin contains a `*-1.rockspec` file, **lazy.nvim** will automatically +build the rock and its dependencies. + +A **rockspec** will only be used if one of the following is true: + +- the package does not have a `/lua` directory +- the package has a complex build step +- the package has dependencies (excluding `lua`) + + +PACKSPEC *lazy.nvim-📦-packages-packspec* + +Supports the pkg.json + format, with +a lazy extension in `lazy`. `lazy` can contain any valid lazy spec fields. They +will be added to the plugin’s spec. + + +============================================================================== +6. ⚙️ Configuration *lazy.nvim-⚙️-configuration* + +**lazy.nvim** comes with the following defaults: + +>lua + { + root = vim.fn.stdpath("data") .. "/lazy", -- directory where plugins will be installed + defaults = { + -- Set this to `true` to have all your plugins lazy-loaded by default. + -- Only do this if you know what you are doing, as it can lead to unexpected behavior. + lazy = false, -- should plugins be lazy-loaded? + -- It's recommended to leave version=false for now, since a lot the plugin that support versioning, + -- have outdated releases, which may break your Neovim install. + version = nil, -- always use the latest git commit + -- version = "*", -- try installing the latest stable version for plugins that support semver + -- default `cond` you can use to globally disable a lot of plugins + -- when running inside vscode for example + cond = nil, ---@type boolean|fun(self:LazyPlugin):boolean|nil + }, + -- leave nil when passing the spec as the first argument to setup() + spec = nil, ---@type LazySpec + local_spec = true, -- load project specific .lazy.lua spec files. They will be added at the end of the spec. + lockfile = vim.fn.stdpath("config") .. "/lazy-lock.json", -- lockfile generated after running update. + ---@type number? limit the maximum amount of concurrent tasks + concurrency = jit.os:find("Windows") and (vim.uv.available_parallelism() * 2) or nil, + git = { + -- defaults for the `Lazy log` command + -- log = { "--since=3 days ago" }, -- show commits from the last 3 days + log = { "-8" }, -- show the last 8 commits + timeout = 120, -- kill processes that take more than 2 minutes + url_format = "https://github.com/%s.git", + -- lazy.nvim requires git >=2.19.0. If you really want to use lazy with an older version, + -- then set the below to false. This should work, but is NOT supported and will + -- increase downloads a lot. + filter = true, + }, + pkg = { + enabled = true, + cache = vim.fn.stdpath("state") .. "/lazy/pkg-cache.lua", + versions = true, -- Honor versions in pkg sources + -- the first package source that is found for a plugin will be used. + sources = { + "lazy", + "rockspec", + "packspec", + }, + }, + rocks = { + root = vim.fn.stdpath("data") .. "/lazy-rocks", + server = "https://nvim-neorocks.github.io/rocks-binaries/", + }, + dev = { + ---@type string | fun(plugin: LazyPlugin): string directory where you store your local plugin projects + path = "~/projects", + ---@type string[] plugins that match these patterns will use your local versions instead of being fetched from GitHub + patterns = {}, -- For example {"folke"} + fallback = false, -- Fallback to git when local plugin doesn't exist + }, + install = { + -- install missing plugins on startup. This doesn't increase startup time. + missing = true, + -- try to load one of these colorschemes when starting an installation during startup + colorscheme = { "habamax" }, + }, + ui = { + -- a number <1 is a percentage., >1 is a fixed size + size = { width = 0.8, height = 0.8 }, + wrap = true, -- wrap the lines in the ui + -- The border to use for the UI window. Accepts same border values as |nvim_open_win()|. + border = "none", + -- The backdrop opacity. 0 is fully opaque, 100 is fully transparent. + backdrop = 60, + title = nil, ---@type string only works when border is not "none" + title_pos = "center", ---@type "center" | "left" | "right" + -- Show pills on top of the Lazy window + pills = true, ---@type boolean + icons = { + cmd = " ", + config = "", + event = " ", + favorite = " ", + ft = " ", + init = " ", + import = " ", + keys = " ", + lazy = "󰒲 ", + loaded = "●", + not_loaded = "○", + plugin = " ", + runtime = " ", + require = "󰢱 ", + source = " ", + start = " ", + task = "✔ ", + list = { + "●", + "➜", + "★", + "‒", + }, + }, + -- leave nil, to automatically select a browser depending on your OS. + -- If you want to use a specific browser, you can define it here + browser = nil, ---@type string? + throttle = 20, -- how frequently should the ui process render events + custom_keys = { + -- You can define custom key maps here. If present, the description will + -- be shown in the help menu. + -- To disable one of the defaults, set it to false. + + ["l"] = { + function(plugin) + require("lazy.util").float_term({ "lazygit", "log" }, { + cwd = plugin.dir, + }) + end, + desc = "Open lazygit log", + }, + + ["t"] = { + function(plugin) + require("lazy.util").float_term(nil, { + cwd = plugin.dir, + }) + end, + desc = "Open terminal in plugin dir", + }, + }, + }, + diff = { + -- diff command can be one of: + -- * browser: opens the github compare view. Note that this is always mapped to as well, + -- so you can have a different command for diff + -- * git: will run git diff and open a buffer with filetype git + -- * terminal_git: will open a pseudo terminal with git diff + -- * diffview.nvim: will open Diffview to show the diff + cmd = "git", + }, + checker = { + -- automatically check for plugin updates + enabled = false, + concurrency = nil, ---@type number? set to 1 to check for updates very slowly + notify = true, -- get a notification when new updates are found + frequency = 3600, -- check for updates every hour + check_pinned = false, -- check for pinned packages that can't be updated + }, + change_detection = { + -- automatically check for config file changes and reload the ui + enabled = true, + notify = true, -- get a notification when changes are found + }, + performance = { + cache = { + enabled = true, + }, + reset_packpath = true, -- reset the package path to improve startup time + rtp = { + reset = true, -- reset the runtime path to $VIMRUNTIME and your config directory + ---@type string[] + paths = {}, -- add any custom paths here that you want to includes in the rtp + ---@type string[] list any plugins you want to disable here + disabled_plugins = { + -- "gzip", + -- "matchit", + -- "matchparen", + -- "netrwPlugin", + -- "tarPlugin", + -- "tohtml", + -- "tutor", + -- "zipPlugin", + }, + }, + }, + -- lazy can generate helptags from the headings in markdown readme files, + -- so :help works even for plugins that don't have vim docs. + -- when the readme opens with :help it will be correctly displayed as markdown + readme = { + enabled = true, + root = vim.fn.stdpath("state") .. "/lazy/readme", + files = { "README.md", "lua/**/README.md" }, + -- only generate markdown helptags for plugins that dont have docs + skip_if_doc_exists = true, + }, + state = vim.fn.stdpath("state") .. "/lazy/state.json", -- state info for checker and other things + -- Enable profiling of lazy.nvim. This will add some overhead, + -- so only enable this when you are debugging lazy.nvim + profiling = { + -- Enables extra stats on the debug tab related to the loader cache. + -- Additionally gathers stats about all package.loaders + loader = false, + -- Track each new require in the Lazy profiling tab + require = false, + }, + } +< + +If you don’t want to use a Nerd Font, you can replace the icons with Unicode symbols. ~ + +>lua + { + ui = { + icons = { + cmd = "⌘", + config = "🛠", + event = "📅", + ft = "📂", + init = "⚙", + keys = "🗝", + plugin = "🔌", + runtime = "💻", + require = "🌙", + source = "📄", + start = "🚀", + task = "📌", + lazy = "💤 ", + }, + }, + } +< + + +🌈 HIGHLIGHT GROUPS *lazy.nvim-⚙️-configuration-🌈-highlight-groups* + + ----------------------------------------------------------------------- + Highlight Group Default Group Description + ----------------------- ----------------------- ----------------------- + LazyButton CursorLine + + LazyButtonActive Visual + + LazyComment Comment + + LazyCommit @variable.builtin commit ref + + LazyCommitIssue Number + + LazyCommitScope Italic conventional commit + scope + + LazyCommitType Title conventional commit + type + + LazyDimmed Conceal property + + LazyDir @markup.link directory + + LazyH1 IncSearch home button + + LazyH2 Bold titles + + LazyLocal Constant + + LazyNoCond DiagnosticWarn unloaded icon for a + plugin where cond() was + false + + LazyNormal NormalFloat + + LazyProgressDone Constant progress bar done + + LazyProgressTodo LineNr progress bar todo + + LazyProp Conceal property + + LazyReasonCmd Operator + + LazyReasonEvent Constant + + LazyReasonFt Character + + LazyReasonImport Identifier + + LazyReasonKeys Statement + + LazyReasonPlugin Special + + LazyReasonRequire @variable.parameter + + LazyReasonRuntime @macro + + LazyReasonSource Character + + LazyReasonStart @variable.member + + LazySpecial @punctuation.special + + LazyTaskError ErrorMsg task errors + + LazyTaskOutput MsgArea task output + + LazyUrl @markup.link url + + LazyValue @string value of a property + ----------------------------------------------------------------------- + +============================================================================== +7. 🚀 Usage *lazy.nvim-🚀-usage* + + +▶️ STARTUP SEQUENCE *lazy.nvim-🚀-usage-▶️-startup-sequence* + +**lazy.nvim** does **NOT** use Neovim packages and even disables plugin loading +completely (`vim.go.loadplugins = false`). It takes over the complete startup +sequence for more flexibility and better performance. + +In practice this means that step 10 of |Neovim Initialization| is done by Lazy: + +1. All the plugins’ `init()` functions are executed +2. All plugins with `lazy=false` are loaded. This includes sourcing `/plugin` and `/ftdetect` files. (`/after` will not be sourced yet) +3. All files from `/plugin` and `/ftdetect` directories in your rtp are sourced (excluding `/after`) +4. All `/after/plugin` files are sourced (this includes `/after` from plugins) + +Files from runtime directories are always sourced in alphabetical order. + + +🚀 COMMANDS *lazy.nvim-🚀-usage-🚀-commands* + +Plugins are managed with the `:Lazy` command. Open the help with `` to see +all the key mappings. + +You can press `` on a plugin to show its details. Most properties can be +hovered with `` to open links, help files, readmes, git commits and git +issues. + +Lazy can automatically check for updates in the background. This feature can be +enabled with `config.checker.enabled = true`. + +Any operation can be started from the UI, with a sub command or an API +function: + + ---------------------------------------------------------------------------------- + Command Lua Description + ------------------------- -------------------------------- ----------------------- + :Lazy build {plugins} require("lazy").build(opts) Rebuild a plugin + + :Lazy check [plugins] require("lazy").check(opts?) Check for updates and + show the log (git + fetch) + + :Lazy clean [plugins] require("lazy").clean(opts?) Clean plugins that are + no longer needed + + :Lazy clear require("lazy").clear() Clear finished tasks + + :Lazy debug require("lazy").debug() Show debug information + + :Lazy health require("lazy").health() Run :checkhealth lazy + + :Lazy help require("lazy").help() Toggle this help page + + :Lazy home require("lazy").home() Go back to plugin list + + :Lazy install [plugins] require("lazy").install(opts?) Install missing plugins + + :Lazy load {plugins} require("lazy").load(opts) Load a plugin that has + not been loaded yet. + Similar to :packadd. + Like + :Lazy load foo.nvim. + Use :Lazy! load to skip + cond checks. + + :Lazy log [plugins] require("lazy").log(opts?) Show recent updates + + :Lazy profile require("lazy").profile() Show detailed profiling + + :Lazy reload {plugins} require("lazy").reload(opts) Reload a plugin + (experimental!!) + + :Lazy restore [plugins] require("lazy").restore(opts?) Updates all plugins to + the state in the + lockfile. For a single + plugin: restore it to + the state in the + lockfile or to a given + commit under the cursor + + :Lazy sync [plugins] require("lazy").sync(opts?) Run install, clean and + update + + :Lazy update [plugins] require("lazy").update(opts?) Update plugins. This + will also update the + lockfile + ---------------------------------------------------------------------------------- +Any command can have a **bang** to make the command wait till it finished. For +example, if you want to sync lazy from the cmdline, you can use: + +>shell + nvim --headless "+Lazy! sync" +qa +< + +`opts` is a table with the following key-values: + +- **wait**: when true, then the call will wait till the operation completed +- **show**: when false, the UI will not be shown +- **plugins**: a list of plugin names to run the operation on +- **concurrency**: limit the `number` of concurrently running tasks + +Stats API (`require("lazy").stats()`): + +>lua + { + -- startuptime in milliseconds till UIEnter + startuptime = 0, + -- when true, startuptime is the accurate cputime for the Neovim process. (Linux & macOS) + -- this is more accurate than `nvim --startuptime`, and as such will be slightly higher + -- when false, startuptime is calculated based on a delta with a timestamp when lazy started. + real_cputime = false, + count = 0, -- total number of plugins + loaded = 0, -- number of loaded plugins + ---@type table + times = {}, + } +< + +**lazy.nvim** provides a statusline component that you can use to show the +number of pending updates. Make sure to enable `config.checker.enabled = true` +to make this work. + +Example of configuring lualine.nvim ~ + +>lua + require("lualine").setup({ + sections = { + lualine_x = { + { + require("lazy.status").updates, + cond = require("lazy.status").has_updates, + color = { fg = "#ff9e64" }, + }, + }, + }, + }) +< + + +📆 USER EVENTS *lazy.nvim-🚀-usage-📆-user-events* + +The following user events will be triggered: + +- **LazyDone**: when lazy has finished starting up and loaded your config +- **LazySync**: after running sync +- **LazyInstall**: after an install +- **LazyUpdate**: after an update +- **LazyClean**: after a clean +- **LazyCheck**: after checking for updates +- **LazyLog**: after running log +- **LazyLoad**: after loading a plugin. The `data` attribute will contain the plugin name. +- **LazySyncPre**: before running sync +- **LazyInstallPre**: before an install +- **LazyUpdatePre**: before an update +- **LazyCleanPre**: before a clean +- **LazyCheckPre**: before checking for updates +- **LazyLogPre**: before running log +- **LazyReload**: triggered by change detection after reloading plugin specs +- **VeryLazy**: triggered after `LazyDone` and processing `VimEnter` auto commands +- **LazyVimStarted**: triggered after `UIEnter` when `require("lazy").stats().startuptime` has been calculated. + Useful to update the startuptime on your dashboard. + + +❌ UNINSTALLING *lazy.nvim-🚀-usage-❌-uninstalling* + +To uninstall **lazy.nvim**, you need to remove the following files and +directories: + +- **data**: `~/.local/share/nvim/lazy` +- **state**: `~/.local/state/nvim/lazy` +- **lockfile**: `~/.config/nvim/lazy-lock.json` + + + Paths can differ if you changed `XDG` environment variables. + +🔒 LOCKFILE *lazy.nvim-🚀-usage-🔒-lockfile* + +After every **update**, the local lockfile (`lazy-lock.json`) is updated with +the installed revisions. It is recommended to have this file under version +control. + +If you use your Neovim config on multiple machines, using the lockfile, you can +ensure that the same version of every plugin is installed. + +If you are on another machine, you can do `:Lazy restore`, to update all your +plugins to the version from the lockfile. + + +📦 MIGRATION GUIDE *lazy.nvim-🚀-usage-📦-migration-guide* + + +PACKER.NVIM ~ + +- `setup` ➡️ `init` +- `requires` ➡️ `dependencies` +- `as` ➡️ `name` +- `opt` ➡️ `lazy` +- `run` ➡️ `build` +- `lock` ➡️ `pin` +- `disable=true` ➡️ `enabled = false` +- `tag='*'` ➡️ `version="*"` +- `after` is **not needed** for most use-cases. Use `dependencies` otherwise. +- `wants` is **not needed** for most use-cases. Use `dependencies` otherwise. +- `config` don’t support string type, use `fun(LazyPlugin)` instead. +- `module` is auto-loaded. No need to specify +- `keys` spec is |lazy.nvim-different| +- `rtp` can be accomplished with: + +>lua + config = function(plugin) + vim.opt.rtp:append(plugin.dir .. "/custom-rtp") + end +< + +With packer `wants`, `requires` and `after` can be used to manage dependencies. +With lazy, this isn’t needed for most of the Lua dependencies. They can be +installed just like normal plugins (even with `lazy=true`) and will be loaded +when other plugins need them. The `dependencies` key can be used to group those +required plugins with the one that requires them. The plugins which are added +as `dependencies` will always be lazy-loaded and loaded when the plugin is +loaded. + + +PAQ-NVIM ~ + +- `as` ➡️ `name` +- `opt` ➡️ `lazy` +- `run` ➡️ `build` + + +⚡ PROFILING & DEBUG *lazy.nvim-🚀-usage-⚡-profiling-&-debug* + +Great care has been taken to make the startup code (`lazy.core`) as efficient +as possible. During startup, all Lua files used before `VimEnter` or +`BufReadPre` are byte-compiled and cached, similar to what impatient.nvim + does. + +My config for example loads in about `11ms` with `93` plugins. I do a lot of +lazy-loading though :) + +**lazy.nvim** comes with an advanced profiler `:Lazy profile` to help you +improve performance. The profiling view shows you why and how long it took to +load your plugins. + + +🐛 DEBUG ~ + +See an overview of active lazy-loading handlers and what’s in the module +cache. + + +📂 STRUCTURING YOUR PLUGINS*lazy.nvim-🚀-usage-📂-structuring-your-plugins* + +Some users may want to split their plugin specs in multiple files. Instead of +passing a spec table to `setup()`, you can use a Lua module. The specs from the +**module** and any top-level **sub-modules** will be merged together in the +final spec, so it is not needed to add `require` calls in your main plugin file +to the other files. + +The benefits of using this approach: + +- Simple to **add** new plugin specs. Just create a new file in your plugins module. +- Allows for **caching** of all your plugin specs. This becomes important if you have a lot of smaller plugin specs. +- Spec changes will automatically be **reloaded** when they’re updated, so the `:Lazy` UI is always up to date. + +Example: + +- `~/.config/nvim/init.lua` + +>lua + require("lazy").setup("plugins") +< + +- `~/.config/nvim/lua/plugins.lua` or `~/.config/nvim/lua/plugins/init.lua` **(this file is optional)** + +>lua + return { + "folke/neodev.nvim", + "folke/which-key.nvim", + { "folke/neoconf.nvim", cmd = "Neoconf" }, + } +< + +- Any lua file in `~/.config/nvim/lua/plugins/*.lua` will be automatically merged in the main plugin spec + +For a real-life example, you can check LazyVim + and more specifically: + +- lazyvim.plugins contains all the plugin specs that will be loaded + + +↩️ IMPORTING SPECS, CONFIG & OPTS + +As part of a spec, you can add `import` statements to import additional plugin +modules. Both of the `setup()` calls are equivalent: + +>lua + require("lazy").setup("plugins") + + -- Same as: + require("lazy").setup({{import = "plugins"}}) +< + +To import multiple modules from a plugin, add additional specs for each import. +For example, to import LazyVim core plugins and an optional plugin: + +>lua + require("lazy").setup({ + spec = { + { "LazyVim/LazyVim", import = "lazyvim.plugins" }, + { import = "lazyvim.plugins.extras.coding.copilot" }, + } + }) +< + +When you import specs, you can override them by simply adding a spec for the +same plugin to your local specs, adding any keys you want to override / merge. + +`opts`, `dependencies`, `cmd`, `event`, `ft` and `keys` are always merged with +the parent spec. Any other property will override the property from the parent +spec. + + +============================================================================== +8. 🔥 Developers *lazy.nvim-🔥-developers* + +To make it easier for users to install your plugin, you can include a package +spec in your repo. + + +BEST PRACTICES *lazy.nvim-🔥-developers-best-practices* + +- If your plugin needs `setup()`, then create a simple `lazy.lua` file like this: + >lua + return { "me/my-plugin", opts = {} } + < +- Plugins that are pure lua libraries should be lazy-loaded with `lazy = true`. + >lua + { "nvim-lua/plenary.nvim", lazy = true } + < +- Always use `opts` instead of `config` when possible. `config` is almost never + needed. +- Only use `dependencies` if a plugin needs the dep to be installed **AND** + loaded. Lua plugins/libraries are automatically loaded when they are + `require()`d, so they don’t need to be in `dependencies`. +- Inside a `build` function or `*.lua` build file, use + `coroutine.yield(msg:string|LazyMsg)` to show progress. +- Don’t change the `cwd` in your build function, since builds run in parallel + and changing the `cwd` will affect other builds. + + +BUILDING *lazy.nvim-🔥-developers-building* + +The spec **build** property can be one of the following: + +- `fun(plugin: LazyPlugin)`: a function that builds the plugin. +- `*.lua`: a Lua file that builds the plugin (like `build.lua`) +- `":Command"`: a Neovim command +- `"rockspec"`: this will run `luarocks make` in the plugin’s directory + This is automatically set by the `rockspec` package source. +- any other **string** will be run as a shell command +- a `list` of any of the above to run multiple build steps +- if no `build` is specified, but a `build.lua` file exists, that will be used instead. + +Build functions and `*.lua` files run asynchronously in a coroutine. Use +`coroutine.yield(msg:string|LazyMsg)` to show progress. + +Yielding will also schedule the next `coroutine.resume()` to run in the next +tick, so you can do long-running tasks without blocking Neovim. + +>lua + ---@class LazyMsg + ---@field msg string + ---@field level? number vim.log.levels.XXX +< + +Use `vim.log.levels.TRACE` to only show the message as a **status** message for +the task. + + + +MINIT (MINIMAL INIT) *lazy.nvim-🔥-developers-minit-(minimal-init)* + +**lazy.nvim** comes with some built-in functionality to help you create a +minimal init for your plugin. + +I mainly use this for testing and for users to create a `repro.lua`. + +When running in **headless** mode, **lazy.nvim** will log any messages to the +terminal. See `opts.headless` for more info. + +**minit** will install/load all your specs and will always run an update as +well. + + +BOOTSTRAP ~ + +>lua + -- setting this env will override all XDG paths + vim.env.LAZY_STDPATH = ".tests" + -- this will install lazy in your stdpath + load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() +< + + +TESTING WITH BUSTED ~ + +This will add `"lunarmodules/busted"`, configure `hererocks` and run `busted`. + +Below is an example of how I use **minit** to run tests with busted + in **LazyVim**. + +>lua + #!/usr/bin/env -S nvim -l + + vim.env.LAZY_STDPATH = ".tests" + load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() + + -- Setup lazy.nvim + require("lazy.minit").busted({ + spec = { + "LazyVim/starter", + "williamboman/mason-lspconfig.nvim", + "williamboman/mason.nvim", + "nvim-treesitter/nvim-treesitter", + }, + }) +< + +To use this, you can run: + +>sh + nvim -l ./tests/busted.lua tests +< + +If you want to inspect the test environment, run: + +>sh + nvim -u ./tests/busted.lua +< + + +REPRO.LUA ~ + +>lua + vim.env.LAZY_STDPATH = ".repro" + load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() + + require("lazy.minit").repro({ + spec = { + "stevearc/conform.nvim", + "nvim-neotest/nvim-nio", + }, + }) + + -- do anything else you need to do to reproduce the issue +< + +Then run it with: + +>sh + nvim -u repro.lua +< + +============================================================================== +9. Links *lazy.nvim-links* 1. *image*: https://user-images.githubusercontent.com/292349/208301737-68fb279c-ba70-43ef-a369-8c3e8367d6b1.png +2. *image*: https://user-images.githubusercontent.com/292349/208301766-5c400561-83c3-4811-9667-1ec4bb3c43b8.png +3. *image*: https://user-images.githubusercontent.com/292349/208301790-7eedbfa5-d202-4e70-852e-de68aa47233b.png Generated by panvimdoc From 49a35d3c8c7f9cfe6eede9d351953c8ef17fcd35 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 6 Jul 2024 18:05:10 +0200 Subject: [PATCH 230/342] chore(update): update repository (#1618) Automated changes by [create-pull-request](https://github.com/peter-evans/create-pull-request) GitHub action Co-authored-by: folke <292349+folke@users.noreply.github.com> --- .github/PULL_REQUEST_TEMPLATE.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index c064b8c..3f7c92e 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,12 +1,16 @@ -## What is this PR for? +## Description -## Does this PR fix an existing issue? +## Related Issue(s) +## Screenshots + + + From 1e7745a4a078b7e58ae673ca5a374e4439f443d1 Mon Sep 17 00:00:00 2001 From: folke Date: Sat, 6 Jul 2024 16:05:47 +0000 Subject: [PATCH 231/342] chore(build): auto-generate docs --- doc/lazy.nvim.txt | 1398 ++------------------------------------------- 1 file changed, 46 insertions(+), 1352 deletions(-) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index 73bd0ae..cb18dda 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -1,130 +1,61 @@ -*lazy.nvim.txt* A modern plugin manager for Neovim +*lazy.nvim.txt* For Neovim Last change: 2024 July 06 ============================================================================== 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. 📰 What’s new? *lazy.nvim-📰-what’s-new?* + - Features |lazy.nvim-features| + - Requirements |lazy.nvim-requirements| + - Getting Started |lazy.nvim-getting-started| +1. Links |lazy.nvim-links| +Install +· +Configure +· +Docs + + + + + + + + + + + + + + -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 . The GitHub `README.md` - has been updated to point to the new website. The `vimdoc` contains all the - information that is available on the website. -- **Spec Resolution & Merging**: the code that resolves a final spec from a - plugin’s fragments has been rewritten. This should be a tiny bit faster, but - more importantly, fixes some issues and is easier to maintain. -- Packages can now specify their dependencies - and configuration using one of: - - **Lazy**: `lazy.lua` file - - **Rockspec**: luarocks `*-scm-1.rockspec` file - - **Packspec**: `pkg.json` (experimental, since the format is not quite there yet) - Related _lazy.nvim_ options: - >lua - { - pkg = { - enabled = true, - cache = vim.fn.stdpath("state") .. "/lazy/pkg-cache.lua", - -- the first package source that is found for a plugin will be used. - sources = { - "lazy", - "rockspec", -- will only be used when rocks.enabled is true - "packspec", - }, - }, - rocks = { - enabled = true, - root = vim.fn.stdpath("data") .. "/lazy-rocks", - server = "https://nvim-neorocks.github.io/rocks-binaries/", - }, - } - < -- Installing neorg is now as simple as: - >lua - { "nvim-neorg/neorg", opts = {} } - < -- Packages are not limited to just Neovim plugins. You can install any - **luarocks** package, like: - >lua - { "https://github.com/lubyk/yaml" } - < - Luarocks packages without a `/lua` directory are never lazy-loaded, since - it’s just a library. -- `build` functions or `*.lua` build files (like `build.lua`) now run - asynchronously. You can use `coroutine.yield(status_msg)` to show progress. - Yielding will also schedule the next `resume` to run in the next tick, so you - can do long-running tasks without blocking Neovim. -============================================================================== -2. 🚀 Getting Started *lazy.nvim-🚀-getting-started* **lazy.nvim** is a modern plugin manager for Neovim. -✨ FEATURES *lazy.nvim-🚀-getting-started-✨-features* +FEATURES *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 support -- 📈 Statusline component to see the number of pending updates -- 🎨 Automatically lazy-loads colorschemes +- 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 support +- Statusline component to see the number of pending updates +- Automatically lazy-loads colorschemes -⚡️ REQUIREMENTS *lazy.nvim-🚀-getting-started-⚡️-requirements* +REQUIREMENTS *lazy.nvim-requirements* - Neovim >= **0.8.0** (needs to be built with **LuaJIT**) - Git >= **2.19.0** (for partial clones support) @@ -133,1251 +64,14 @@ Table of Contents *lazy.nvim-table-of-contents* You can remove `rockspec` from `opts.pkg.sources` to disable this feature. -============================================================================== -3. 🛠️ Installation *lazy.nvim-🛠️-installation* - -There are multiple ways to install **lazy.nvim**. The **Structured Setup** is -the recommended way, but you can also use the **Single File Setup** if you -prefer to keep everything in your `init.lua`. - -Please refer to the Configuration section for an overview of -all available options. - - - - -STRUCTURED SETUP *lazy.nvim-🛠️-installation-structured-setup* - ->lua - require("config.lazy") -< - ->lua - -- Bootstrap lazy.nvim - local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" - if not (vim.uv or vim.loop).fs_stat(lazypath) then - local lazyrepo = "https://github.com/folke/lazy.nvim.git" - local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) - if vim.v.shell_error ~= 0 then - vim.api.nvim_echo({ - { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, - { out, "WarningMsg" }, - { "\nPress any key to exit..." }, - }, true, {}) - vim.fn.getchar() - os.exit(1) - end - end - vim.opt.rtp:prepend(lazypath) - - -- Make sure to setup `mapleader` and `maplocalleader` before - -- loading lazy.nvim so that mappings are correct. - -- This is also a good place to setup other settings (vim.opt) - vim.g.mapleader = " " - vim.g.maplocalleader = "\\" - - -- Setup lazy.nvim - require("lazy").setup({ - -- highlight-start - spec = { - -- import your plugins - { import = "plugins" }, - }, - -- highlight-end - -- Configure any other settings here. See the documentation for more details. - -- colorscheme that will be used when installing plugins. - install = { colorscheme = { "habamax" } }, - -- automatically check for plugin updates - checker = { enabled = true }, - }) -< - -You can then create your plugin specs in `~/.config/nvim/lua/plugins/`. Each -file should return a table with the plugins you want to install. - -For more info see Structuring Your Plugins - - -SINGLE FILE SETUP *lazy.nvim-🛠️-installation-single-file-setup* - ->lua - -- Bootstrap lazy.nvim - local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" - if not (vim.uv or vim.loop).fs_stat(lazypath) then - local lazyrepo = "https://github.com/folke/lazy.nvim.git" - local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) - if vim.v.shell_error ~= 0 then - vim.api.nvim_echo({ - { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, - { out, "WarningMsg" }, - { "\nPress any key to exit..." }, - }, true, {}) - vim.fn.getchar() - os.exit(1) - end - end - vim.opt.rtp:prepend(lazypath) - - -- Make sure to setup `mapleader` and `maplocalleader` before - -- loading lazy.nvim so that mappings are correct. - -- This is also a good place to setup other settings (vim.opt) - vim.g.mapleader = " " - vim.g.maplocalleader = "\\" - - -- Setup lazy.nvim - require("lazy").setup({ - -- highlight-start - spec = { - -- add your plugins here - }, - -- highlight-end - -- Configure any other settings here. See the documentation for more details. - -- colorscheme that will be used when installing plugins. - install = { colorscheme = { "habamax" } }, - -- automatically check for plugin updates - checker = { enabled = true }, - }) -< +GETTING STARTED *lazy.nvim-getting-started* +Check the documentation website for more information. ============================================================================== -4. 🔌 Plugin Spec *lazy.nvim-🔌-plugin-spec* - - -SPEC SOURCE *lazy.nvim-🔌-plugin-spec-spec-source* - - ----------------------------------------------------------------------------------- - Property Type Description - ---------- ---------- ------------------------------------------------------------- - [1] string? Short plugin url. Will be expanded using - config.git.url_format. Can also be a url or dir. - - dir string? A directory pointing to a local plugin - - url string? A custom git url where the plugin is hosted - - name string? A custom name for the plugin used for the local plugin - directory and as the display name - - dev boolean? When true, a local plugin directory will be used instead. See - config.dev - ----------------------------------------------------------------------------------- -A valid spec should define one of `[1]`, `dir` or `url`. - - -SPEC LOADING *lazy.nvim-🔌-plugin-spec-spec-loading* - - -------------------------------------------------------------------------------------------------- - Property Type Description - -------------- ------------------------- --------------------------------------------------------- - dependencies LazySpec[] A list of plugin names or plugin specs that should be - loaded when the plugin loads. Dependencies are always - lazy-loaded unless specified otherwise. When specifying a - name, make sure the plugin spec has been defined - somewhere else. - - enabled boolean? or fun():boolean When false, or if the function returns false, then this - plugin will not be included in the spec - - cond boolean? or Behaves the same as enabled, but won’t uninstall the - fun(LazyPlugin):boolean plugin when the condition is false. Useful to disable - some plugins in vscode, or firenvim for example. - - priority number? Only useful for start plugins (lazy=false) to force - loading certain plugins first. Default priority is 50. - It’s recommended to set this to a high number for - colorschemes. - -------------------------------------------------------------------------------------------------- - -SPEC SETUP *lazy.nvim-🔌-plugin-spec-spec-setup* - - -------------------------------------------------------------------------------------------------- - Property Type Description - ---------- ----------------------------- --------------------------------------------------------- - init fun(LazyPlugin) init functions are always executed during. Mostly useful - for setting vim.g.* configuration used by Vim plugins - startup - - opts table or opts should be a table (will be merged with parent - fun(LazyPlugin, opts:table) specs), return a table (replaces parent specs) or should - change a table. The table will be passed to the - Plugin.config() function. Setting this value will imply - Plugin.config() - - config fun(LazyPlugin, opts:table) config is executed when the plugin loads. The default - or true implementation will automatically run - require(MAIN).setup(opts) if opts or config = true is - set. Lazy uses several heuristics to determine the - plugin’s MAIN module automatically based on the plugin’s - name. (opts is the recommended way to configure plugins). - - main string? You can specify the main module to use for config() and - opts(), in case it can not be determined automatically. - See config() - - build fun(LazyPlugin) or string or build is executed when a plugin is installed or updated. - false or a list of build See Building for more information. - commands - -------------------------------------------------------------------------------------------------- -Always use `opts` instead of `config` when possible. `config` is almost never -needed. - - - - -SPEC LAZY LOADING *lazy.nvim-🔌-plugin-spec-spec-lazy-loading* - - -------------------------------------------------------------------------------------------------------------------- - Property Type Description - ---------- ---------------------------------------------------------------- ---------------------------------------- - lazy boolean? When true, the plugin will only be - loaded when needed. Lazy-loaded plugins - are automatically loaded when their Lua - modules are required, or when one of the - lazy-loading handlers triggers - - event string? or string[] or Lazy-load on event. Events can be - fun(self:LazyPlugin, event:string[]):string[] or specified as BufEnter or with a pattern - {event:string[]\|string, pattern?:string[]\|string} like BufEnter *.lua - - cmd string? or string[] or Lazy-load on command - fun(self:LazyPlugin, cmd:string[]):string[] - - ft string? or string[] or Lazy-load on filetype - fun(self:LazyPlugin, ft:string[]):string[] - - keys string? or string[] or LazyKeysSpec[] or Lazy-load on key mapping - fun(self:LazyPlugin, keys:string[]):(string \| LazyKeysSpec)[] - -------------------------------------------------------------------------------------------------------------------- -Refer to the Lazy Loading <./lazy_loading.md> section for more information. - - -SPEC VERSIONING *lazy.nvim-🔌-plugin-spec-spec-versioning* - - ------------------------------------------------------------------------------ - Property Type Description - ------------ -------------------- -------------------------------------------- - branch string? Branch of the repository - - tag string? Tag of the repository - - commit string? Commit of the repository - - version string? or false to Version to use from the repository. Full - override the default Semver ranges are supported - - pin boolean? When true, this plugin will not be included - in updates - - submodules boolean? When false, git submodules will not be - fetched. Defaults to true - ------------------------------------------------------------------------------ -Refer to the Versioning <./versioning.md> section for more information. - - -SPEC ADVANCED *lazy.nvim-🔌-plugin-spec-spec-advanced* - - ---------------------------------------------------------------------------------------- - Property Type Description - ---------- ---------- ------------------------------------------------------------------ - optional boolean? When a spec is tagged optional, it will only be included in the - final spec, when the same plugin has been specified at least once - somewhere else without optional. This is mainly useful for Neovim - distros, to allow setting options on plugins that may/may not be - part of the user’s plugins. - - specs LazySpec A list of plugin specs defined in the scope of the plugin. This is - mainly useful for Neovim distros, to allow setting options on - plugins that may/may not be part of the user’s plugins. When the - plugin is disabled, none of the scoped specs will be included in - the final spec. Similar to dependencies without the automatic - loading of the specs. - - module false? Do not automatically load this Lua module when it’s required - somewhere - - import string? Import the given spec module. - ---------------------------------------------------------------------------------------- - -EXAMPLES *lazy.nvim-🔌-plugin-spec-examples* - ->lua - return { - -- the colorscheme should be available when starting Neovim - { - "folke/tokyonight.nvim", - lazy = false, -- make sure we load this during startup if it is your main colorscheme - priority = 1000, -- make sure to load this before all the other start plugins - config = function() - -- load the colorscheme here - vim.cmd([[colorscheme tokyonight]]) - end, - }, - - -- I have a separate config.mappings file where I require which-key. - -- With lazy the plugin will be automatically loaded when it is required somewhere - { "folke/which-key.nvim", lazy = true }, - - { - "nvim-neorg/neorg", - -- lazy-load on filetype - ft = "norg", - -- options for neorg. This will automatically call `require("neorg").setup(opts)` - opts = { - load = { - ["core.defaults"] = {}, - }, - }, - }, - - { - "dstein64/vim-startuptime", - -- lazy-load on a command - cmd = "StartupTime", - -- init is called during startup. Configuration for vim plugins typically should be set in an init function - init = function() - vim.g.startuptime_tries = 10 - end, - }, - - { - "hrsh7th/nvim-cmp", - -- load cmp on InsertEnter - event = "InsertEnter", - -- these dependencies will only be loaded when cmp loads - -- dependencies are always lazy-loaded unless specified otherwise - dependencies = { - "hrsh7th/cmp-nvim-lsp", - "hrsh7th/cmp-buffer", - }, - config = function() - -- ... - end, - }, - - -- if some code requires a module from an unloaded plugin, it will be automatically loaded. - -- So for api plugins like devicons, we can always set lazy=true - { "nvim-tree/nvim-web-devicons", lazy = true }, - - -- you can use the VeryLazy event for things that can - -- load later and are not important for the initial UI - { "stevearc/dressing.nvim", event = "VeryLazy" }, - - { - "Wansmer/treesj", - keys = { - { "J", "TSJToggle", desc = "Join Toggle" }, - }, - opts = { use_default_keymaps = false, max_join_length = 150 }, - }, - - { - "monaqa/dial.nvim", - -- lazy-load on keys - -- mode is `n` by default. For more advanced options, check the section on key mappings - keys = { "", { "", mode = "n" } }, - }, - - -- local plugins need to be explicitly configured with dir - { dir = "~/projects/secret.nvim" }, - - -- you can use a custom url to fetch a plugin - { url = "git@github.com:folke/noice.nvim.git" }, - - -- local plugins can also be configured with the dev option. - -- This will use {config.dev.path}/noice.nvim/ instead of fetching it from GitHub - -- With the dev option, you can easily switch between the local and installed version of a plugin - { "folke/noice.nvim", dev = true }, - } -< - - -LAZY LOADING *lazy.nvim-🔌-plugin-spec-lazy-loading* - -**lazy.nvim** automagically lazy-loads Lua modules. This means that if you have -a plugin `A` that is lazy-loaded and a plugin `B` that requires a module of -plugin `A`, then plugin `A` will be loaded on demand as expected. - - -Additionally, you can also lazy-load on **events**, **commands**, **file -types** and **key mappings**. - -Plugins will be lazy-loaded when one of the following is `true`: - -- The plugin only exists as a dependency in your spec -- It has an `event`, `cmd`, `ft` or `keys` key -- `config.defaults.lazy == true` - - -🌈 COLORSCHEMES ~ - -Colorscheme plugins can be configured with `lazy=true`. The plugin will -automagically load when doing `colorscheme foobar`. - - - -⌨️ LAZY KEY MAPPINGS ~ - -The `keys` property can be a `string` or `string[]` for simple normal-mode -mappings, or it can be a `LazyKeysSpec` table with the following key-value -pairs: - -- **[1]**: (`string`) lhs **(required)** -- **[2]**: (`string|fun()`) rhs **(optional)** -- **mode**: (`string|string[]`) mode **(optional, defaults to "n")** -- **ft**: (`string|string[]`) `filetype` for buffer-local keymaps **(optional)** -- any other option valid for `vim.keymap.set` - -Key mappings will load the plugin the first time they get executed. - -When `[2]` is `nil`, then the real mapping has to be created by the `config()` -function. - ->lua - -- Example for neo-tree.nvim - { - "nvim-neo-tree/neo-tree.nvim", - keys = { - { "ft", "Neotree toggle", desc = "NeoTree" }, - }, - config = function() - require("neo-tree").setup() - end, - } -< - - -VERSIONING *lazy.nvim-🔌-plugin-spec-versioning* - -If you want to install a specific revision of a plugin, you can use `commit`, -`tag`, `branch`, `version`. - -The `version` property supports Semver ranges. - - - -EXAMPLES ~ - -- `*`: latest stable version (this excludes pre-release versions) -- `1.2.x`: any version that starts with `1.2`, such as `1.2.0`, `1.2.3`, etc. -- `^1.2.3`: any version that is compatible with `1.2.3`, such as `1.3.0`, `1.4.5`, etc., but not `2.0.0`. -- `~1.2.3`: any version that is compatible with `1.2.3`, such as `1.2.4`, `1.2.5`, but not `1.3.0`. -- `>1.2.3`: any version that is greater than `1.2.3`, such as `1.3.0`, `1.4.5`, etc. -- `>=1.2.3`: any version that is greater than or equal to `1.2.3`, such as `1.2.3`, `1.3.0`, `1.4.5`, etc. -- `<1.2.3`: any version that is less than `1.2.3`, such as `1.1.0`, `1.0.5`, etc. -- `<=1.2.3`: any version that is less than or equal to `1.2.3`, such as `1.2.3`, `1.1.0`, `1.0.5`, etc - - -============================================================================== -5. 📦 Packages *lazy.nvim-📦-packages* - -**lazy.nvim** supports three ways for plugins to define their dependencies and -configuration. - -- **Lazy**: `lazy.lua` file -- **Rockspec**: luarocks `*-scm-1.rockspec` file -- **Packspec**: `pkg.json` (experimental, since the format is not quite there yet) - -You can enable/disable package sources with `config.pkg.sources` -. The order of sources is important, as the first source that -finds a package will be used. - - - -LAZY *lazy.nvim-📦-packages-lazy* - -Using a `lazy.lua` file is the recommended way to define your plugin -dependencies and configuration. Syntax is the same as any plugin spec. - - -ROCKSPEC *lazy.nvim-📦-packages-rockspec* - -When a plugin contains a `*-1.rockspec` file, **lazy.nvim** will automatically -build the rock and its dependencies. - -A **rockspec** will only be used if one of the following is true: - -- the package does not have a `/lua` directory -- the package has a complex build step -- the package has dependencies (excluding `lua`) - - -PACKSPEC *lazy.nvim-📦-packages-packspec* - -Supports the pkg.json - format, with -a lazy extension in `lazy`. `lazy` can contain any valid lazy spec fields. They -will be added to the plugin’s spec. - - -============================================================================== -6. ⚙️ Configuration *lazy.nvim-⚙️-configuration* - -**lazy.nvim** comes with the following defaults: - ->lua - { - root = vim.fn.stdpath("data") .. "/lazy", -- directory where plugins will be installed - defaults = { - -- Set this to `true` to have all your plugins lazy-loaded by default. - -- Only do this if you know what you are doing, as it can lead to unexpected behavior. - lazy = false, -- should plugins be lazy-loaded? - -- It's recommended to leave version=false for now, since a lot the plugin that support versioning, - -- have outdated releases, which may break your Neovim install. - version = nil, -- always use the latest git commit - -- version = "*", -- try installing the latest stable version for plugins that support semver - -- default `cond` you can use to globally disable a lot of plugins - -- when running inside vscode for example - cond = nil, ---@type boolean|fun(self:LazyPlugin):boolean|nil - }, - -- leave nil when passing the spec as the first argument to setup() - spec = nil, ---@type LazySpec - local_spec = true, -- load project specific .lazy.lua spec files. They will be added at the end of the spec. - lockfile = vim.fn.stdpath("config") .. "/lazy-lock.json", -- lockfile generated after running update. - ---@type number? limit the maximum amount of concurrent tasks - concurrency = jit.os:find("Windows") and (vim.uv.available_parallelism() * 2) or nil, - git = { - -- defaults for the `Lazy log` command - -- log = { "--since=3 days ago" }, -- show commits from the last 3 days - log = { "-8" }, -- show the last 8 commits - timeout = 120, -- kill processes that take more than 2 minutes - url_format = "https://github.com/%s.git", - -- lazy.nvim requires git >=2.19.0. If you really want to use lazy with an older version, - -- then set the below to false. This should work, but is NOT supported and will - -- increase downloads a lot. - filter = true, - }, - pkg = { - enabled = true, - cache = vim.fn.stdpath("state") .. "/lazy/pkg-cache.lua", - versions = true, -- Honor versions in pkg sources - -- the first package source that is found for a plugin will be used. - sources = { - "lazy", - "rockspec", - "packspec", - }, - }, - rocks = { - root = vim.fn.stdpath("data") .. "/lazy-rocks", - server = "https://nvim-neorocks.github.io/rocks-binaries/", - }, - dev = { - ---@type string | fun(plugin: LazyPlugin): string directory where you store your local plugin projects - path = "~/projects", - ---@type string[] plugins that match these patterns will use your local versions instead of being fetched from GitHub - patterns = {}, -- For example {"folke"} - fallback = false, -- Fallback to git when local plugin doesn't exist - }, - install = { - -- install missing plugins on startup. This doesn't increase startup time. - missing = true, - -- try to load one of these colorschemes when starting an installation during startup - colorscheme = { "habamax" }, - }, - ui = { - -- a number <1 is a percentage., >1 is a fixed size - size = { width = 0.8, height = 0.8 }, - wrap = true, -- wrap the lines in the ui - -- The border to use for the UI window. Accepts same border values as |nvim_open_win()|. - border = "none", - -- The backdrop opacity. 0 is fully opaque, 100 is fully transparent. - backdrop = 60, - title = nil, ---@type string only works when border is not "none" - title_pos = "center", ---@type "center" | "left" | "right" - -- Show pills on top of the Lazy window - pills = true, ---@type boolean - icons = { - cmd = " ", - config = "", - event = " ", - favorite = " ", - ft = " ", - init = " ", - import = " ", - keys = " ", - lazy = "󰒲 ", - loaded = "●", - not_loaded = "○", - plugin = " ", - runtime = " ", - require = "󰢱 ", - source = " ", - start = " ", - task = "✔ ", - list = { - "●", - "➜", - "★", - "‒", - }, - }, - -- leave nil, to automatically select a browser depending on your OS. - -- If you want to use a specific browser, you can define it here - browser = nil, ---@type string? - throttle = 20, -- how frequently should the ui process render events - custom_keys = { - -- You can define custom key maps here. If present, the description will - -- be shown in the help menu. - -- To disable one of the defaults, set it to false. - - ["l"] = { - function(plugin) - require("lazy.util").float_term({ "lazygit", "log" }, { - cwd = plugin.dir, - }) - end, - desc = "Open lazygit log", - }, - - ["t"] = { - function(plugin) - require("lazy.util").float_term(nil, { - cwd = plugin.dir, - }) - end, - desc = "Open terminal in plugin dir", - }, - }, - }, - diff = { - -- diff command can be one of: - -- * browser: opens the github compare view. Note that this is always mapped to as well, - -- so you can have a different command for diff - -- * git: will run git diff and open a buffer with filetype git - -- * terminal_git: will open a pseudo terminal with git diff - -- * diffview.nvim: will open Diffview to show the diff - cmd = "git", - }, - checker = { - -- automatically check for plugin updates - enabled = false, - concurrency = nil, ---@type number? set to 1 to check for updates very slowly - notify = true, -- get a notification when new updates are found - frequency = 3600, -- check for updates every hour - check_pinned = false, -- check for pinned packages that can't be updated - }, - change_detection = { - -- automatically check for config file changes and reload the ui - enabled = true, - notify = true, -- get a notification when changes are found - }, - performance = { - cache = { - enabled = true, - }, - reset_packpath = true, -- reset the package path to improve startup time - rtp = { - reset = true, -- reset the runtime path to $VIMRUNTIME and your config directory - ---@type string[] - paths = {}, -- add any custom paths here that you want to includes in the rtp - ---@type string[] list any plugins you want to disable here - disabled_plugins = { - -- "gzip", - -- "matchit", - -- "matchparen", - -- "netrwPlugin", - -- "tarPlugin", - -- "tohtml", - -- "tutor", - -- "zipPlugin", - }, - }, - }, - -- lazy can generate helptags from the headings in markdown readme files, - -- so :help works even for plugins that don't have vim docs. - -- when the readme opens with :help it will be correctly displayed as markdown - readme = { - enabled = true, - root = vim.fn.stdpath("state") .. "/lazy/readme", - files = { "README.md", "lua/**/README.md" }, - -- only generate markdown helptags for plugins that dont have docs - skip_if_doc_exists = true, - }, - state = vim.fn.stdpath("state") .. "/lazy/state.json", -- state info for checker and other things - -- Enable profiling of lazy.nvim. This will add some overhead, - -- so only enable this when you are debugging lazy.nvim - profiling = { - -- Enables extra stats on the debug tab related to the loader cache. - -- Additionally gathers stats about all package.loaders - loader = false, - -- Track each new require in the Lazy profiling tab - require = false, - }, - } -< - -If you don’t want to use a Nerd Font, you can replace the icons with Unicode symbols. ~ - ->lua - { - ui = { - icons = { - cmd = "⌘", - config = "🛠", - event = "📅", - ft = "📂", - init = "⚙", - keys = "🗝", - plugin = "🔌", - runtime = "💻", - require = "🌙", - source = "📄", - start = "🚀", - task = "📌", - lazy = "💤 ", - }, - }, - } -< - - -🌈 HIGHLIGHT GROUPS *lazy.nvim-⚙️-configuration-🌈-highlight-groups* - - ----------------------------------------------------------------------- - Highlight Group Default Group Description - ----------------------- ----------------------- ----------------------- - LazyButton CursorLine - - LazyButtonActive Visual - - LazyComment Comment - - LazyCommit @variable.builtin commit ref - - LazyCommitIssue Number - - LazyCommitScope Italic conventional commit - scope - - LazyCommitType Title conventional commit - type - - LazyDimmed Conceal property - - LazyDir @markup.link directory - - LazyH1 IncSearch home button - - LazyH2 Bold titles - - LazyLocal Constant - - LazyNoCond DiagnosticWarn unloaded icon for a - plugin where cond() was - false - - LazyNormal NormalFloat - - LazyProgressDone Constant progress bar done - - LazyProgressTodo LineNr progress bar todo - - LazyProp Conceal property - - LazyReasonCmd Operator - - LazyReasonEvent Constant - - LazyReasonFt Character - - LazyReasonImport Identifier - - LazyReasonKeys Statement - - LazyReasonPlugin Special - - LazyReasonRequire @variable.parameter - - LazyReasonRuntime @macro - - LazyReasonSource Character - - LazyReasonStart @variable.member - - LazySpecial @punctuation.special - - LazyTaskError ErrorMsg task errors - - LazyTaskOutput MsgArea task output - - LazyUrl @markup.link url - - LazyValue @string value of a property - ----------------------------------------------------------------------- - -============================================================================== -7. 🚀 Usage *lazy.nvim-🚀-usage* - - -▶️ STARTUP SEQUENCE *lazy.nvim-🚀-usage-▶️-startup-sequence* - -**lazy.nvim** does **NOT** use Neovim packages and even disables plugin loading -completely (`vim.go.loadplugins = false`). It takes over the complete startup -sequence for more flexibility and better performance. - -In practice this means that step 10 of |Neovim Initialization| is done by Lazy: - -1. All the plugins’ `init()` functions are executed -2. All plugins with `lazy=false` are loaded. This includes sourcing `/plugin` and `/ftdetect` files. (`/after` will not be sourced yet) -3. All files from `/plugin` and `/ftdetect` directories in your rtp are sourced (excluding `/after`) -4. All `/after/plugin` files are sourced (this includes `/after` from plugins) - -Files from runtime directories are always sourced in alphabetical order. - - -🚀 COMMANDS *lazy.nvim-🚀-usage-🚀-commands* - -Plugins are managed with the `:Lazy` command. Open the help with `` to see -all the key mappings. - -You can press `` on a plugin to show its details. Most properties can be -hovered with `` to open links, help files, readmes, git commits and git -issues. - -Lazy can automatically check for updates in the background. This feature can be -enabled with `config.checker.enabled = true`. - -Any operation can be started from the UI, with a sub command or an API -function: - - ---------------------------------------------------------------------------------- - Command Lua Description - ------------------------- -------------------------------- ----------------------- - :Lazy build {plugins} require("lazy").build(opts) Rebuild a plugin - - :Lazy check [plugins] require("lazy").check(opts?) Check for updates and - show the log (git - fetch) - - :Lazy clean [plugins] require("lazy").clean(opts?) Clean plugins that are - no longer needed - - :Lazy clear require("lazy").clear() Clear finished tasks - - :Lazy debug require("lazy").debug() Show debug information - - :Lazy health require("lazy").health() Run :checkhealth lazy - - :Lazy help require("lazy").help() Toggle this help page - - :Lazy home require("lazy").home() Go back to plugin list - - :Lazy install [plugins] require("lazy").install(opts?) Install missing plugins - - :Lazy load {plugins} require("lazy").load(opts) Load a plugin that has - not been loaded yet. - Similar to :packadd. - Like - :Lazy load foo.nvim. - Use :Lazy! load to skip - cond checks. - - :Lazy log [plugins] require("lazy").log(opts?) Show recent updates - - :Lazy profile require("lazy").profile() Show detailed profiling - - :Lazy reload {plugins} require("lazy").reload(opts) Reload a plugin - (experimental!!) - - :Lazy restore [plugins] require("lazy").restore(opts?) Updates all plugins to - the state in the - lockfile. For a single - plugin: restore it to - the state in the - lockfile or to a given - commit under the cursor - - :Lazy sync [plugins] require("lazy").sync(opts?) Run install, clean and - update - - :Lazy update [plugins] require("lazy").update(opts?) Update plugins. This - will also update the - lockfile - ---------------------------------------------------------------------------------- -Any command can have a **bang** to make the command wait till it finished. For -example, if you want to sync lazy from the cmdline, you can use: - ->shell - nvim --headless "+Lazy! sync" +qa -< - -`opts` is a table with the following key-values: - -- **wait**: when true, then the call will wait till the operation completed -- **show**: when false, the UI will not be shown -- **plugins**: a list of plugin names to run the operation on -- **concurrency**: limit the `number` of concurrently running tasks - -Stats API (`require("lazy").stats()`): - ->lua - { - -- startuptime in milliseconds till UIEnter - startuptime = 0, - -- when true, startuptime is the accurate cputime for the Neovim process. (Linux & macOS) - -- this is more accurate than `nvim --startuptime`, and as such will be slightly higher - -- when false, startuptime is calculated based on a delta with a timestamp when lazy started. - real_cputime = false, - count = 0, -- total number of plugins - loaded = 0, -- number of loaded plugins - ---@type table - times = {}, - } -< - -**lazy.nvim** provides a statusline component that you can use to show the -number of pending updates. Make sure to enable `config.checker.enabled = true` -to make this work. - -Example of configuring lualine.nvim ~ - ->lua - require("lualine").setup({ - sections = { - lualine_x = { - { - require("lazy.status").updates, - cond = require("lazy.status").has_updates, - color = { fg = "#ff9e64" }, - }, - }, - }, - }) -< - - -📆 USER EVENTS *lazy.nvim-🚀-usage-📆-user-events* - -The following user events will be triggered: - -- **LazyDone**: when lazy has finished starting up and loaded your config -- **LazySync**: after running sync -- **LazyInstall**: after an install -- **LazyUpdate**: after an update -- **LazyClean**: after a clean -- **LazyCheck**: after checking for updates -- **LazyLog**: after running log -- **LazyLoad**: after loading a plugin. The `data` attribute will contain the plugin name. -- **LazySyncPre**: before running sync -- **LazyInstallPre**: before an install -- **LazyUpdatePre**: before an update -- **LazyCleanPre**: before a clean -- **LazyCheckPre**: before checking for updates -- **LazyLogPre**: before running log -- **LazyReload**: triggered by change detection after reloading plugin specs -- **VeryLazy**: triggered after `LazyDone` and processing `VimEnter` auto commands -- **LazyVimStarted**: triggered after `UIEnter` when `require("lazy").stats().startuptime` has been calculated. - Useful to update the startuptime on your dashboard. - - -❌ UNINSTALLING *lazy.nvim-🚀-usage-❌-uninstalling* - -To uninstall **lazy.nvim**, you need to remove the following files and -directories: - -- **data**: `~/.local/share/nvim/lazy` -- **state**: `~/.local/state/nvim/lazy` -- **lockfile**: `~/.config/nvim/lazy-lock.json` - - - Paths can differ if you changed `XDG` environment variables. - -🔒 LOCKFILE *lazy.nvim-🚀-usage-🔒-lockfile* - -After every **update**, the local lockfile (`lazy-lock.json`) is updated with -the installed revisions. It is recommended to have this file under version -control. - -If you use your Neovim config on multiple machines, using the lockfile, you can -ensure that the same version of every plugin is installed. - -If you are on another machine, you can do `:Lazy restore`, to update all your -plugins to the version from the lockfile. - - -📦 MIGRATION GUIDE *lazy.nvim-🚀-usage-📦-migration-guide* - - -PACKER.NVIM ~ - -- `setup` ➡️ `init` -- `requires` ➡️ `dependencies` -- `as` ➡️ `name` -- `opt` ➡️ `lazy` -- `run` ➡️ `build` -- `lock` ➡️ `pin` -- `disable=true` ➡️ `enabled = false` -- `tag='*'` ➡️ `version="*"` -- `after` is **not needed** for most use-cases. Use `dependencies` otherwise. -- `wants` is **not needed** for most use-cases. Use `dependencies` otherwise. -- `config` don’t support string type, use `fun(LazyPlugin)` instead. -- `module` is auto-loaded. No need to specify -- `keys` spec is |lazy.nvim-different| -- `rtp` can be accomplished with: - ->lua - config = function(plugin) - vim.opt.rtp:append(plugin.dir .. "/custom-rtp") - end -< - -With packer `wants`, `requires` and `after` can be used to manage dependencies. -With lazy, this isn’t needed for most of the Lua dependencies. They can be -installed just like normal plugins (even with `lazy=true`) and will be loaded -when other plugins need them. The `dependencies` key can be used to group those -required plugins with the one that requires them. The plugins which are added -as `dependencies` will always be lazy-loaded and loaded when the plugin is -loaded. - - -PAQ-NVIM ~ - -- `as` ➡️ `name` -- `opt` ➡️ `lazy` -- `run` ➡️ `build` - - -⚡ PROFILING & DEBUG *lazy.nvim-🚀-usage-⚡-profiling-&-debug* - -Great care has been taken to make the startup code (`lazy.core`) as efficient -as possible. During startup, all Lua files used before `VimEnter` or -`BufReadPre` are byte-compiled and cached, similar to what impatient.nvim - does. - -My config for example loads in about `11ms` with `93` plugins. I do a lot of -lazy-loading though :) - -**lazy.nvim** comes with an advanced profiler `:Lazy profile` to help you -improve performance. The profiling view shows you why and how long it took to -load your plugins. - - -🐛 DEBUG ~ - -See an overview of active lazy-loading handlers and what’s in the module -cache. - - -📂 STRUCTURING YOUR PLUGINS*lazy.nvim-🚀-usage-📂-structuring-your-plugins* - -Some users may want to split their plugin specs in multiple files. Instead of -passing a spec table to `setup()`, you can use a Lua module. The specs from the -**module** and any top-level **sub-modules** will be merged together in the -final spec, so it is not needed to add `require` calls in your main plugin file -to the other files. - -The benefits of using this approach: - -- Simple to **add** new plugin specs. Just create a new file in your plugins module. -- Allows for **caching** of all your plugin specs. This becomes important if you have a lot of smaller plugin specs. -- Spec changes will automatically be **reloaded** when they’re updated, so the `:Lazy` UI is always up to date. - -Example: - -- `~/.config/nvim/init.lua` - ->lua - require("lazy").setup("plugins") -< - -- `~/.config/nvim/lua/plugins.lua` or `~/.config/nvim/lua/plugins/init.lua` **(this file is optional)** - ->lua - return { - "folke/neodev.nvim", - "folke/which-key.nvim", - { "folke/neoconf.nvim", cmd = "Neoconf" }, - } -< - -- Any lua file in `~/.config/nvim/lua/plugins/*.lua` will be automatically merged in the main plugin spec - -For a real-life example, you can check LazyVim - and more specifically: - -- lazyvim.plugins contains all the plugin specs that will be loaded - - -↩️ IMPORTING SPECS, CONFIG & OPTS - -As part of a spec, you can add `import` statements to import additional plugin -modules. Both of the `setup()` calls are equivalent: - ->lua - require("lazy").setup("plugins") - - -- Same as: - require("lazy").setup({{import = "plugins"}}) -< - -To import multiple modules from a plugin, add additional specs for each import. -For example, to import LazyVim core plugins and an optional plugin: - ->lua - require("lazy").setup({ - spec = { - { "LazyVim/LazyVim", import = "lazyvim.plugins" }, - { import = "lazyvim.plugins.extras.coding.copilot" }, - } - }) -< - -When you import specs, you can override them by simply adding a spec for the -same plugin to your local specs, adding any keys you want to override / merge. - -`opts`, `dependencies`, `cmd`, `event`, `ft` and `keys` are always merged with -the parent spec. Any other property will override the property from the parent -spec. - - -============================================================================== -8. 🔥 Developers *lazy.nvim-🔥-developers* - -To make it easier for users to install your plugin, you can include a package -spec in your repo. - - -BEST PRACTICES *lazy.nvim-🔥-developers-best-practices* - -- If your plugin needs `setup()`, then create a simple `lazy.lua` file like this: - >lua - return { "me/my-plugin", opts = {} } - < -- Plugins that are pure lua libraries should be lazy-loaded with `lazy = true`. - >lua - { "nvim-lua/plenary.nvim", lazy = true } - < -- Always use `opts` instead of `config` when possible. `config` is almost never - needed. -- Only use `dependencies` if a plugin needs the dep to be installed **AND** - loaded. Lua plugins/libraries are automatically loaded when they are - `require()`d, so they don’t need to be in `dependencies`. -- Inside a `build` function or `*.lua` build file, use - `coroutine.yield(msg:string|LazyMsg)` to show progress. -- Don’t change the `cwd` in your build function, since builds run in parallel - and changing the `cwd` will affect other builds. - - -BUILDING *lazy.nvim-🔥-developers-building* - -The spec **build** property can be one of the following: - -- `fun(plugin: LazyPlugin)`: a function that builds the plugin. -- `*.lua`: a Lua file that builds the plugin (like `build.lua`) -- `":Command"`: a Neovim command -- `"rockspec"`: this will run `luarocks make` in the plugin’s directory - This is automatically set by the `rockspec` package source. -- any other **string** will be run as a shell command -- a `list` of any of the above to run multiple build steps -- if no `build` is specified, but a `build.lua` file exists, that will be used instead. - -Build functions and `*.lua` files run asynchronously in a coroutine. Use -`coroutine.yield(msg:string|LazyMsg)` to show progress. - -Yielding will also schedule the next `coroutine.resume()` to run in the next -tick, so you can do long-running tasks without blocking Neovim. - ->lua - ---@class LazyMsg - ---@field msg string - ---@field level? number vim.log.levels.XXX -< - -Use `vim.log.levels.TRACE` to only show the message as a **status** message for -the task. - - - -MINIT (MINIMAL INIT) *lazy.nvim-🔥-developers-minit-(minimal-init)* - -**lazy.nvim** comes with some built-in functionality to help you create a -minimal init for your plugin. - -I mainly use this for testing and for users to create a `repro.lua`. - -When running in **headless** mode, **lazy.nvim** will log any messages to the -terminal. See `opts.headless` for more info. - -**minit** will install/load all your specs and will always run an update as -well. - - -BOOTSTRAP ~ - ->lua - -- setting this env will override all XDG paths - vim.env.LAZY_STDPATH = ".tests" - -- this will install lazy in your stdpath - load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() -< - - -TESTING WITH BUSTED ~ - -This will add `"lunarmodules/busted"`, configure `hererocks` and run `busted`. - -Below is an example of how I use **minit** to run tests with busted - in **LazyVim**. - ->lua - #!/usr/bin/env -S nvim -l - - vim.env.LAZY_STDPATH = ".tests" - load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() - - -- Setup lazy.nvim - require("lazy.minit").busted({ - spec = { - "LazyVim/starter", - "williamboman/mason-lspconfig.nvim", - "williamboman/mason.nvim", - "nvim-treesitter/nvim-treesitter", - }, - }) -< - -To use this, you can run: - ->sh - nvim -l ./tests/busted.lua tests -< - -If you want to inspect the test environment, run: - ->sh - nvim -u ./tests/busted.lua -< - - -REPRO.LUA ~ - ->lua - vim.env.LAZY_STDPATH = ".repro" - load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() - - require("lazy.minit").repro({ - spec = { - "stevearc/conform.nvim", - "nvim-neotest/nvim-nio", - }, - }) - - -- do anything else you need to do to reproduce the issue -< - -Then run it with: - ->sh - nvim -u repro.lua -< - -============================================================================== -9. Links *lazy.nvim-links* +1. Links *lazy.nvim-links* 1. *image*: https://user-images.githubusercontent.com/292349/208301737-68fb279c-ba70-43ef-a369-8c3e8367d6b1.png -2. *image*: https://user-images.githubusercontent.com/292349/208301766-5c400561-83c3-4811-9667-1ec4bb3c43b8.png -3. *image*: https://user-images.githubusercontent.com/292349/208301790-7eedbfa5-d202-4e70-852e-de68aa47233b.png Generated by panvimdoc From 0ff7e83c17c6eef181116954761ee8ed84db88a7 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 6 Jul 2024 16:05:52 +0000 Subject: [PATCH 232/342] chore(build): auto-generate docs --- doc/lazy.nvim.txt | 1398 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 1352 insertions(+), 46 deletions(-) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index cb18dda..73bd0ae 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -1,61 +1,130 @@ -*lazy.nvim.txt* For Neovim Last change: 2024 July 06 +*lazy.nvim.txt* A modern plugin manager for Neovim ============================================================================== Table of Contents *lazy.nvim-table-of-contents* - - Features |lazy.nvim-features| - - Requirements |lazy.nvim-requirements| - - Getting Started |lazy.nvim-getting-started| -1. Links |lazy.nvim-links| -Install -· -Configure -· -Docs - - - - - - - - - - - - - - +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. 📰 What’s new? *lazy.nvim-📰-what’s-new?* +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 . The GitHub `README.md` + has been updated to point to the new website. The `vimdoc` contains all the + information that is available on the website. +- **Spec Resolution & Merging**: the code that resolves a final spec from a + plugin’s fragments has been rewritten. This should be a tiny bit faster, but + more importantly, fixes some issues and is easier to maintain. +- Packages can now specify their dependencies + and configuration using one of: + - **Lazy**: `lazy.lua` file + - **Rockspec**: luarocks `*-scm-1.rockspec` file + - **Packspec**: `pkg.json` (experimental, since the format is not quite there yet) + Related _lazy.nvim_ options: + >lua + { + pkg = { + enabled = true, + cache = vim.fn.stdpath("state") .. "/lazy/pkg-cache.lua", + -- the first package source that is found for a plugin will be used. + sources = { + "lazy", + "rockspec", -- will only be used when rocks.enabled is true + "packspec", + }, + }, + rocks = { + enabled = true, + root = vim.fn.stdpath("data") .. "/lazy-rocks", + server = "https://nvim-neorocks.github.io/rocks-binaries/", + }, + } + < +- Installing neorg is now as simple as: + >lua + { "nvim-neorg/neorg", opts = {} } + < +- Packages are not limited to just Neovim plugins. You can install any + **luarocks** package, like: + >lua + { "https://github.com/lubyk/yaml" } + < + Luarocks packages without a `/lua` directory are never lazy-loaded, since + it’s just a library. +- `build` functions or `*.lua` build files (like `build.lua`) now run + asynchronously. You can use `coroutine.yield(status_msg)` to show progress. + Yielding will also schedule the next `resume` to run in the next tick, so you + can do long-running tasks without blocking Neovim. +============================================================================== +2. 🚀 Getting Started *lazy.nvim-🚀-getting-started* **lazy.nvim** is a modern plugin manager for Neovim. -FEATURES *lazy.nvim-features* +✨ FEATURES *lazy.nvim-🚀-getting-started-✨-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 support -- Statusline component to see the number of pending updates -- Automatically lazy-loads colorschemes +- 📦 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 support +- 📈 Statusline component to see the number of pending updates +- 🎨 Automatically lazy-loads colorschemes -REQUIREMENTS *lazy.nvim-requirements* +⚡️ REQUIREMENTS *lazy.nvim-🚀-getting-started-⚡️-requirements* - Neovim >= **0.8.0** (needs to be built with **LuaJIT**) - Git >= **2.19.0** (for partial clones support) @@ -64,14 +133,1251 @@ REQUIREMENTS *lazy.nvim-requirements* You can remove `rockspec` from `opts.pkg.sources` to disable this feature. -GETTING STARTED *lazy.nvim-getting-started* +============================================================================== +3. 🛠️ Installation *lazy.nvim-🛠️-installation* + +There are multiple ways to install **lazy.nvim**. The **Structured Setup** is +the recommended way, but you can also use the **Single File Setup** if you +prefer to keep everything in your `init.lua`. + +Please refer to the Configuration section for an overview of +all available options. + + + + +STRUCTURED SETUP *lazy.nvim-🛠️-installation-structured-setup* + +>lua + require("config.lazy") +< + +>lua + -- Bootstrap lazy.nvim + local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" + if not (vim.uv or vim.loop).fs_stat(lazypath) then + local lazyrepo = "https://github.com/folke/lazy.nvim.git" + local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) + if vim.v.shell_error ~= 0 then + vim.api.nvim_echo({ + { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, + { out, "WarningMsg" }, + { "\nPress any key to exit..." }, + }, true, {}) + vim.fn.getchar() + os.exit(1) + end + end + vim.opt.rtp:prepend(lazypath) + + -- Make sure to setup `mapleader` and `maplocalleader` before + -- loading lazy.nvim so that mappings are correct. + -- This is also a good place to setup other settings (vim.opt) + vim.g.mapleader = " " + vim.g.maplocalleader = "\\" + + -- Setup lazy.nvim + require("lazy").setup({ + -- highlight-start + spec = { + -- import your plugins + { import = "plugins" }, + }, + -- highlight-end + -- Configure any other settings here. See the documentation for more details. + -- colorscheme that will be used when installing plugins. + install = { colorscheme = { "habamax" } }, + -- automatically check for plugin updates + checker = { enabled = true }, + }) +< + +You can then create your plugin specs in `~/.config/nvim/lua/plugins/`. Each +file should return a table with the plugins you want to install. + +For more info see Structuring Your Plugins + + +SINGLE FILE SETUP *lazy.nvim-🛠️-installation-single-file-setup* + +>lua + -- Bootstrap lazy.nvim + local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" + if not (vim.uv or vim.loop).fs_stat(lazypath) then + local lazyrepo = "https://github.com/folke/lazy.nvim.git" + local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) + if vim.v.shell_error ~= 0 then + vim.api.nvim_echo({ + { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, + { out, "WarningMsg" }, + { "\nPress any key to exit..." }, + }, true, {}) + vim.fn.getchar() + os.exit(1) + end + end + vim.opt.rtp:prepend(lazypath) + + -- Make sure to setup `mapleader` and `maplocalleader` before + -- loading lazy.nvim so that mappings are correct. + -- This is also a good place to setup other settings (vim.opt) + vim.g.mapleader = " " + vim.g.maplocalleader = "\\" + + -- Setup lazy.nvim + require("lazy").setup({ + -- highlight-start + spec = { + -- add your plugins here + }, + -- highlight-end + -- Configure any other settings here. See the documentation for more details. + -- colorscheme that will be used when installing plugins. + install = { colorscheme = { "habamax" } }, + -- automatically check for plugin updates + checker = { enabled = true }, + }) +< -Check the documentation website for more information. ============================================================================== -1. Links *lazy.nvim-links* +4. 🔌 Plugin Spec *lazy.nvim-🔌-plugin-spec* + + +SPEC SOURCE *lazy.nvim-🔌-plugin-spec-spec-source* + + ----------------------------------------------------------------------------------- + Property Type Description + ---------- ---------- ------------------------------------------------------------- + [1] string? Short plugin url. Will be expanded using + config.git.url_format. Can also be a url or dir. + + dir string? A directory pointing to a local plugin + + url string? A custom git url where the plugin is hosted + + name string? A custom name for the plugin used for the local plugin + directory and as the display name + + dev boolean? When true, a local plugin directory will be used instead. See + config.dev + ----------------------------------------------------------------------------------- +A valid spec should define one of `[1]`, `dir` or `url`. + + +SPEC LOADING *lazy.nvim-🔌-plugin-spec-spec-loading* + + -------------------------------------------------------------------------------------------------- + Property Type Description + -------------- ------------------------- --------------------------------------------------------- + dependencies LazySpec[] A list of plugin names or plugin specs that should be + loaded when the plugin loads. Dependencies are always + lazy-loaded unless specified otherwise. When specifying a + name, make sure the plugin spec has been defined + somewhere else. + + enabled boolean? or fun():boolean When false, or if the function returns false, then this + plugin will not be included in the spec + + cond boolean? or Behaves the same as enabled, but won’t uninstall the + fun(LazyPlugin):boolean plugin when the condition is false. Useful to disable + some plugins in vscode, or firenvim for example. + + priority number? Only useful for start plugins (lazy=false) to force + loading certain plugins first. Default priority is 50. + It’s recommended to set this to a high number for + colorschemes. + -------------------------------------------------------------------------------------------------- + +SPEC SETUP *lazy.nvim-🔌-plugin-spec-spec-setup* + + -------------------------------------------------------------------------------------------------- + Property Type Description + ---------- ----------------------------- --------------------------------------------------------- + init fun(LazyPlugin) init functions are always executed during. Mostly useful + for setting vim.g.* configuration used by Vim plugins + startup + + opts table or opts should be a table (will be merged with parent + fun(LazyPlugin, opts:table) specs), return a table (replaces parent specs) or should + change a table. The table will be passed to the + Plugin.config() function. Setting this value will imply + Plugin.config() + + config fun(LazyPlugin, opts:table) config is executed when the plugin loads. The default + or true implementation will automatically run + require(MAIN).setup(opts) if opts or config = true is + set. Lazy uses several heuristics to determine the + plugin’s MAIN module automatically based on the plugin’s + name. (opts is the recommended way to configure plugins). + + main string? You can specify the main module to use for config() and + opts(), in case it can not be determined automatically. + See config() + + build fun(LazyPlugin) or string or build is executed when a plugin is installed or updated. + false or a list of build See Building for more information. + commands + -------------------------------------------------------------------------------------------------- +Always use `opts` instead of `config` when possible. `config` is almost never +needed. + + + + +SPEC LAZY LOADING *lazy.nvim-🔌-plugin-spec-spec-lazy-loading* + + -------------------------------------------------------------------------------------------------------------------- + Property Type Description + ---------- ---------------------------------------------------------------- ---------------------------------------- + lazy boolean? When true, the plugin will only be + loaded when needed. Lazy-loaded plugins + are automatically loaded when their Lua + modules are required, or when one of the + lazy-loading handlers triggers + + event string? or string[] or Lazy-load on event. Events can be + fun(self:LazyPlugin, event:string[]):string[] or specified as BufEnter or with a pattern + {event:string[]\|string, pattern?:string[]\|string} like BufEnter *.lua + + cmd string? or string[] or Lazy-load on command + fun(self:LazyPlugin, cmd:string[]):string[] + + ft string? or string[] or Lazy-load on filetype + fun(self:LazyPlugin, ft:string[]):string[] + + keys string? or string[] or LazyKeysSpec[] or Lazy-load on key mapping + fun(self:LazyPlugin, keys:string[]):(string \| LazyKeysSpec)[] + -------------------------------------------------------------------------------------------------------------------- +Refer to the Lazy Loading <./lazy_loading.md> section for more information. + + +SPEC VERSIONING *lazy.nvim-🔌-plugin-spec-spec-versioning* + + ------------------------------------------------------------------------------ + Property Type Description + ------------ -------------------- -------------------------------------------- + branch string? Branch of the repository + + tag string? Tag of the repository + + commit string? Commit of the repository + + version string? or false to Version to use from the repository. Full + override the default Semver ranges are supported + + pin boolean? When true, this plugin will not be included + in updates + + submodules boolean? When false, git submodules will not be + fetched. Defaults to true + ------------------------------------------------------------------------------ +Refer to the Versioning <./versioning.md> section for more information. + + +SPEC ADVANCED *lazy.nvim-🔌-plugin-spec-spec-advanced* + + ---------------------------------------------------------------------------------------- + Property Type Description + ---------- ---------- ------------------------------------------------------------------ + optional boolean? When a spec is tagged optional, it will only be included in the + final spec, when the same plugin has been specified at least once + somewhere else without optional. This is mainly useful for Neovim + distros, to allow setting options on plugins that may/may not be + part of the user’s plugins. + + specs LazySpec A list of plugin specs defined in the scope of the plugin. This is + mainly useful for Neovim distros, to allow setting options on + plugins that may/may not be part of the user’s plugins. When the + plugin is disabled, none of the scoped specs will be included in + the final spec. Similar to dependencies without the automatic + loading of the specs. + + module false? Do not automatically load this Lua module when it’s required + somewhere + + import string? Import the given spec module. + ---------------------------------------------------------------------------------------- + +EXAMPLES *lazy.nvim-🔌-plugin-spec-examples* + +>lua + return { + -- the colorscheme should be available when starting Neovim + { + "folke/tokyonight.nvim", + lazy = false, -- make sure we load this during startup if it is your main colorscheme + priority = 1000, -- make sure to load this before all the other start plugins + config = function() + -- load the colorscheme here + vim.cmd([[colorscheme tokyonight]]) + end, + }, + + -- I have a separate config.mappings file where I require which-key. + -- With lazy the plugin will be automatically loaded when it is required somewhere + { "folke/which-key.nvim", lazy = true }, + + { + "nvim-neorg/neorg", + -- lazy-load on filetype + ft = "norg", + -- options for neorg. This will automatically call `require("neorg").setup(opts)` + opts = { + load = { + ["core.defaults"] = {}, + }, + }, + }, + + { + "dstein64/vim-startuptime", + -- lazy-load on a command + cmd = "StartupTime", + -- init is called during startup. Configuration for vim plugins typically should be set in an init function + init = function() + vim.g.startuptime_tries = 10 + end, + }, + + { + "hrsh7th/nvim-cmp", + -- load cmp on InsertEnter + event = "InsertEnter", + -- these dependencies will only be loaded when cmp loads + -- dependencies are always lazy-loaded unless specified otherwise + dependencies = { + "hrsh7th/cmp-nvim-lsp", + "hrsh7th/cmp-buffer", + }, + config = function() + -- ... + end, + }, + + -- if some code requires a module from an unloaded plugin, it will be automatically loaded. + -- So for api plugins like devicons, we can always set lazy=true + { "nvim-tree/nvim-web-devicons", lazy = true }, + + -- you can use the VeryLazy event for things that can + -- load later and are not important for the initial UI + { "stevearc/dressing.nvim", event = "VeryLazy" }, + + { + "Wansmer/treesj", + keys = { + { "J", "TSJToggle", desc = "Join Toggle" }, + }, + opts = { use_default_keymaps = false, max_join_length = 150 }, + }, + + { + "monaqa/dial.nvim", + -- lazy-load on keys + -- mode is `n` by default. For more advanced options, check the section on key mappings + keys = { "", { "", mode = "n" } }, + }, + + -- local plugins need to be explicitly configured with dir + { dir = "~/projects/secret.nvim" }, + + -- you can use a custom url to fetch a plugin + { url = "git@github.com:folke/noice.nvim.git" }, + + -- local plugins can also be configured with the dev option. + -- This will use {config.dev.path}/noice.nvim/ instead of fetching it from GitHub + -- With the dev option, you can easily switch between the local and installed version of a plugin + { "folke/noice.nvim", dev = true }, + } +< + + +LAZY LOADING *lazy.nvim-🔌-plugin-spec-lazy-loading* + +**lazy.nvim** automagically lazy-loads Lua modules. This means that if you have +a plugin `A` that is lazy-loaded and a plugin `B` that requires a module of +plugin `A`, then plugin `A` will be loaded on demand as expected. + + +Additionally, you can also lazy-load on **events**, **commands**, **file +types** and **key mappings**. + +Plugins will be lazy-loaded when one of the following is `true`: + +- The plugin only exists as a dependency in your spec +- It has an `event`, `cmd`, `ft` or `keys` key +- `config.defaults.lazy == true` + + +🌈 COLORSCHEMES ~ + +Colorscheme plugins can be configured with `lazy=true`. The plugin will +automagically load when doing `colorscheme foobar`. + + + +⌨️ LAZY KEY MAPPINGS ~ + +The `keys` property can be a `string` or `string[]` for simple normal-mode +mappings, or it can be a `LazyKeysSpec` table with the following key-value +pairs: + +- **[1]**: (`string`) lhs **(required)** +- **[2]**: (`string|fun()`) rhs **(optional)** +- **mode**: (`string|string[]`) mode **(optional, defaults to "n")** +- **ft**: (`string|string[]`) `filetype` for buffer-local keymaps **(optional)** +- any other option valid for `vim.keymap.set` + +Key mappings will load the plugin the first time they get executed. + +When `[2]` is `nil`, then the real mapping has to be created by the `config()` +function. + +>lua + -- Example for neo-tree.nvim + { + "nvim-neo-tree/neo-tree.nvim", + keys = { + { "ft", "Neotree toggle", desc = "NeoTree" }, + }, + config = function() + require("neo-tree").setup() + end, + } +< + + +VERSIONING *lazy.nvim-🔌-plugin-spec-versioning* + +If you want to install a specific revision of a plugin, you can use `commit`, +`tag`, `branch`, `version`. + +The `version` property supports Semver ranges. + + + +EXAMPLES ~ + +- `*`: latest stable version (this excludes pre-release versions) +- `1.2.x`: any version that starts with `1.2`, such as `1.2.0`, `1.2.3`, etc. +- `^1.2.3`: any version that is compatible with `1.2.3`, such as `1.3.0`, `1.4.5`, etc., but not `2.0.0`. +- `~1.2.3`: any version that is compatible with `1.2.3`, such as `1.2.4`, `1.2.5`, but not `1.3.0`. +- `>1.2.3`: any version that is greater than `1.2.3`, such as `1.3.0`, `1.4.5`, etc. +- `>=1.2.3`: any version that is greater than or equal to `1.2.3`, such as `1.2.3`, `1.3.0`, `1.4.5`, etc. +- `<1.2.3`: any version that is less than `1.2.3`, such as `1.1.0`, `1.0.5`, etc. +- `<=1.2.3`: any version that is less than or equal to `1.2.3`, such as `1.2.3`, `1.1.0`, `1.0.5`, etc + + +============================================================================== +5. 📦 Packages *lazy.nvim-📦-packages* + +**lazy.nvim** supports three ways for plugins to define their dependencies and +configuration. + +- **Lazy**: `lazy.lua` file +- **Rockspec**: luarocks `*-scm-1.rockspec` file +- **Packspec**: `pkg.json` (experimental, since the format is not quite there yet) + +You can enable/disable package sources with `config.pkg.sources` +. The order of sources is important, as the first source that +finds a package will be used. + + + +LAZY *lazy.nvim-📦-packages-lazy* + +Using a `lazy.lua` file is the recommended way to define your plugin +dependencies and configuration. Syntax is the same as any plugin spec. + + +ROCKSPEC *lazy.nvim-📦-packages-rockspec* + +When a plugin contains a `*-1.rockspec` file, **lazy.nvim** will automatically +build the rock and its dependencies. + +A **rockspec** will only be used if one of the following is true: + +- the package does not have a `/lua` directory +- the package has a complex build step +- the package has dependencies (excluding `lua`) + + +PACKSPEC *lazy.nvim-📦-packages-packspec* + +Supports the pkg.json + format, with +a lazy extension in `lazy`. `lazy` can contain any valid lazy spec fields. They +will be added to the plugin’s spec. + + +============================================================================== +6. ⚙️ Configuration *lazy.nvim-⚙️-configuration* + +**lazy.nvim** comes with the following defaults: + +>lua + { + root = vim.fn.stdpath("data") .. "/lazy", -- directory where plugins will be installed + defaults = { + -- Set this to `true` to have all your plugins lazy-loaded by default. + -- Only do this if you know what you are doing, as it can lead to unexpected behavior. + lazy = false, -- should plugins be lazy-loaded? + -- It's recommended to leave version=false for now, since a lot the plugin that support versioning, + -- have outdated releases, which may break your Neovim install. + version = nil, -- always use the latest git commit + -- version = "*", -- try installing the latest stable version for plugins that support semver + -- default `cond` you can use to globally disable a lot of plugins + -- when running inside vscode for example + cond = nil, ---@type boolean|fun(self:LazyPlugin):boolean|nil + }, + -- leave nil when passing the spec as the first argument to setup() + spec = nil, ---@type LazySpec + local_spec = true, -- load project specific .lazy.lua spec files. They will be added at the end of the spec. + lockfile = vim.fn.stdpath("config") .. "/lazy-lock.json", -- lockfile generated after running update. + ---@type number? limit the maximum amount of concurrent tasks + concurrency = jit.os:find("Windows") and (vim.uv.available_parallelism() * 2) or nil, + git = { + -- defaults for the `Lazy log` command + -- log = { "--since=3 days ago" }, -- show commits from the last 3 days + log = { "-8" }, -- show the last 8 commits + timeout = 120, -- kill processes that take more than 2 minutes + url_format = "https://github.com/%s.git", + -- lazy.nvim requires git >=2.19.0. If you really want to use lazy with an older version, + -- then set the below to false. This should work, but is NOT supported and will + -- increase downloads a lot. + filter = true, + }, + pkg = { + enabled = true, + cache = vim.fn.stdpath("state") .. "/lazy/pkg-cache.lua", + versions = true, -- Honor versions in pkg sources + -- the first package source that is found for a plugin will be used. + sources = { + "lazy", + "rockspec", + "packspec", + }, + }, + rocks = { + root = vim.fn.stdpath("data") .. "/lazy-rocks", + server = "https://nvim-neorocks.github.io/rocks-binaries/", + }, + dev = { + ---@type string | fun(plugin: LazyPlugin): string directory where you store your local plugin projects + path = "~/projects", + ---@type string[] plugins that match these patterns will use your local versions instead of being fetched from GitHub + patterns = {}, -- For example {"folke"} + fallback = false, -- Fallback to git when local plugin doesn't exist + }, + install = { + -- install missing plugins on startup. This doesn't increase startup time. + missing = true, + -- try to load one of these colorschemes when starting an installation during startup + colorscheme = { "habamax" }, + }, + ui = { + -- a number <1 is a percentage., >1 is a fixed size + size = { width = 0.8, height = 0.8 }, + wrap = true, -- wrap the lines in the ui + -- The border to use for the UI window. Accepts same border values as |nvim_open_win()|. + border = "none", + -- The backdrop opacity. 0 is fully opaque, 100 is fully transparent. + backdrop = 60, + title = nil, ---@type string only works when border is not "none" + title_pos = "center", ---@type "center" | "left" | "right" + -- Show pills on top of the Lazy window + pills = true, ---@type boolean + icons = { + cmd = " ", + config = "", + event = " ", + favorite = " ", + ft = " ", + init = " ", + import = " ", + keys = " ", + lazy = "󰒲 ", + loaded = "●", + not_loaded = "○", + plugin = " ", + runtime = " ", + require = "󰢱 ", + source = " ", + start = " ", + task = "✔ ", + list = { + "●", + "➜", + "★", + "‒", + }, + }, + -- leave nil, to automatically select a browser depending on your OS. + -- If you want to use a specific browser, you can define it here + browser = nil, ---@type string? + throttle = 20, -- how frequently should the ui process render events + custom_keys = { + -- You can define custom key maps here. If present, the description will + -- be shown in the help menu. + -- To disable one of the defaults, set it to false. + + ["l"] = { + function(plugin) + require("lazy.util").float_term({ "lazygit", "log" }, { + cwd = plugin.dir, + }) + end, + desc = "Open lazygit log", + }, + + ["t"] = { + function(plugin) + require("lazy.util").float_term(nil, { + cwd = plugin.dir, + }) + end, + desc = "Open terminal in plugin dir", + }, + }, + }, + diff = { + -- diff command can be one of: + -- * browser: opens the github compare view. Note that this is always mapped to as well, + -- so you can have a different command for diff + -- * git: will run git diff and open a buffer with filetype git + -- * terminal_git: will open a pseudo terminal with git diff + -- * diffview.nvim: will open Diffview to show the diff + cmd = "git", + }, + checker = { + -- automatically check for plugin updates + enabled = false, + concurrency = nil, ---@type number? set to 1 to check for updates very slowly + notify = true, -- get a notification when new updates are found + frequency = 3600, -- check for updates every hour + check_pinned = false, -- check for pinned packages that can't be updated + }, + change_detection = { + -- automatically check for config file changes and reload the ui + enabled = true, + notify = true, -- get a notification when changes are found + }, + performance = { + cache = { + enabled = true, + }, + reset_packpath = true, -- reset the package path to improve startup time + rtp = { + reset = true, -- reset the runtime path to $VIMRUNTIME and your config directory + ---@type string[] + paths = {}, -- add any custom paths here that you want to includes in the rtp + ---@type string[] list any plugins you want to disable here + disabled_plugins = { + -- "gzip", + -- "matchit", + -- "matchparen", + -- "netrwPlugin", + -- "tarPlugin", + -- "tohtml", + -- "tutor", + -- "zipPlugin", + }, + }, + }, + -- lazy can generate helptags from the headings in markdown readme files, + -- so :help works even for plugins that don't have vim docs. + -- when the readme opens with :help it will be correctly displayed as markdown + readme = { + enabled = true, + root = vim.fn.stdpath("state") .. "/lazy/readme", + files = { "README.md", "lua/**/README.md" }, + -- only generate markdown helptags for plugins that dont have docs + skip_if_doc_exists = true, + }, + state = vim.fn.stdpath("state") .. "/lazy/state.json", -- state info for checker and other things + -- Enable profiling of lazy.nvim. This will add some overhead, + -- so only enable this when you are debugging lazy.nvim + profiling = { + -- Enables extra stats on the debug tab related to the loader cache. + -- Additionally gathers stats about all package.loaders + loader = false, + -- Track each new require in the Lazy profiling tab + require = false, + }, + } +< + +If you don’t want to use a Nerd Font, you can replace the icons with Unicode symbols. ~ + +>lua + { + ui = { + icons = { + cmd = "⌘", + config = "🛠", + event = "📅", + ft = "📂", + init = "⚙", + keys = "🗝", + plugin = "🔌", + runtime = "💻", + require = "🌙", + source = "📄", + start = "🚀", + task = "📌", + lazy = "💤 ", + }, + }, + } +< + + +🌈 HIGHLIGHT GROUPS *lazy.nvim-⚙️-configuration-🌈-highlight-groups* + + ----------------------------------------------------------------------- + Highlight Group Default Group Description + ----------------------- ----------------------- ----------------------- + LazyButton CursorLine + + LazyButtonActive Visual + + LazyComment Comment + + LazyCommit @variable.builtin commit ref + + LazyCommitIssue Number + + LazyCommitScope Italic conventional commit + scope + + LazyCommitType Title conventional commit + type + + LazyDimmed Conceal property + + LazyDir @markup.link directory + + LazyH1 IncSearch home button + + LazyH2 Bold titles + + LazyLocal Constant + + LazyNoCond DiagnosticWarn unloaded icon for a + plugin where cond() was + false + + LazyNormal NormalFloat + + LazyProgressDone Constant progress bar done + + LazyProgressTodo LineNr progress bar todo + + LazyProp Conceal property + + LazyReasonCmd Operator + + LazyReasonEvent Constant + + LazyReasonFt Character + + LazyReasonImport Identifier + + LazyReasonKeys Statement + + LazyReasonPlugin Special + + LazyReasonRequire @variable.parameter + + LazyReasonRuntime @macro + + LazyReasonSource Character + + LazyReasonStart @variable.member + + LazySpecial @punctuation.special + + LazyTaskError ErrorMsg task errors + + LazyTaskOutput MsgArea task output + + LazyUrl @markup.link url + + LazyValue @string value of a property + ----------------------------------------------------------------------- + +============================================================================== +7. 🚀 Usage *lazy.nvim-🚀-usage* + + +▶️ STARTUP SEQUENCE *lazy.nvim-🚀-usage-▶️-startup-sequence* + +**lazy.nvim** does **NOT** use Neovim packages and even disables plugin loading +completely (`vim.go.loadplugins = false`). It takes over the complete startup +sequence for more flexibility and better performance. + +In practice this means that step 10 of |Neovim Initialization| is done by Lazy: + +1. All the plugins’ `init()` functions are executed +2. All plugins with `lazy=false` are loaded. This includes sourcing `/plugin` and `/ftdetect` files. (`/after` will not be sourced yet) +3. All files from `/plugin` and `/ftdetect` directories in your rtp are sourced (excluding `/after`) +4. All `/after/plugin` files are sourced (this includes `/after` from plugins) + +Files from runtime directories are always sourced in alphabetical order. + + +🚀 COMMANDS *lazy.nvim-🚀-usage-🚀-commands* + +Plugins are managed with the `:Lazy` command. Open the help with `` to see +all the key mappings. + +You can press `` on a plugin to show its details. Most properties can be +hovered with `` to open links, help files, readmes, git commits and git +issues. + +Lazy can automatically check for updates in the background. This feature can be +enabled with `config.checker.enabled = true`. + +Any operation can be started from the UI, with a sub command or an API +function: + + ---------------------------------------------------------------------------------- + Command Lua Description + ------------------------- -------------------------------- ----------------------- + :Lazy build {plugins} require("lazy").build(opts) Rebuild a plugin + + :Lazy check [plugins] require("lazy").check(opts?) Check for updates and + show the log (git + fetch) + + :Lazy clean [plugins] require("lazy").clean(opts?) Clean plugins that are + no longer needed + + :Lazy clear require("lazy").clear() Clear finished tasks + + :Lazy debug require("lazy").debug() Show debug information + + :Lazy health require("lazy").health() Run :checkhealth lazy + + :Lazy help require("lazy").help() Toggle this help page + + :Lazy home require("lazy").home() Go back to plugin list + + :Lazy install [plugins] require("lazy").install(opts?) Install missing plugins + + :Lazy load {plugins} require("lazy").load(opts) Load a plugin that has + not been loaded yet. + Similar to :packadd. + Like + :Lazy load foo.nvim. + Use :Lazy! load to skip + cond checks. + + :Lazy log [plugins] require("lazy").log(opts?) Show recent updates + + :Lazy profile require("lazy").profile() Show detailed profiling + + :Lazy reload {plugins} require("lazy").reload(opts) Reload a plugin + (experimental!!) + + :Lazy restore [plugins] require("lazy").restore(opts?) Updates all plugins to + the state in the + lockfile. For a single + plugin: restore it to + the state in the + lockfile or to a given + commit under the cursor + + :Lazy sync [plugins] require("lazy").sync(opts?) Run install, clean and + update + + :Lazy update [plugins] require("lazy").update(opts?) Update plugins. This + will also update the + lockfile + ---------------------------------------------------------------------------------- +Any command can have a **bang** to make the command wait till it finished. For +example, if you want to sync lazy from the cmdline, you can use: + +>shell + nvim --headless "+Lazy! sync" +qa +< + +`opts` is a table with the following key-values: + +- **wait**: when true, then the call will wait till the operation completed +- **show**: when false, the UI will not be shown +- **plugins**: a list of plugin names to run the operation on +- **concurrency**: limit the `number` of concurrently running tasks + +Stats API (`require("lazy").stats()`): + +>lua + { + -- startuptime in milliseconds till UIEnter + startuptime = 0, + -- when true, startuptime is the accurate cputime for the Neovim process. (Linux & macOS) + -- this is more accurate than `nvim --startuptime`, and as such will be slightly higher + -- when false, startuptime is calculated based on a delta with a timestamp when lazy started. + real_cputime = false, + count = 0, -- total number of plugins + loaded = 0, -- number of loaded plugins + ---@type table + times = {}, + } +< + +**lazy.nvim** provides a statusline component that you can use to show the +number of pending updates. Make sure to enable `config.checker.enabled = true` +to make this work. + +Example of configuring lualine.nvim ~ + +>lua + require("lualine").setup({ + sections = { + lualine_x = { + { + require("lazy.status").updates, + cond = require("lazy.status").has_updates, + color = { fg = "#ff9e64" }, + }, + }, + }, + }) +< + + +📆 USER EVENTS *lazy.nvim-🚀-usage-📆-user-events* + +The following user events will be triggered: + +- **LazyDone**: when lazy has finished starting up and loaded your config +- **LazySync**: after running sync +- **LazyInstall**: after an install +- **LazyUpdate**: after an update +- **LazyClean**: after a clean +- **LazyCheck**: after checking for updates +- **LazyLog**: after running log +- **LazyLoad**: after loading a plugin. The `data` attribute will contain the plugin name. +- **LazySyncPre**: before running sync +- **LazyInstallPre**: before an install +- **LazyUpdatePre**: before an update +- **LazyCleanPre**: before a clean +- **LazyCheckPre**: before checking for updates +- **LazyLogPre**: before running log +- **LazyReload**: triggered by change detection after reloading plugin specs +- **VeryLazy**: triggered after `LazyDone` and processing `VimEnter` auto commands +- **LazyVimStarted**: triggered after `UIEnter` when `require("lazy").stats().startuptime` has been calculated. + Useful to update the startuptime on your dashboard. + + +❌ UNINSTALLING *lazy.nvim-🚀-usage-❌-uninstalling* + +To uninstall **lazy.nvim**, you need to remove the following files and +directories: + +- **data**: `~/.local/share/nvim/lazy` +- **state**: `~/.local/state/nvim/lazy` +- **lockfile**: `~/.config/nvim/lazy-lock.json` + + + Paths can differ if you changed `XDG` environment variables. + +🔒 LOCKFILE *lazy.nvim-🚀-usage-🔒-lockfile* + +After every **update**, the local lockfile (`lazy-lock.json`) is updated with +the installed revisions. It is recommended to have this file under version +control. + +If you use your Neovim config on multiple machines, using the lockfile, you can +ensure that the same version of every plugin is installed. + +If you are on another machine, you can do `:Lazy restore`, to update all your +plugins to the version from the lockfile. + + +📦 MIGRATION GUIDE *lazy.nvim-🚀-usage-📦-migration-guide* + + +PACKER.NVIM ~ + +- `setup` ➡️ `init` +- `requires` ➡️ `dependencies` +- `as` ➡️ `name` +- `opt` ➡️ `lazy` +- `run` ➡️ `build` +- `lock` ➡️ `pin` +- `disable=true` ➡️ `enabled = false` +- `tag='*'` ➡️ `version="*"` +- `after` is **not needed** for most use-cases. Use `dependencies` otherwise. +- `wants` is **not needed** for most use-cases. Use `dependencies` otherwise. +- `config` don’t support string type, use `fun(LazyPlugin)` instead. +- `module` is auto-loaded. No need to specify +- `keys` spec is |lazy.nvim-different| +- `rtp` can be accomplished with: + +>lua + config = function(plugin) + vim.opt.rtp:append(plugin.dir .. "/custom-rtp") + end +< + +With packer `wants`, `requires` and `after` can be used to manage dependencies. +With lazy, this isn’t needed for most of the Lua dependencies. They can be +installed just like normal plugins (even with `lazy=true`) and will be loaded +when other plugins need them. The `dependencies` key can be used to group those +required plugins with the one that requires them. The plugins which are added +as `dependencies` will always be lazy-loaded and loaded when the plugin is +loaded. + + +PAQ-NVIM ~ + +- `as` ➡️ `name` +- `opt` ➡️ `lazy` +- `run` ➡️ `build` + + +⚡ PROFILING & DEBUG *lazy.nvim-🚀-usage-⚡-profiling-&-debug* + +Great care has been taken to make the startup code (`lazy.core`) as efficient +as possible. During startup, all Lua files used before `VimEnter` or +`BufReadPre` are byte-compiled and cached, similar to what impatient.nvim + does. + +My config for example loads in about `11ms` with `93` plugins. I do a lot of +lazy-loading though :) + +**lazy.nvim** comes with an advanced profiler `:Lazy profile` to help you +improve performance. The profiling view shows you why and how long it took to +load your plugins. + + +🐛 DEBUG ~ + +See an overview of active lazy-loading handlers and what’s in the module +cache. + + +📂 STRUCTURING YOUR PLUGINS*lazy.nvim-🚀-usage-📂-structuring-your-plugins* + +Some users may want to split their plugin specs in multiple files. Instead of +passing a spec table to `setup()`, you can use a Lua module. The specs from the +**module** and any top-level **sub-modules** will be merged together in the +final spec, so it is not needed to add `require` calls in your main plugin file +to the other files. + +The benefits of using this approach: + +- Simple to **add** new plugin specs. Just create a new file in your plugins module. +- Allows for **caching** of all your plugin specs. This becomes important if you have a lot of smaller plugin specs. +- Spec changes will automatically be **reloaded** when they’re updated, so the `:Lazy` UI is always up to date. + +Example: + +- `~/.config/nvim/init.lua` + +>lua + require("lazy").setup("plugins") +< + +- `~/.config/nvim/lua/plugins.lua` or `~/.config/nvim/lua/plugins/init.lua` **(this file is optional)** + +>lua + return { + "folke/neodev.nvim", + "folke/which-key.nvim", + { "folke/neoconf.nvim", cmd = "Neoconf" }, + } +< + +- Any lua file in `~/.config/nvim/lua/plugins/*.lua` will be automatically merged in the main plugin spec + +For a real-life example, you can check LazyVim + and more specifically: + +- lazyvim.plugins contains all the plugin specs that will be loaded + + +↩️ IMPORTING SPECS, CONFIG & OPTS + +As part of a spec, you can add `import` statements to import additional plugin +modules. Both of the `setup()` calls are equivalent: + +>lua + require("lazy").setup("plugins") + + -- Same as: + require("lazy").setup({{import = "plugins"}}) +< + +To import multiple modules from a plugin, add additional specs for each import. +For example, to import LazyVim core plugins and an optional plugin: + +>lua + require("lazy").setup({ + spec = { + { "LazyVim/LazyVim", import = "lazyvim.plugins" }, + { import = "lazyvim.plugins.extras.coding.copilot" }, + } + }) +< + +When you import specs, you can override them by simply adding a spec for the +same plugin to your local specs, adding any keys you want to override / merge. + +`opts`, `dependencies`, `cmd`, `event`, `ft` and `keys` are always merged with +the parent spec. Any other property will override the property from the parent +spec. + + +============================================================================== +8. 🔥 Developers *lazy.nvim-🔥-developers* + +To make it easier for users to install your plugin, you can include a package +spec in your repo. + + +BEST PRACTICES *lazy.nvim-🔥-developers-best-practices* + +- If your plugin needs `setup()`, then create a simple `lazy.lua` file like this: + >lua + return { "me/my-plugin", opts = {} } + < +- Plugins that are pure lua libraries should be lazy-loaded with `lazy = true`. + >lua + { "nvim-lua/plenary.nvim", lazy = true } + < +- Always use `opts` instead of `config` when possible. `config` is almost never + needed. +- Only use `dependencies` if a plugin needs the dep to be installed **AND** + loaded. Lua plugins/libraries are automatically loaded when they are + `require()`d, so they don’t need to be in `dependencies`. +- Inside a `build` function or `*.lua` build file, use + `coroutine.yield(msg:string|LazyMsg)` to show progress. +- Don’t change the `cwd` in your build function, since builds run in parallel + and changing the `cwd` will affect other builds. + + +BUILDING *lazy.nvim-🔥-developers-building* + +The spec **build** property can be one of the following: + +- `fun(plugin: LazyPlugin)`: a function that builds the plugin. +- `*.lua`: a Lua file that builds the plugin (like `build.lua`) +- `":Command"`: a Neovim command +- `"rockspec"`: this will run `luarocks make` in the plugin’s directory + This is automatically set by the `rockspec` package source. +- any other **string** will be run as a shell command +- a `list` of any of the above to run multiple build steps +- if no `build` is specified, but a `build.lua` file exists, that will be used instead. + +Build functions and `*.lua` files run asynchronously in a coroutine. Use +`coroutine.yield(msg:string|LazyMsg)` to show progress. + +Yielding will also schedule the next `coroutine.resume()` to run in the next +tick, so you can do long-running tasks without blocking Neovim. + +>lua + ---@class LazyMsg + ---@field msg string + ---@field level? number vim.log.levels.XXX +< + +Use `vim.log.levels.TRACE` to only show the message as a **status** message for +the task. + + + +MINIT (MINIMAL INIT) *lazy.nvim-🔥-developers-minit-(minimal-init)* + +**lazy.nvim** comes with some built-in functionality to help you create a +minimal init for your plugin. + +I mainly use this for testing and for users to create a `repro.lua`. + +When running in **headless** mode, **lazy.nvim** will log any messages to the +terminal. See `opts.headless` for more info. + +**minit** will install/load all your specs and will always run an update as +well. + + +BOOTSTRAP ~ + +>lua + -- setting this env will override all XDG paths + vim.env.LAZY_STDPATH = ".tests" + -- this will install lazy in your stdpath + load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() +< + + +TESTING WITH BUSTED ~ + +This will add `"lunarmodules/busted"`, configure `hererocks` and run `busted`. + +Below is an example of how I use **minit** to run tests with busted + in **LazyVim**. + +>lua + #!/usr/bin/env -S nvim -l + + vim.env.LAZY_STDPATH = ".tests" + load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() + + -- Setup lazy.nvim + require("lazy.minit").busted({ + spec = { + "LazyVim/starter", + "williamboman/mason-lspconfig.nvim", + "williamboman/mason.nvim", + "nvim-treesitter/nvim-treesitter", + }, + }) +< + +To use this, you can run: + +>sh + nvim -l ./tests/busted.lua tests +< + +If you want to inspect the test environment, run: + +>sh + nvim -u ./tests/busted.lua +< + + +REPRO.LUA ~ + +>lua + vim.env.LAZY_STDPATH = ".repro" + load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() + + require("lazy.minit").repro({ + spec = { + "stevearc/conform.nvim", + "nvim-neotest/nvim-nio", + }, + }) + + -- do anything else you need to do to reproduce the issue +< + +Then run it with: + +>sh + nvim -u repro.lua +< + +============================================================================== +9. Links *lazy.nvim-links* 1. *image*: https://user-images.githubusercontent.com/292349/208301737-68fb279c-ba70-43ef-a369-8c3e8367d6b1.png +2. *image*: https://user-images.githubusercontent.com/292349/208301766-5c400561-83c3-4811-9667-1ec4bb3c43b8.png +3. *image*: https://user-images.githubusercontent.com/292349/208301790-7eedbfa5-d202-4e70-852e-de68aa47233b.png Generated by panvimdoc From e6035dc59bcd71c395b1a39f15e418acc94e789a Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 6 Jul 2024 23:18:28 +0200 Subject: [PATCH 233/342] ci: update --- .github/workflows/ci.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b88337a..60f92cf 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,4 +12,3 @@ jobs: with: plugin: lazy.nvim repo: folke/lazy.nvim - tests: true From 23ea80b6a3230070989a730f6ba921a75d7d7057 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 6 Jul 2024 23:19:48 +0200 Subject: [PATCH 234/342] ci: update --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 2b0bb7a..61ab828 100644 --- a/.gitignore +++ b/.gitignore @@ -5,4 +5,5 @@ build debug doc/tags foo.* +node_modules tt.* From 55b46b3993df75b015b8e294a8e5a244e8df415b Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 6 Jul 2024 23:45:30 +0200 Subject: [PATCH 235/342] ci: update --- .gitignore | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index 61ab828..771c835 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,9 @@ *.log -.repro -.tests -build -debug -doc/tags +/.repro +/.tests +/build +/debug +/doc/tags foo.* node_modules tt.* From 933f0b596c7372daf534373ae9a11e98744b8636 Mon Sep 17 00:00:00 2001 From: folke Date: Sat, 6 Jul 2024 21:46:26 +0000 Subject: [PATCH 236/342] chore(build): auto-generate docs --- doc/lazy.nvim.txt | 1398 ++------------------------------------------- 1 file changed, 46 insertions(+), 1352 deletions(-) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index 73bd0ae..cb18dda 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -1,130 +1,61 @@ -*lazy.nvim.txt* A modern plugin manager for Neovim +*lazy.nvim.txt* For Neovim Last change: 2024 July 06 ============================================================================== 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. 📰 What’s new? *lazy.nvim-📰-what’s-new?* + - Features |lazy.nvim-features| + - Requirements |lazy.nvim-requirements| + - Getting Started |lazy.nvim-getting-started| +1. Links |lazy.nvim-links| +Install +· +Configure +· +Docs + + + + + + + + + + + + + + -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 . The GitHub `README.md` - has been updated to point to the new website. The `vimdoc` contains all the - information that is available on the website. -- **Spec Resolution & Merging**: the code that resolves a final spec from a - plugin’s fragments has been rewritten. This should be a tiny bit faster, but - more importantly, fixes some issues and is easier to maintain. -- Packages can now specify their dependencies - and configuration using one of: - - **Lazy**: `lazy.lua` file - - **Rockspec**: luarocks `*-scm-1.rockspec` file - - **Packspec**: `pkg.json` (experimental, since the format is not quite there yet) - Related _lazy.nvim_ options: - >lua - { - pkg = { - enabled = true, - cache = vim.fn.stdpath("state") .. "/lazy/pkg-cache.lua", - -- the first package source that is found for a plugin will be used. - sources = { - "lazy", - "rockspec", -- will only be used when rocks.enabled is true - "packspec", - }, - }, - rocks = { - enabled = true, - root = vim.fn.stdpath("data") .. "/lazy-rocks", - server = "https://nvim-neorocks.github.io/rocks-binaries/", - }, - } - < -- Installing neorg is now as simple as: - >lua - { "nvim-neorg/neorg", opts = {} } - < -- Packages are not limited to just Neovim plugins. You can install any - **luarocks** package, like: - >lua - { "https://github.com/lubyk/yaml" } - < - Luarocks packages without a `/lua` directory are never lazy-loaded, since - it’s just a library. -- `build` functions or `*.lua` build files (like `build.lua`) now run - asynchronously. You can use `coroutine.yield(status_msg)` to show progress. - Yielding will also schedule the next `resume` to run in the next tick, so you - can do long-running tasks without blocking Neovim. -============================================================================== -2. 🚀 Getting Started *lazy.nvim-🚀-getting-started* **lazy.nvim** is a modern plugin manager for Neovim. -✨ FEATURES *lazy.nvim-🚀-getting-started-✨-features* +FEATURES *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 support -- 📈 Statusline component to see the number of pending updates -- 🎨 Automatically lazy-loads colorschemes +- 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 support +- Statusline component to see the number of pending updates +- Automatically lazy-loads colorschemes -⚡️ REQUIREMENTS *lazy.nvim-🚀-getting-started-⚡️-requirements* +REQUIREMENTS *lazy.nvim-requirements* - Neovim >= **0.8.0** (needs to be built with **LuaJIT**) - Git >= **2.19.0** (for partial clones support) @@ -133,1251 +64,14 @@ Table of Contents *lazy.nvim-table-of-contents* You can remove `rockspec` from `opts.pkg.sources` to disable this feature. -============================================================================== -3. 🛠️ Installation *lazy.nvim-🛠️-installation* - -There are multiple ways to install **lazy.nvim**. The **Structured Setup** is -the recommended way, but you can also use the **Single File Setup** if you -prefer to keep everything in your `init.lua`. - -Please refer to the Configuration section for an overview of -all available options. - - - - -STRUCTURED SETUP *lazy.nvim-🛠️-installation-structured-setup* - ->lua - require("config.lazy") -< - ->lua - -- Bootstrap lazy.nvim - local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" - if not (vim.uv or vim.loop).fs_stat(lazypath) then - local lazyrepo = "https://github.com/folke/lazy.nvim.git" - local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) - if vim.v.shell_error ~= 0 then - vim.api.nvim_echo({ - { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, - { out, "WarningMsg" }, - { "\nPress any key to exit..." }, - }, true, {}) - vim.fn.getchar() - os.exit(1) - end - end - vim.opt.rtp:prepend(lazypath) - - -- Make sure to setup `mapleader` and `maplocalleader` before - -- loading lazy.nvim so that mappings are correct. - -- This is also a good place to setup other settings (vim.opt) - vim.g.mapleader = " " - vim.g.maplocalleader = "\\" - - -- Setup lazy.nvim - require("lazy").setup({ - -- highlight-start - spec = { - -- import your plugins - { import = "plugins" }, - }, - -- highlight-end - -- Configure any other settings here. See the documentation for more details. - -- colorscheme that will be used when installing plugins. - install = { colorscheme = { "habamax" } }, - -- automatically check for plugin updates - checker = { enabled = true }, - }) -< - -You can then create your plugin specs in `~/.config/nvim/lua/plugins/`. Each -file should return a table with the plugins you want to install. - -For more info see Structuring Your Plugins - - -SINGLE FILE SETUP *lazy.nvim-🛠️-installation-single-file-setup* - ->lua - -- Bootstrap lazy.nvim - local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" - if not (vim.uv or vim.loop).fs_stat(lazypath) then - local lazyrepo = "https://github.com/folke/lazy.nvim.git" - local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) - if vim.v.shell_error ~= 0 then - vim.api.nvim_echo({ - { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, - { out, "WarningMsg" }, - { "\nPress any key to exit..." }, - }, true, {}) - vim.fn.getchar() - os.exit(1) - end - end - vim.opt.rtp:prepend(lazypath) - - -- Make sure to setup `mapleader` and `maplocalleader` before - -- loading lazy.nvim so that mappings are correct. - -- This is also a good place to setup other settings (vim.opt) - vim.g.mapleader = " " - vim.g.maplocalleader = "\\" - - -- Setup lazy.nvim - require("lazy").setup({ - -- highlight-start - spec = { - -- add your plugins here - }, - -- highlight-end - -- Configure any other settings here. See the documentation for more details. - -- colorscheme that will be used when installing plugins. - install = { colorscheme = { "habamax" } }, - -- automatically check for plugin updates - checker = { enabled = true }, - }) -< +GETTING STARTED *lazy.nvim-getting-started* +Check the documentation website for more information. ============================================================================== -4. 🔌 Plugin Spec *lazy.nvim-🔌-plugin-spec* - - -SPEC SOURCE *lazy.nvim-🔌-plugin-spec-spec-source* - - ----------------------------------------------------------------------------------- - Property Type Description - ---------- ---------- ------------------------------------------------------------- - [1] string? Short plugin url. Will be expanded using - config.git.url_format. Can also be a url or dir. - - dir string? A directory pointing to a local plugin - - url string? A custom git url where the plugin is hosted - - name string? A custom name for the plugin used for the local plugin - directory and as the display name - - dev boolean? When true, a local plugin directory will be used instead. See - config.dev - ----------------------------------------------------------------------------------- -A valid spec should define one of `[1]`, `dir` or `url`. - - -SPEC LOADING *lazy.nvim-🔌-plugin-spec-spec-loading* - - -------------------------------------------------------------------------------------------------- - Property Type Description - -------------- ------------------------- --------------------------------------------------------- - dependencies LazySpec[] A list of plugin names or plugin specs that should be - loaded when the plugin loads. Dependencies are always - lazy-loaded unless specified otherwise. When specifying a - name, make sure the plugin spec has been defined - somewhere else. - - enabled boolean? or fun():boolean When false, or if the function returns false, then this - plugin will not be included in the spec - - cond boolean? or Behaves the same as enabled, but won’t uninstall the - fun(LazyPlugin):boolean plugin when the condition is false. Useful to disable - some plugins in vscode, or firenvim for example. - - priority number? Only useful for start plugins (lazy=false) to force - loading certain plugins first. Default priority is 50. - It’s recommended to set this to a high number for - colorschemes. - -------------------------------------------------------------------------------------------------- - -SPEC SETUP *lazy.nvim-🔌-plugin-spec-spec-setup* - - -------------------------------------------------------------------------------------------------- - Property Type Description - ---------- ----------------------------- --------------------------------------------------------- - init fun(LazyPlugin) init functions are always executed during. Mostly useful - for setting vim.g.* configuration used by Vim plugins - startup - - opts table or opts should be a table (will be merged with parent - fun(LazyPlugin, opts:table) specs), return a table (replaces parent specs) or should - change a table. The table will be passed to the - Plugin.config() function. Setting this value will imply - Plugin.config() - - config fun(LazyPlugin, opts:table) config is executed when the plugin loads. The default - or true implementation will automatically run - require(MAIN).setup(opts) if opts or config = true is - set. Lazy uses several heuristics to determine the - plugin’s MAIN module automatically based on the plugin’s - name. (opts is the recommended way to configure plugins). - - main string? You can specify the main module to use for config() and - opts(), in case it can not be determined automatically. - See config() - - build fun(LazyPlugin) or string or build is executed when a plugin is installed or updated. - false or a list of build See Building for more information. - commands - -------------------------------------------------------------------------------------------------- -Always use `opts` instead of `config` when possible. `config` is almost never -needed. - - - - -SPEC LAZY LOADING *lazy.nvim-🔌-plugin-spec-spec-lazy-loading* - - -------------------------------------------------------------------------------------------------------------------- - Property Type Description - ---------- ---------------------------------------------------------------- ---------------------------------------- - lazy boolean? When true, the plugin will only be - loaded when needed. Lazy-loaded plugins - are automatically loaded when their Lua - modules are required, or when one of the - lazy-loading handlers triggers - - event string? or string[] or Lazy-load on event. Events can be - fun(self:LazyPlugin, event:string[]):string[] or specified as BufEnter or with a pattern - {event:string[]\|string, pattern?:string[]\|string} like BufEnter *.lua - - cmd string? or string[] or Lazy-load on command - fun(self:LazyPlugin, cmd:string[]):string[] - - ft string? or string[] or Lazy-load on filetype - fun(self:LazyPlugin, ft:string[]):string[] - - keys string? or string[] or LazyKeysSpec[] or Lazy-load on key mapping - fun(self:LazyPlugin, keys:string[]):(string \| LazyKeysSpec)[] - -------------------------------------------------------------------------------------------------------------------- -Refer to the Lazy Loading <./lazy_loading.md> section for more information. - - -SPEC VERSIONING *lazy.nvim-🔌-plugin-spec-spec-versioning* - - ------------------------------------------------------------------------------ - Property Type Description - ------------ -------------------- -------------------------------------------- - branch string? Branch of the repository - - tag string? Tag of the repository - - commit string? Commit of the repository - - version string? or false to Version to use from the repository. Full - override the default Semver ranges are supported - - pin boolean? When true, this plugin will not be included - in updates - - submodules boolean? When false, git submodules will not be - fetched. Defaults to true - ------------------------------------------------------------------------------ -Refer to the Versioning <./versioning.md> section for more information. - - -SPEC ADVANCED *lazy.nvim-🔌-plugin-spec-spec-advanced* - - ---------------------------------------------------------------------------------------- - Property Type Description - ---------- ---------- ------------------------------------------------------------------ - optional boolean? When a spec is tagged optional, it will only be included in the - final spec, when the same plugin has been specified at least once - somewhere else without optional. This is mainly useful for Neovim - distros, to allow setting options on plugins that may/may not be - part of the user’s plugins. - - specs LazySpec A list of plugin specs defined in the scope of the plugin. This is - mainly useful for Neovim distros, to allow setting options on - plugins that may/may not be part of the user’s plugins. When the - plugin is disabled, none of the scoped specs will be included in - the final spec. Similar to dependencies without the automatic - loading of the specs. - - module false? Do not automatically load this Lua module when it’s required - somewhere - - import string? Import the given spec module. - ---------------------------------------------------------------------------------------- - -EXAMPLES *lazy.nvim-🔌-plugin-spec-examples* - ->lua - return { - -- the colorscheme should be available when starting Neovim - { - "folke/tokyonight.nvim", - lazy = false, -- make sure we load this during startup if it is your main colorscheme - priority = 1000, -- make sure to load this before all the other start plugins - config = function() - -- load the colorscheme here - vim.cmd([[colorscheme tokyonight]]) - end, - }, - - -- I have a separate config.mappings file where I require which-key. - -- With lazy the plugin will be automatically loaded when it is required somewhere - { "folke/which-key.nvim", lazy = true }, - - { - "nvim-neorg/neorg", - -- lazy-load on filetype - ft = "norg", - -- options for neorg. This will automatically call `require("neorg").setup(opts)` - opts = { - load = { - ["core.defaults"] = {}, - }, - }, - }, - - { - "dstein64/vim-startuptime", - -- lazy-load on a command - cmd = "StartupTime", - -- init is called during startup. Configuration for vim plugins typically should be set in an init function - init = function() - vim.g.startuptime_tries = 10 - end, - }, - - { - "hrsh7th/nvim-cmp", - -- load cmp on InsertEnter - event = "InsertEnter", - -- these dependencies will only be loaded when cmp loads - -- dependencies are always lazy-loaded unless specified otherwise - dependencies = { - "hrsh7th/cmp-nvim-lsp", - "hrsh7th/cmp-buffer", - }, - config = function() - -- ... - end, - }, - - -- if some code requires a module from an unloaded plugin, it will be automatically loaded. - -- So for api plugins like devicons, we can always set lazy=true - { "nvim-tree/nvim-web-devicons", lazy = true }, - - -- you can use the VeryLazy event for things that can - -- load later and are not important for the initial UI - { "stevearc/dressing.nvim", event = "VeryLazy" }, - - { - "Wansmer/treesj", - keys = { - { "J", "TSJToggle", desc = "Join Toggle" }, - }, - opts = { use_default_keymaps = false, max_join_length = 150 }, - }, - - { - "monaqa/dial.nvim", - -- lazy-load on keys - -- mode is `n` by default. For more advanced options, check the section on key mappings - keys = { "", { "", mode = "n" } }, - }, - - -- local plugins need to be explicitly configured with dir - { dir = "~/projects/secret.nvim" }, - - -- you can use a custom url to fetch a plugin - { url = "git@github.com:folke/noice.nvim.git" }, - - -- local plugins can also be configured with the dev option. - -- This will use {config.dev.path}/noice.nvim/ instead of fetching it from GitHub - -- With the dev option, you can easily switch between the local and installed version of a plugin - { "folke/noice.nvim", dev = true }, - } -< - - -LAZY LOADING *lazy.nvim-🔌-plugin-spec-lazy-loading* - -**lazy.nvim** automagically lazy-loads Lua modules. This means that if you have -a plugin `A` that is lazy-loaded and a plugin `B` that requires a module of -plugin `A`, then plugin `A` will be loaded on demand as expected. - - -Additionally, you can also lazy-load on **events**, **commands**, **file -types** and **key mappings**. - -Plugins will be lazy-loaded when one of the following is `true`: - -- The plugin only exists as a dependency in your spec -- It has an `event`, `cmd`, `ft` or `keys` key -- `config.defaults.lazy == true` - - -🌈 COLORSCHEMES ~ - -Colorscheme plugins can be configured with `lazy=true`. The plugin will -automagically load when doing `colorscheme foobar`. - - - -⌨️ LAZY KEY MAPPINGS ~ - -The `keys` property can be a `string` or `string[]` for simple normal-mode -mappings, or it can be a `LazyKeysSpec` table with the following key-value -pairs: - -- **[1]**: (`string`) lhs **(required)** -- **[2]**: (`string|fun()`) rhs **(optional)** -- **mode**: (`string|string[]`) mode **(optional, defaults to "n")** -- **ft**: (`string|string[]`) `filetype` for buffer-local keymaps **(optional)** -- any other option valid for `vim.keymap.set` - -Key mappings will load the plugin the first time they get executed. - -When `[2]` is `nil`, then the real mapping has to be created by the `config()` -function. - ->lua - -- Example for neo-tree.nvim - { - "nvim-neo-tree/neo-tree.nvim", - keys = { - { "ft", "Neotree toggle", desc = "NeoTree" }, - }, - config = function() - require("neo-tree").setup() - end, - } -< - - -VERSIONING *lazy.nvim-🔌-plugin-spec-versioning* - -If you want to install a specific revision of a plugin, you can use `commit`, -`tag`, `branch`, `version`. - -The `version` property supports Semver ranges. - - - -EXAMPLES ~ - -- `*`: latest stable version (this excludes pre-release versions) -- `1.2.x`: any version that starts with `1.2`, such as `1.2.0`, `1.2.3`, etc. -- `^1.2.3`: any version that is compatible with `1.2.3`, such as `1.3.0`, `1.4.5`, etc., but not `2.0.0`. -- `~1.2.3`: any version that is compatible with `1.2.3`, such as `1.2.4`, `1.2.5`, but not `1.3.0`. -- `>1.2.3`: any version that is greater than `1.2.3`, such as `1.3.0`, `1.4.5`, etc. -- `>=1.2.3`: any version that is greater than or equal to `1.2.3`, such as `1.2.3`, `1.3.0`, `1.4.5`, etc. -- `<1.2.3`: any version that is less than `1.2.3`, such as `1.1.0`, `1.0.5`, etc. -- `<=1.2.3`: any version that is less than or equal to `1.2.3`, such as `1.2.3`, `1.1.0`, `1.0.5`, etc - - -============================================================================== -5. 📦 Packages *lazy.nvim-📦-packages* - -**lazy.nvim** supports three ways for plugins to define their dependencies and -configuration. - -- **Lazy**: `lazy.lua` file -- **Rockspec**: luarocks `*-scm-1.rockspec` file -- **Packspec**: `pkg.json` (experimental, since the format is not quite there yet) - -You can enable/disable package sources with `config.pkg.sources` -. The order of sources is important, as the first source that -finds a package will be used. - - - -LAZY *lazy.nvim-📦-packages-lazy* - -Using a `lazy.lua` file is the recommended way to define your plugin -dependencies and configuration. Syntax is the same as any plugin spec. - - -ROCKSPEC *lazy.nvim-📦-packages-rockspec* - -When a plugin contains a `*-1.rockspec` file, **lazy.nvim** will automatically -build the rock and its dependencies. - -A **rockspec** will only be used if one of the following is true: - -- the package does not have a `/lua` directory -- the package has a complex build step -- the package has dependencies (excluding `lua`) - - -PACKSPEC *lazy.nvim-📦-packages-packspec* - -Supports the pkg.json - format, with -a lazy extension in `lazy`. `lazy` can contain any valid lazy spec fields. They -will be added to the plugin’s spec. - - -============================================================================== -6. ⚙️ Configuration *lazy.nvim-⚙️-configuration* - -**lazy.nvim** comes with the following defaults: - ->lua - { - root = vim.fn.stdpath("data") .. "/lazy", -- directory where plugins will be installed - defaults = { - -- Set this to `true` to have all your plugins lazy-loaded by default. - -- Only do this if you know what you are doing, as it can lead to unexpected behavior. - lazy = false, -- should plugins be lazy-loaded? - -- It's recommended to leave version=false for now, since a lot the plugin that support versioning, - -- have outdated releases, which may break your Neovim install. - version = nil, -- always use the latest git commit - -- version = "*", -- try installing the latest stable version for plugins that support semver - -- default `cond` you can use to globally disable a lot of plugins - -- when running inside vscode for example - cond = nil, ---@type boolean|fun(self:LazyPlugin):boolean|nil - }, - -- leave nil when passing the spec as the first argument to setup() - spec = nil, ---@type LazySpec - local_spec = true, -- load project specific .lazy.lua spec files. They will be added at the end of the spec. - lockfile = vim.fn.stdpath("config") .. "/lazy-lock.json", -- lockfile generated after running update. - ---@type number? limit the maximum amount of concurrent tasks - concurrency = jit.os:find("Windows") and (vim.uv.available_parallelism() * 2) or nil, - git = { - -- defaults for the `Lazy log` command - -- log = { "--since=3 days ago" }, -- show commits from the last 3 days - log = { "-8" }, -- show the last 8 commits - timeout = 120, -- kill processes that take more than 2 minutes - url_format = "https://github.com/%s.git", - -- lazy.nvim requires git >=2.19.0. If you really want to use lazy with an older version, - -- then set the below to false. This should work, but is NOT supported and will - -- increase downloads a lot. - filter = true, - }, - pkg = { - enabled = true, - cache = vim.fn.stdpath("state") .. "/lazy/pkg-cache.lua", - versions = true, -- Honor versions in pkg sources - -- the first package source that is found for a plugin will be used. - sources = { - "lazy", - "rockspec", - "packspec", - }, - }, - rocks = { - root = vim.fn.stdpath("data") .. "/lazy-rocks", - server = "https://nvim-neorocks.github.io/rocks-binaries/", - }, - dev = { - ---@type string | fun(plugin: LazyPlugin): string directory where you store your local plugin projects - path = "~/projects", - ---@type string[] plugins that match these patterns will use your local versions instead of being fetched from GitHub - patterns = {}, -- For example {"folke"} - fallback = false, -- Fallback to git when local plugin doesn't exist - }, - install = { - -- install missing plugins on startup. This doesn't increase startup time. - missing = true, - -- try to load one of these colorschemes when starting an installation during startup - colorscheme = { "habamax" }, - }, - ui = { - -- a number <1 is a percentage., >1 is a fixed size - size = { width = 0.8, height = 0.8 }, - wrap = true, -- wrap the lines in the ui - -- The border to use for the UI window. Accepts same border values as |nvim_open_win()|. - border = "none", - -- The backdrop opacity. 0 is fully opaque, 100 is fully transparent. - backdrop = 60, - title = nil, ---@type string only works when border is not "none" - title_pos = "center", ---@type "center" | "left" | "right" - -- Show pills on top of the Lazy window - pills = true, ---@type boolean - icons = { - cmd = " ", - config = "", - event = " ", - favorite = " ", - ft = " ", - init = " ", - import = " ", - keys = " ", - lazy = "󰒲 ", - loaded = "●", - not_loaded = "○", - plugin = " ", - runtime = " ", - require = "󰢱 ", - source = " ", - start = " ", - task = "✔ ", - list = { - "●", - "➜", - "★", - "‒", - }, - }, - -- leave nil, to automatically select a browser depending on your OS. - -- If you want to use a specific browser, you can define it here - browser = nil, ---@type string? - throttle = 20, -- how frequently should the ui process render events - custom_keys = { - -- You can define custom key maps here. If present, the description will - -- be shown in the help menu. - -- To disable one of the defaults, set it to false. - - ["l"] = { - function(plugin) - require("lazy.util").float_term({ "lazygit", "log" }, { - cwd = plugin.dir, - }) - end, - desc = "Open lazygit log", - }, - - ["t"] = { - function(plugin) - require("lazy.util").float_term(nil, { - cwd = plugin.dir, - }) - end, - desc = "Open terminal in plugin dir", - }, - }, - }, - diff = { - -- diff command can be one of: - -- * browser: opens the github compare view. Note that this is always mapped to as well, - -- so you can have a different command for diff - -- * git: will run git diff and open a buffer with filetype git - -- * terminal_git: will open a pseudo terminal with git diff - -- * diffview.nvim: will open Diffview to show the diff - cmd = "git", - }, - checker = { - -- automatically check for plugin updates - enabled = false, - concurrency = nil, ---@type number? set to 1 to check for updates very slowly - notify = true, -- get a notification when new updates are found - frequency = 3600, -- check for updates every hour - check_pinned = false, -- check for pinned packages that can't be updated - }, - change_detection = { - -- automatically check for config file changes and reload the ui - enabled = true, - notify = true, -- get a notification when changes are found - }, - performance = { - cache = { - enabled = true, - }, - reset_packpath = true, -- reset the package path to improve startup time - rtp = { - reset = true, -- reset the runtime path to $VIMRUNTIME and your config directory - ---@type string[] - paths = {}, -- add any custom paths here that you want to includes in the rtp - ---@type string[] list any plugins you want to disable here - disabled_plugins = { - -- "gzip", - -- "matchit", - -- "matchparen", - -- "netrwPlugin", - -- "tarPlugin", - -- "tohtml", - -- "tutor", - -- "zipPlugin", - }, - }, - }, - -- lazy can generate helptags from the headings in markdown readme files, - -- so :help works even for plugins that don't have vim docs. - -- when the readme opens with :help it will be correctly displayed as markdown - readme = { - enabled = true, - root = vim.fn.stdpath("state") .. "/lazy/readme", - files = { "README.md", "lua/**/README.md" }, - -- only generate markdown helptags for plugins that dont have docs - skip_if_doc_exists = true, - }, - state = vim.fn.stdpath("state") .. "/lazy/state.json", -- state info for checker and other things - -- Enable profiling of lazy.nvim. This will add some overhead, - -- so only enable this when you are debugging lazy.nvim - profiling = { - -- Enables extra stats on the debug tab related to the loader cache. - -- Additionally gathers stats about all package.loaders - loader = false, - -- Track each new require in the Lazy profiling tab - require = false, - }, - } -< - -If you don’t want to use a Nerd Font, you can replace the icons with Unicode symbols. ~ - ->lua - { - ui = { - icons = { - cmd = "⌘", - config = "🛠", - event = "📅", - ft = "📂", - init = "⚙", - keys = "🗝", - plugin = "🔌", - runtime = "💻", - require = "🌙", - source = "📄", - start = "🚀", - task = "📌", - lazy = "💤 ", - }, - }, - } -< - - -🌈 HIGHLIGHT GROUPS *lazy.nvim-⚙️-configuration-🌈-highlight-groups* - - ----------------------------------------------------------------------- - Highlight Group Default Group Description - ----------------------- ----------------------- ----------------------- - LazyButton CursorLine - - LazyButtonActive Visual - - LazyComment Comment - - LazyCommit @variable.builtin commit ref - - LazyCommitIssue Number - - LazyCommitScope Italic conventional commit - scope - - LazyCommitType Title conventional commit - type - - LazyDimmed Conceal property - - LazyDir @markup.link directory - - LazyH1 IncSearch home button - - LazyH2 Bold titles - - LazyLocal Constant - - LazyNoCond DiagnosticWarn unloaded icon for a - plugin where cond() was - false - - LazyNormal NormalFloat - - LazyProgressDone Constant progress bar done - - LazyProgressTodo LineNr progress bar todo - - LazyProp Conceal property - - LazyReasonCmd Operator - - LazyReasonEvent Constant - - LazyReasonFt Character - - LazyReasonImport Identifier - - LazyReasonKeys Statement - - LazyReasonPlugin Special - - LazyReasonRequire @variable.parameter - - LazyReasonRuntime @macro - - LazyReasonSource Character - - LazyReasonStart @variable.member - - LazySpecial @punctuation.special - - LazyTaskError ErrorMsg task errors - - LazyTaskOutput MsgArea task output - - LazyUrl @markup.link url - - LazyValue @string value of a property - ----------------------------------------------------------------------- - -============================================================================== -7. 🚀 Usage *lazy.nvim-🚀-usage* - - -▶️ STARTUP SEQUENCE *lazy.nvim-🚀-usage-▶️-startup-sequence* - -**lazy.nvim** does **NOT** use Neovim packages and even disables plugin loading -completely (`vim.go.loadplugins = false`). It takes over the complete startup -sequence for more flexibility and better performance. - -In practice this means that step 10 of |Neovim Initialization| is done by Lazy: - -1. All the plugins’ `init()` functions are executed -2. All plugins with `lazy=false` are loaded. This includes sourcing `/plugin` and `/ftdetect` files. (`/after` will not be sourced yet) -3. All files from `/plugin` and `/ftdetect` directories in your rtp are sourced (excluding `/after`) -4. All `/after/plugin` files are sourced (this includes `/after` from plugins) - -Files from runtime directories are always sourced in alphabetical order. - - -🚀 COMMANDS *lazy.nvim-🚀-usage-🚀-commands* - -Plugins are managed with the `:Lazy` command. Open the help with `` to see -all the key mappings. - -You can press `` on a plugin to show its details. Most properties can be -hovered with `` to open links, help files, readmes, git commits and git -issues. - -Lazy can automatically check for updates in the background. This feature can be -enabled with `config.checker.enabled = true`. - -Any operation can be started from the UI, with a sub command or an API -function: - - ---------------------------------------------------------------------------------- - Command Lua Description - ------------------------- -------------------------------- ----------------------- - :Lazy build {plugins} require("lazy").build(opts) Rebuild a plugin - - :Lazy check [plugins] require("lazy").check(opts?) Check for updates and - show the log (git - fetch) - - :Lazy clean [plugins] require("lazy").clean(opts?) Clean plugins that are - no longer needed - - :Lazy clear require("lazy").clear() Clear finished tasks - - :Lazy debug require("lazy").debug() Show debug information - - :Lazy health require("lazy").health() Run :checkhealth lazy - - :Lazy help require("lazy").help() Toggle this help page - - :Lazy home require("lazy").home() Go back to plugin list - - :Lazy install [plugins] require("lazy").install(opts?) Install missing plugins - - :Lazy load {plugins} require("lazy").load(opts) Load a plugin that has - not been loaded yet. - Similar to :packadd. - Like - :Lazy load foo.nvim. - Use :Lazy! load to skip - cond checks. - - :Lazy log [plugins] require("lazy").log(opts?) Show recent updates - - :Lazy profile require("lazy").profile() Show detailed profiling - - :Lazy reload {plugins} require("lazy").reload(opts) Reload a plugin - (experimental!!) - - :Lazy restore [plugins] require("lazy").restore(opts?) Updates all plugins to - the state in the - lockfile. For a single - plugin: restore it to - the state in the - lockfile or to a given - commit under the cursor - - :Lazy sync [plugins] require("lazy").sync(opts?) Run install, clean and - update - - :Lazy update [plugins] require("lazy").update(opts?) Update plugins. This - will also update the - lockfile - ---------------------------------------------------------------------------------- -Any command can have a **bang** to make the command wait till it finished. For -example, if you want to sync lazy from the cmdline, you can use: - ->shell - nvim --headless "+Lazy! sync" +qa -< - -`opts` is a table with the following key-values: - -- **wait**: when true, then the call will wait till the operation completed -- **show**: when false, the UI will not be shown -- **plugins**: a list of plugin names to run the operation on -- **concurrency**: limit the `number` of concurrently running tasks - -Stats API (`require("lazy").stats()`): - ->lua - { - -- startuptime in milliseconds till UIEnter - startuptime = 0, - -- when true, startuptime is the accurate cputime for the Neovim process. (Linux & macOS) - -- this is more accurate than `nvim --startuptime`, and as such will be slightly higher - -- when false, startuptime is calculated based on a delta with a timestamp when lazy started. - real_cputime = false, - count = 0, -- total number of plugins - loaded = 0, -- number of loaded plugins - ---@type table - times = {}, - } -< - -**lazy.nvim** provides a statusline component that you can use to show the -number of pending updates. Make sure to enable `config.checker.enabled = true` -to make this work. - -Example of configuring lualine.nvim ~ - ->lua - require("lualine").setup({ - sections = { - lualine_x = { - { - require("lazy.status").updates, - cond = require("lazy.status").has_updates, - color = { fg = "#ff9e64" }, - }, - }, - }, - }) -< - - -📆 USER EVENTS *lazy.nvim-🚀-usage-📆-user-events* - -The following user events will be triggered: - -- **LazyDone**: when lazy has finished starting up and loaded your config -- **LazySync**: after running sync -- **LazyInstall**: after an install -- **LazyUpdate**: after an update -- **LazyClean**: after a clean -- **LazyCheck**: after checking for updates -- **LazyLog**: after running log -- **LazyLoad**: after loading a plugin. The `data` attribute will contain the plugin name. -- **LazySyncPre**: before running sync -- **LazyInstallPre**: before an install -- **LazyUpdatePre**: before an update -- **LazyCleanPre**: before a clean -- **LazyCheckPre**: before checking for updates -- **LazyLogPre**: before running log -- **LazyReload**: triggered by change detection after reloading plugin specs -- **VeryLazy**: triggered after `LazyDone` and processing `VimEnter` auto commands -- **LazyVimStarted**: triggered after `UIEnter` when `require("lazy").stats().startuptime` has been calculated. - Useful to update the startuptime on your dashboard. - - -❌ UNINSTALLING *lazy.nvim-🚀-usage-❌-uninstalling* - -To uninstall **lazy.nvim**, you need to remove the following files and -directories: - -- **data**: `~/.local/share/nvim/lazy` -- **state**: `~/.local/state/nvim/lazy` -- **lockfile**: `~/.config/nvim/lazy-lock.json` - - - Paths can differ if you changed `XDG` environment variables. - -🔒 LOCKFILE *lazy.nvim-🚀-usage-🔒-lockfile* - -After every **update**, the local lockfile (`lazy-lock.json`) is updated with -the installed revisions. It is recommended to have this file under version -control. - -If you use your Neovim config on multiple machines, using the lockfile, you can -ensure that the same version of every plugin is installed. - -If you are on another machine, you can do `:Lazy restore`, to update all your -plugins to the version from the lockfile. - - -📦 MIGRATION GUIDE *lazy.nvim-🚀-usage-📦-migration-guide* - - -PACKER.NVIM ~ - -- `setup` ➡️ `init` -- `requires` ➡️ `dependencies` -- `as` ➡️ `name` -- `opt` ➡️ `lazy` -- `run` ➡️ `build` -- `lock` ➡️ `pin` -- `disable=true` ➡️ `enabled = false` -- `tag='*'` ➡️ `version="*"` -- `after` is **not needed** for most use-cases. Use `dependencies` otherwise. -- `wants` is **not needed** for most use-cases. Use `dependencies` otherwise. -- `config` don’t support string type, use `fun(LazyPlugin)` instead. -- `module` is auto-loaded. No need to specify -- `keys` spec is |lazy.nvim-different| -- `rtp` can be accomplished with: - ->lua - config = function(plugin) - vim.opt.rtp:append(plugin.dir .. "/custom-rtp") - end -< - -With packer `wants`, `requires` and `after` can be used to manage dependencies. -With lazy, this isn’t needed for most of the Lua dependencies. They can be -installed just like normal plugins (even with `lazy=true`) and will be loaded -when other plugins need them. The `dependencies` key can be used to group those -required plugins with the one that requires them. The plugins which are added -as `dependencies` will always be lazy-loaded and loaded when the plugin is -loaded. - - -PAQ-NVIM ~ - -- `as` ➡️ `name` -- `opt` ➡️ `lazy` -- `run` ➡️ `build` - - -⚡ PROFILING & DEBUG *lazy.nvim-🚀-usage-⚡-profiling-&-debug* - -Great care has been taken to make the startup code (`lazy.core`) as efficient -as possible. During startup, all Lua files used before `VimEnter` or -`BufReadPre` are byte-compiled and cached, similar to what impatient.nvim - does. - -My config for example loads in about `11ms` with `93` plugins. I do a lot of -lazy-loading though :) - -**lazy.nvim** comes with an advanced profiler `:Lazy profile` to help you -improve performance. The profiling view shows you why and how long it took to -load your plugins. - - -🐛 DEBUG ~ - -See an overview of active lazy-loading handlers and what’s in the module -cache. - - -📂 STRUCTURING YOUR PLUGINS*lazy.nvim-🚀-usage-📂-structuring-your-plugins* - -Some users may want to split their plugin specs in multiple files. Instead of -passing a spec table to `setup()`, you can use a Lua module. The specs from the -**module** and any top-level **sub-modules** will be merged together in the -final spec, so it is not needed to add `require` calls in your main plugin file -to the other files. - -The benefits of using this approach: - -- Simple to **add** new plugin specs. Just create a new file in your plugins module. -- Allows for **caching** of all your plugin specs. This becomes important if you have a lot of smaller plugin specs. -- Spec changes will automatically be **reloaded** when they’re updated, so the `:Lazy` UI is always up to date. - -Example: - -- `~/.config/nvim/init.lua` - ->lua - require("lazy").setup("plugins") -< - -- `~/.config/nvim/lua/plugins.lua` or `~/.config/nvim/lua/plugins/init.lua` **(this file is optional)** - ->lua - return { - "folke/neodev.nvim", - "folke/which-key.nvim", - { "folke/neoconf.nvim", cmd = "Neoconf" }, - } -< - -- Any lua file in `~/.config/nvim/lua/plugins/*.lua` will be automatically merged in the main plugin spec - -For a real-life example, you can check LazyVim - and more specifically: - -- lazyvim.plugins contains all the plugin specs that will be loaded - - -↩️ IMPORTING SPECS, CONFIG & OPTS - -As part of a spec, you can add `import` statements to import additional plugin -modules. Both of the `setup()` calls are equivalent: - ->lua - require("lazy").setup("plugins") - - -- Same as: - require("lazy").setup({{import = "plugins"}}) -< - -To import multiple modules from a plugin, add additional specs for each import. -For example, to import LazyVim core plugins and an optional plugin: - ->lua - require("lazy").setup({ - spec = { - { "LazyVim/LazyVim", import = "lazyvim.plugins" }, - { import = "lazyvim.plugins.extras.coding.copilot" }, - } - }) -< - -When you import specs, you can override them by simply adding a spec for the -same plugin to your local specs, adding any keys you want to override / merge. - -`opts`, `dependencies`, `cmd`, `event`, `ft` and `keys` are always merged with -the parent spec. Any other property will override the property from the parent -spec. - - -============================================================================== -8. 🔥 Developers *lazy.nvim-🔥-developers* - -To make it easier for users to install your plugin, you can include a package -spec in your repo. - - -BEST PRACTICES *lazy.nvim-🔥-developers-best-practices* - -- If your plugin needs `setup()`, then create a simple `lazy.lua` file like this: - >lua - return { "me/my-plugin", opts = {} } - < -- Plugins that are pure lua libraries should be lazy-loaded with `lazy = true`. - >lua - { "nvim-lua/plenary.nvim", lazy = true } - < -- Always use `opts` instead of `config` when possible. `config` is almost never - needed. -- Only use `dependencies` if a plugin needs the dep to be installed **AND** - loaded. Lua plugins/libraries are automatically loaded when they are - `require()`d, so they don’t need to be in `dependencies`. -- Inside a `build` function or `*.lua` build file, use - `coroutine.yield(msg:string|LazyMsg)` to show progress. -- Don’t change the `cwd` in your build function, since builds run in parallel - and changing the `cwd` will affect other builds. - - -BUILDING *lazy.nvim-🔥-developers-building* - -The spec **build** property can be one of the following: - -- `fun(plugin: LazyPlugin)`: a function that builds the plugin. -- `*.lua`: a Lua file that builds the plugin (like `build.lua`) -- `":Command"`: a Neovim command -- `"rockspec"`: this will run `luarocks make` in the plugin’s directory - This is automatically set by the `rockspec` package source. -- any other **string** will be run as a shell command -- a `list` of any of the above to run multiple build steps -- if no `build` is specified, but a `build.lua` file exists, that will be used instead. - -Build functions and `*.lua` files run asynchronously in a coroutine. Use -`coroutine.yield(msg:string|LazyMsg)` to show progress. - -Yielding will also schedule the next `coroutine.resume()` to run in the next -tick, so you can do long-running tasks without blocking Neovim. - ->lua - ---@class LazyMsg - ---@field msg string - ---@field level? number vim.log.levels.XXX -< - -Use `vim.log.levels.TRACE` to only show the message as a **status** message for -the task. - - - -MINIT (MINIMAL INIT) *lazy.nvim-🔥-developers-minit-(minimal-init)* - -**lazy.nvim** comes with some built-in functionality to help you create a -minimal init for your plugin. - -I mainly use this for testing and for users to create a `repro.lua`. - -When running in **headless** mode, **lazy.nvim** will log any messages to the -terminal. See `opts.headless` for more info. - -**minit** will install/load all your specs and will always run an update as -well. - - -BOOTSTRAP ~ - ->lua - -- setting this env will override all XDG paths - vim.env.LAZY_STDPATH = ".tests" - -- this will install lazy in your stdpath - load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() -< - - -TESTING WITH BUSTED ~ - -This will add `"lunarmodules/busted"`, configure `hererocks` and run `busted`. - -Below is an example of how I use **minit** to run tests with busted - in **LazyVim**. - ->lua - #!/usr/bin/env -S nvim -l - - vim.env.LAZY_STDPATH = ".tests" - load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() - - -- Setup lazy.nvim - require("lazy.minit").busted({ - spec = { - "LazyVim/starter", - "williamboman/mason-lspconfig.nvim", - "williamboman/mason.nvim", - "nvim-treesitter/nvim-treesitter", - }, - }) -< - -To use this, you can run: - ->sh - nvim -l ./tests/busted.lua tests -< - -If you want to inspect the test environment, run: - ->sh - nvim -u ./tests/busted.lua -< - - -REPRO.LUA ~ - ->lua - vim.env.LAZY_STDPATH = ".repro" - load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() - - require("lazy.minit").repro({ - spec = { - "stevearc/conform.nvim", - "nvim-neotest/nvim-nio", - }, - }) - - -- do anything else you need to do to reproduce the issue -< - -Then run it with: - ->sh - nvim -u repro.lua -< - -============================================================================== -9. Links *lazy.nvim-links* +1. Links *lazy.nvim-links* 1. *image*: https://user-images.githubusercontent.com/292349/208301737-68fb279c-ba70-43ef-a369-8c3e8367d6b1.png -2. *image*: https://user-images.githubusercontent.com/292349/208301766-5c400561-83c3-4811-9667-1ec4bb3c43b8.png -3. *image*: https://user-images.githubusercontent.com/292349/208301790-7eedbfa5-d202-4e70-852e-de68aa47233b.png Generated by panvimdoc From 81d2bfffdc8c84a40d25cae7fd4800178c19a138 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sun, 7 Jul 2024 08:42:19 +0200 Subject: [PATCH 237/342] fix(git): only check for new commits for local plugins. Closes #1512 --- lua/lazy/manage/git.lua | 8 ++++++++ lua/lazy/manage/task/git.lua | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/lua/lazy/manage/git.lua b/lua/lazy/manage/git.lua index a365824..201e4e7 100644 --- a/lua/lazy/manage/git.lua +++ b/lua/lazy/manage/git.lua @@ -148,6 +148,14 @@ function M.get_target(plugin) return { branch = branch, commit = M.get_commit(plugin.dir, branch, true) } end +---@param plugin LazyPlugin +---@return GitInfo? +function M.get_local_target(plugin) + local info = M.info(plugin.dir) + local branch = assert(info and info.branch or M.get_branch(plugin)) + return { branch = branch, commit = M.get_commit(plugin.dir, branch, true) } +end + function M.ref(repo, ...) local ref = table.concat({ ... }, "/") diff --git a/lua/lazy/manage/task/git.lua b/lua/lazy/manage/task/git.lua index 774df16..8e0ef48 100644 --- a/lua/lazy/manage/task/git.lua +++ b/lua/lazy/manage/task/git.lua @@ -36,7 +36,7 @@ M.log = { table.insert(args, self.plugin._.updated.from .. ".." .. (self.plugin._.updated.to or "HEAD")) elseif opts.check then local info = assert(Git.info(self.plugin.dir)) - local target = assert(Git.get_target(self.plugin)) + local target = assert(self.plugin._.is_local and Git.get_local_target(self.plugin) or Git.get_target(self.plugin)) if not target.commit then for k, v in pairs(target) do error(k .. " '" .. v .. "' not found") From 23aeb224edf9c8da9e5613af0218f5a5380283d4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 7 Jul 2024 06:43:02 +0000 Subject: [PATCH 238/342] chore(build): auto-generate docs --- doc/lazy.nvim.txt | 1398 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 1352 insertions(+), 46 deletions(-) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index cb18dda..73bd0ae 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -1,61 +1,130 @@ -*lazy.nvim.txt* For Neovim Last change: 2024 July 06 +*lazy.nvim.txt* A modern plugin manager for Neovim ============================================================================== Table of Contents *lazy.nvim-table-of-contents* - - Features |lazy.nvim-features| - - Requirements |lazy.nvim-requirements| - - Getting Started |lazy.nvim-getting-started| -1. Links |lazy.nvim-links| -Install -· -Configure -· -Docs - - - - - - - - - - - - - - +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. 📰 What’s new? *lazy.nvim-📰-what’s-new?* +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 . The GitHub `README.md` + has been updated to point to the new website. The `vimdoc` contains all the + information that is available on the website. +- **Spec Resolution & Merging**: the code that resolves a final spec from a + plugin’s fragments has been rewritten. This should be a tiny bit faster, but + more importantly, fixes some issues and is easier to maintain. +- Packages can now specify their dependencies + and configuration using one of: + - **Lazy**: `lazy.lua` file + - **Rockspec**: luarocks `*-scm-1.rockspec` file + - **Packspec**: `pkg.json` (experimental, since the format is not quite there yet) + Related _lazy.nvim_ options: + >lua + { + pkg = { + enabled = true, + cache = vim.fn.stdpath("state") .. "/lazy/pkg-cache.lua", + -- the first package source that is found for a plugin will be used. + sources = { + "lazy", + "rockspec", -- will only be used when rocks.enabled is true + "packspec", + }, + }, + rocks = { + enabled = true, + root = vim.fn.stdpath("data") .. "/lazy-rocks", + server = "https://nvim-neorocks.github.io/rocks-binaries/", + }, + } + < +- Installing neorg is now as simple as: + >lua + { "nvim-neorg/neorg", opts = {} } + < +- Packages are not limited to just Neovim plugins. You can install any + **luarocks** package, like: + >lua + { "https://github.com/lubyk/yaml" } + < + Luarocks packages without a `/lua` directory are never lazy-loaded, since + it’s just a library. +- `build` functions or `*.lua` build files (like `build.lua`) now run + asynchronously. You can use `coroutine.yield(status_msg)` to show progress. + Yielding will also schedule the next `resume` to run in the next tick, so you + can do long-running tasks without blocking Neovim. +============================================================================== +2. 🚀 Getting Started *lazy.nvim-🚀-getting-started* **lazy.nvim** is a modern plugin manager for Neovim. -FEATURES *lazy.nvim-features* +✨ FEATURES *lazy.nvim-🚀-getting-started-✨-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 support -- Statusline component to see the number of pending updates -- Automatically lazy-loads colorschemes +- 📦 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 support +- 📈 Statusline component to see the number of pending updates +- 🎨 Automatically lazy-loads colorschemes -REQUIREMENTS *lazy.nvim-requirements* +⚡️ REQUIREMENTS *lazy.nvim-🚀-getting-started-⚡️-requirements* - Neovim >= **0.8.0** (needs to be built with **LuaJIT**) - Git >= **2.19.0** (for partial clones support) @@ -64,14 +133,1251 @@ REQUIREMENTS *lazy.nvim-requirements* You can remove `rockspec` from `opts.pkg.sources` to disable this feature. -GETTING STARTED *lazy.nvim-getting-started* +============================================================================== +3. 🛠️ Installation *lazy.nvim-🛠️-installation* + +There are multiple ways to install **lazy.nvim**. The **Structured Setup** is +the recommended way, but you can also use the **Single File Setup** if you +prefer to keep everything in your `init.lua`. + +Please refer to the Configuration section for an overview of +all available options. + + + + +STRUCTURED SETUP *lazy.nvim-🛠️-installation-structured-setup* + +>lua + require("config.lazy") +< + +>lua + -- Bootstrap lazy.nvim + local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" + if not (vim.uv or vim.loop).fs_stat(lazypath) then + local lazyrepo = "https://github.com/folke/lazy.nvim.git" + local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) + if vim.v.shell_error ~= 0 then + vim.api.nvim_echo({ + { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, + { out, "WarningMsg" }, + { "\nPress any key to exit..." }, + }, true, {}) + vim.fn.getchar() + os.exit(1) + end + end + vim.opt.rtp:prepend(lazypath) + + -- Make sure to setup `mapleader` and `maplocalleader` before + -- loading lazy.nvim so that mappings are correct. + -- This is also a good place to setup other settings (vim.opt) + vim.g.mapleader = " " + vim.g.maplocalleader = "\\" + + -- Setup lazy.nvim + require("lazy").setup({ + -- highlight-start + spec = { + -- import your plugins + { import = "plugins" }, + }, + -- highlight-end + -- Configure any other settings here. See the documentation for more details. + -- colorscheme that will be used when installing plugins. + install = { colorscheme = { "habamax" } }, + -- automatically check for plugin updates + checker = { enabled = true }, + }) +< + +You can then create your plugin specs in `~/.config/nvim/lua/plugins/`. Each +file should return a table with the plugins you want to install. + +For more info see Structuring Your Plugins + + +SINGLE FILE SETUP *lazy.nvim-🛠️-installation-single-file-setup* + +>lua + -- Bootstrap lazy.nvim + local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" + if not (vim.uv or vim.loop).fs_stat(lazypath) then + local lazyrepo = "https://github.com/folke/lazy.nvim.git" + local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) + if vim.v.shell_error ~= 0 then + vim.api.nvim_echo({ + { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, + { out, "WarningMsg" }, + { "\nPress any key to exit..." }, + }, true, {}) + vim.fn.getchar() + os.exit(1) + end + end + vim.opt.rtp:prepend(lazypath) + + -- Make sure to setup `mapleader` and `maplocalleader` before + -- loading lazy.nvim so that mappings are correct. + -- This is also a good place to setup other settings (vim.opt) + vim.g.mapleader = " " + vim.g.maplocalleader = "\\" + + -- Setup lazy.nvim + require("lazy").setup({ + -- highlight-start + spec = { + -- add your plugins here + }, + -- highlight-end + -- Configure any other settings here. See the documentation for more details. + -- colorscheme that will be used when installing plugins. + install = { colorscheme = { "habamax" } }, + -- automatically check for plugin updates + checker = { enabled = true }, + }) +< -Check the documentation website for more information. ============================================================================== -1. Links *lazy.nvim-links* +4. 🔌 Plugin Spec *lazy.nvim-🔌-plugin-spec* + + +SPEC SOURCE *lazy.nvim-🔌-plugin-spec-spec-source* + + ----------------------------------------------------------------------------------- + Property Type Description + ---------- ---------- ------------------------------------------------------------- + [1] string? Short plugin url. Will be expanded using + config.git.url_format. Can also be a url or dir. + + dir string? A directory pointing to a local plugin + + url string? A custom git url where the plugin is hosted + + name string? A custom name for the plugin used for the local plugin + directory and as the display name + + dev boolean? When true, a local plugin directory will be used instead. See + config.dev + ----------------------------------------------------------------------------------- +A valid spec should define one of `[1]`, `dir` or `url`. + + +SPEC LOADING *lazy.nvim-🔌-plugin-spec-spec-loading* + + -------------------------------------------------------------------------------------------------- + Property Type Description + -------------- ------------------------- --------------------------------------------------------- + dependencies LazySpec[] A list of plugin names or plugin specs that should be + loaded when the plugin loads. Dependencies are always + lazy-loaded unless specified otherwise. When specifying a + name, make sure the plugin spec has been defined + somewhere else. + + enabled boolean? or fun():boolean When false, or if the function returns false, then this + plugin will not be included in the spec + + cond boolean? or Behaves the same as enabled, but won’t uninstall the + fun(LazyPlugin):boolean plugin when the condition is false. Useful to disable + some plugins in vscode, or firenvim for example. + + priority number? Only useful for start plugins (lazy=false) to force + loading certain plugins first. Default priority is 50. + It’s recommended to set this to a high number for + colorschemes. + -------------------------------------------------------------------------------------------------- + +SPEC SETUP *lazy.nvim-🔌-plugin-spec-spec-setup* + + -------------------------------------------------------------------------------------------------- + Property Type Description + ---------- ----------------------------- --------------------------------------------------------- + init fun(LazyPlugin) init functions are always executed during. Mostly useful + for setting vim.g.* configuration used by Vim plugins + startup + + opts table or opts should be a table (will be merged with parent + fun(LazyPlugin, opts:table) specs), return a table (replaces parent specs) or should + change a table. The table will be passed to the + Plugin.config() function. Setting this value will imply + Plugin.config() + + config fun(LazyPlugin, opts:table) config is executed when the plugin loads. The default + or true implementation will automatically run + require(MAIN).setup(opts) if opts or config = true is + set. Lazy uses several heuristics to determine the + plugin’s MAIN module automatically based on the plugin’s + name. (opts is the recommended way to configure plugins). + + main string? You can specify the main module to use for config() and + opts(), in case it can not be determined automatically. + See config() + + build fun(LazyPlugin) or string or build is executed when a plugin is installed or updated. + false or a list of build See Building for more information. + commands + -------------------------------------------------------------------------------------------------- +Always use `opts` instead of `config` when possible. `config` is almost never +needed. + + + + +SPEC LAZY LOADING *lazy.nvim-🔌-plugin-spec-spec-lazy-loading* + + -------------------------------------------------------------------------------------------------------------------- + Property Type Description + ---------- ---------------------------------------------------------------- ---------------------------------------- + lazy boolean? When true, the plugin will only be + loaded when needed. Lazy-loaded plugins + are automatically loaded when their Lua + modules are required, or when one of the + lazy-loading handlers triggers + + event string? or string[] or Lazy-load on event. Events can be + fun(self:LazyPlugin, event:string[]):string[] or specified as BufEnter or with a pattern + {event:string[]\|string, pattern?:string[]\|string} like BufEnter *.lua + + cmd string? or string[] or Lazy-load on command + fun(self:LazyPlugin, cmd:string[]):string[] + + ft string? or string[] or Lazy-load on filetype + fun(self:LazyPlugin, ft:string[]):string[] + + keys string? or string[] or LazyKeysSpec[] or Lazy-load on key mapping + fun(self:LazyPlugin, keys:string[]):(string \| LazyKeysSpec)[] + -------------------------------------------------------------------------------------------------------------------- +Refer to the Lazy Loading <./lazy_loading.md> section for more information. + + +SPEC VERSIONING *lazy.nvim-🔌-plugin-spec-spec-versioning* + + ------------------------------------------------------------------------------ + Property Type Description + ------------ -------------------- -------------------------------------------- + branch string? Branch of the repository + + tag string? Tag of the repository + + commit string? Commit of the repository + + version string? or false to Version to use from the repository. Full + override the default Semver ranges are supported + + pin boolean? When true, this plugin will not be included + in updates + + submodules boolean? When false, git submodules will not be + fetched. Defaults to true + ------------------------------------------------------------------------------ +Refer to the Versioning <./versioning.md> section for more information. + + +SPEC ADVANCED *lazy.nvim-🔌-plugin-spec-spec-advanced* + + ---------------------------------------------------------------------------------------- + Property Type Description + ---------- ---------- ------------------------------------------------------------------ + optional boolean? When a spec is tagged optional, it will only be included in the + final spec, when the same plugin has been specified at least once + somewhere else without optional. This is mainly useful for Neovim + distros, to allow setting options on plugins that may/may not be + part of the user’s plugins. + + specs LazySpec A list of plugin specs defined in the scope of the plugin. This is + mainly useful for Neovim distros, to allow setting options on + plugins that may/may not be part of the user’s plugins. When the + plugin is disabled, none of the scoped specs will be included in + the final spec. Similar to dependencies without the automatic + loading of the specs. + + module false? Do not automatically load this Lua module when it’s required + somewhere + + import string? Import the given spec module. + ---------------------------------------------------------------------------------------- + +EXAMPLES *lazy.nvim-🔌-plugin-spec-examples* + +>lua + return { + -- the colorscheme should be available when starting Neovim + { + "folke/tokyonight.nvim", + lazy = false, -- make sure we load this during startup if it is your main colorscheme + priority = 1000, -- make sure to load this before all the other start plugins + config = function() + -- load the colorscheme here + vim.cmd([[colorscheme tokyonight]]) + end, + }, + + -- I have a separate config.mappings file where I require which-key. + -- With lazy the plugin will be automatically loaded when it is required somewhere + { "folke/which-key.nvim", lazy = true }, + + { + "nvim-neorg/neorg", + -- lazy-load on filetype + ft = "norg", + -- options for neorg. This will automatically call `require("neorg").setup(opts)` + opts = { + load = { + ["core.defaults"] = {}, + }, + }, + }, + + { + "dstein64/vim-startuptime", + -- lazy-load on a command + cmd = "StartupTime", + -- init is called during startup. Configuration for vim plugins typically should be set in an init function + init = function() + vim.g.startuptime_tries = 10 + end, + }, + + { + "hrsh7th/nvim-cmp", + -- load cmp on InsertEnter + event = "InsertEnter", + -- these dependencies will only be loaded when cmp loads + -- dependencies are always lazy-loaded unless specified otherwise + dependencies = { + "hrsh7th/cmp-nvim-lsp", + "hrsh7th/cmp-buffer", + }, + config = function() + -- ... + end, + }, + + -- if some code requires a module from an unloaded plugin, it will be automatically loaded. + -- So for api plugins like devicons, we can always set lazy=true + { "nvim-tree/nvim-web-devicons", lazy = true }, + + -- you can use the VeryLazy event for things that can + -- load later and are not important for the initial UI + { "stevearc/dressing.nvim", event = "VeryLazy" }, + + { + "Wansmer/treesj", + keys = { + { "J", "TSJToggle", desc = "Join Toggle" }, + }, + opts = { use_default_keymaps = false, max_join_length = 150 }, + }, + + { + "monaqa/dial.nvim", + -- lazy-load on keys + -- mode is `n` by default. For more advanced options, check the section on key mappings + keys = { "", { "", mode = "n" } }, + }, + + -- local plugins need to be explicitly configured with dir + { dir = "~/projects/secret.nvim" }, + + -- you can use a custom url to fetch a plugin + { url = "git@github.com:folke/noice.nvim.git" }, + + -- local plugins can also be configured with the dev option. + -- This will use {config.dev.path}/noice.nvim/ instead of fetching it from GitHub + -- With the dev option, you can easily switch between the local and installed version of a plugin + { "folke/noice.nvim", dev = true }, + } +< + + +LAZY LOADING *lazy.nvim-🔌-plugin-spec-lazy-loading* + +**lazy.nvim** automagically lazy-loads Lua modules. This means that if you have +a plugin `A` that is lazy-loaded and a plugin `B` that requires a module of +plugin `A`, then plugin `A` will be loaded on demand as expected. + + +Additionally, you can also lazy-load on **events**, **commands**, **file +types** and **key mappings**. + +Plugins will be lazy-loaded when one of the following is `true`: + +- The plugin only exists as a dependency in your spec +- It has an `event`, `cmd`, `ft` or `keys` key +- `config.defaults.lazy == true` + + +🌈 COLORSCHEMES ~ + +Colorscheme plugins can be configured with `lazy=true`. The plugin will +automagically load when doing `colorscheme foobar`. + + + +⌨️ LAZY KEY MAPPINGS ~ + +The `keys` property can be a `string` or `string[]` for simple normal-mode +mappings, or it can be a `LazyKeysSpec` table with the following key-value +pairs: + +- **[1]**: (`string`) lhs **(required)** +- **[2]**: (`string|fun()`) rhs **(optional)** +- **mode**: (`string|string[]`) mode **(optional, defaults to "n")** +- **ft**: (`string|string[]`) `filetype` for buffer-local keymaps **(optional)** +- any other option valid for `vim.keymap.set` + +Key mappings will load the plugin the first time they get executed. + +When `[2]` is `nil`, then the real mapping has to be created by the `config()` +function. + +>lua + -- Example for neo-tree.nvim + { + "nvim-neo-tree/neo-tree.nvim", + keys = { + { "ft", "Neotree toggle", desc = "NeoTree" }, + }, + config = function() + require("neo-tree").setup() + end, + } +< + + +VERSIONING *lazy.nvim-🔌-plugin-spec-versioning* + +If you want to install a specific revision of a plugin, you can use `commit`, +`tag`, `branch`, `version`. + +The `version` property supports Semver ranges. + + + +EXAMPLES ~ + +- `*`: latest stable version (this excludes pre-release versions) +- `1.2.x`: any version that starts with `1.2`, such as `1.2.0`, `1.2.3`, etc. +- `^1.2.3`: any version that is compatible with `1.2.3`, such as `1.3.0`, `1.4.5`, etc., but not `2.0.0`. +- `~1.2.3`: any version that is compatible with `1.2.3`, such as `1.2.4`, `1.2.5`, but not `1.3.0`. +- `>1.2.3`: any version that is greater than `1.2.3`, such as `1.3.0`, `1.4.5`, etc. +- `>=1.2.3`: any version that is greater than or equal to `1.2.3`, such as `1.2.3`, `1.3.0`, `1.4.5`, etc. +- `<1.2.3`: any version that is less than `1.2.3`, such as `1.1.0`, `1.0.5`, etc. +- `<=1.2.3`: any version that is less than or equal to `1.2.3`, such as `1.2.3`, `1.1.0`, `1.0.5`, etc + + +============================================================================== +5. 📦 Packages *lazy.nvim-📦-packages* + +**lazy.nvim** supports three ways for plugins to define their dependencies and +configuration. + +- **Lazy**: `lazy.lua` file +- **Rockspec**: luarocks `*-scm-1.rockspec` file +- **Packspec**: `pkg.json` (experimental, since the format is not quite there yet) + +You can enable/disable package sources with `config.pkg.sources` +. The order of sources is important, as the first source that +finds a package will be used. + + + +LAZY *lazy.nvim-📦-packages-lazy* + +Using a `lazy.lua` file is the recommended way to define your plugin +dependencies and configuration. Syntax is the same as any plugin spec. + + +ROCKSPEC *lazy.nvim-📦-packages-rockspec* + +When a plugin contains a `*-1.rockspec` file, **lazy.nvim** will automatically +build the rock and its dependencies. + +A **rockspec** will only be used if one of the following is true: + +- the package does not have a `/lua` directory +- the package has a complex build step +- the package has dependencies (excluding `lua`) + + +PACKSPEC *lazy.nvim-📦-packages-packspec* + +Supports the pkg.json + format, with +a lazy extension in `lazy`. `lazy` can contain any valid lazy spec fields. They +will be added to the plugin’s spec. + + +============================================================================== +6. ⚙️ Configuration *lazy.nvim-⚙️-configuration* + +**lazy.nvim** comes with the following defaults: + +>lua + { + root = vim.fn.stdpath("data") .. "/lazy", -- directory where plugins will be installed + defaults = { + -- Set this to `true` to have all your plugins lazy-loaded by default. + -- Only do this if you know what you are doing, as it can lead to unexpected behavior. + lazy = false, -- should plugins be lazy-loaded? + -- It's recommended to leave version=false for now, since a lot the plugin that support versioning, + -- have outdated releases, which may break your Neovim install. + version = nil, -- always use the latest git commit + -- version = "*", -- try installing the latest stable version for plugins that support semver + -- default `cond` you can use to globally disable a lot of plugins + -- when running inside vscode for example + cond = nil, ---@type boolean|fun(self:LazyPlugin):boolean|nil + }, + -- leave nil when passing the spec as the first argument to setup() + spec = nil, ---@type LazySpec + local_spec = true, -- load project specific .lazy.lua spec files. They will be added at the end of the spec. + lockfile = vim.fn.stdpath("config") .. "/lazy-lock.json", -- lockfile generated after running update. + ---@type number? limit the maximum amount of concurrent tasks + concurrency = jit.os:find("Windows") and (vim.uv.available_parallelism() * 2) or nil, + git = { + -- defaults for the `Lazy log` command + -- log = { "--since=3 days ago" }, -- show commits from the last 3 days + log = { "-8" }, -- show the last 8 commits + timeout = 120, -- kill processes that take more than 2 minutes + url_format = "https://github.com/%s.git", + -- lazy.nvim requires git >=2.19.0. If you really want to use lazy with an older version, + -- then set the below to false. This should work, but is NOT supported and will + -- increase downloads a lot. + filter = true, + }, + pkg = { + enabled = true, + cache = vim.fn.stdpath("state") .. "/lazy/pkg-cache.lua", + versions = true, -- Honor versions in pkg sources + -- the first package source that is found for a plugin will be used. + sources = { + "lazy", + "rockspec", + "packspec", + }, + }, + rocks = { + root = vim.fn.stdpath("data") .. "/lazy-rocks", + server = "https://nvim-neorocks.github.io/rocks-binaries/", + }, + dev = { + ---@type string | fun(plugin: LazyPlugin): string directory where you store your local plugin projects + path = "~/projects", + ---@type string[] plugins that match these patterns will use your local versions instead of being fetched from GitHub + patterns = {}, -- For example {"folke"} + fallback = false, -- Fallback to git when local plugin doesn't exist + }, + install = { + -- install missing plugins on startup. This doesn't increase startup time. + missing = true, + -- try to load one of these colorschemes when starting an installation during startup + colorscheme = { "habamax" }, + }, + ui = { + -- a number <1 is a percentage., >1 is a fixed size + size = { width = 0.8, height = 0.8 }, + wrap = true, -- wrap the lines in the ui + -- The border to use for the UI window. Accepts same border values as |nvim_open_win()|. + border = "none", + -- The backdrop opacity. 0 is fully opaque, 100 is fully transparent. + backdrop = 60, + title = nil, ---@type string only works when border is not "none" + title_pos = "center", ---@type "center" | "left" | "right" + -- Show pills on top of the Lazy window + pills = true, ---@type boolean + icons = { + cmd = " ", + config = "", + event = " ", + favorite = " ", + ft = " ", + init = " ", + import = " ", + keys = " ", + lazy = "󰒲 ", + loaded = "●", + not_loaded = "○", + plugin = " ", + runtime = " ", + require = "󰢱 ", + source = " ", + start = " ", + task = "✔ ", + list = { + "●", + "➜", + "★", + "‒", + }, + }, + -- leave nil, to automatically select a browser depending on your OS. + -- If you want to use a specific browser, you can define it here + browser = nil, ---@type string? + throttle = 20, -- how frequently should the ui process render events + custom_keys = { + -- You can define custom key maps here. If present, the description will + -- be shown in the help menu. + -- To disable one of the defaults, set it to false. + + ["l"] = { + function(plugin) + require("lazy.util").float_term({ "lazygit", "log" }, { + cwd = plugin.dir, + }) + end, + desc = "Open lazygit log", + }, + + ["t"] = { + function(plugin) + require("lazy.util").float_term(nil, { + cwd = plugin.dir, + }) + end, + desc = "Open terminal in plugin dir", + }, + }, + }, + diff = { + -- diff command can be one of: + -- * browser: opens the github compare view. Note that this is always mapped to as well, + -- so you can have a different command for diff + -- * git: will run git diff and open a buffer with filetype git + -- * terminal_git: will open a pseudo terminal with git diff + -- * diffview.nvim: will open Diffview to show the diff + cmd = "git", + }, + checker = { + -- automatically check for plugin updates + enabled = false, + concurrency = nil, ---@type number? set to 1 to check for updates very slowly + notify = true, -- get a notification when new updates are found + frequency = 3600, -- check for updates every hour + check_pinned = false, -- check for pinned packages that can't be updated + }, + change_detection = { + -- automatically check for config file changes and reload the ui + enabled = true, + notify = true, -- get a notification when changes are found + }, + performance = { + cache = { + enabled = true, + }, + reset_packpath = true, -- reset the package path to improve startup time + rtp = { + reset = true, -- reset the runtime path to $VIMRUNTIME and your config directory + ---@type string[] + paths = {}, -- add any custom paths here that you want to includes in the rtp + ---@type string[] list any plugins you want to disable here + disabled_plugins = { + -- "gzip", + -- "matchit", + -- "matchparen", + -- "netrwPlugin", + -- "tarPlugin", + -- "tohtml", + -- "tutor", + -- "zipPlugin", + }, + }, + }, + -- lazy can generate helptags from the headings in markdown readme files, + -- so :help works even for plugins that don't have vim docs. + -- when the readme opens with :help it will be correctly displayed as markdown + readme = { + enabled = true, + root = vim.fn.stdpath("state") .. "/lazy/readme", + files = { "README.md", "lua/**/README.md" }, + -- only generate markdown helptags for plugins that dont have docs + skip_if_doc_exists = true, + }, + state = vim.fn.stdpath("state") .. "/lazy/state.json", -- state info for checker and other things + -- Enable profiling of lazy.nvim. This will add some overhead, + -- so only enable this when you are debugging lazy.nvim + profiling = { + -- Enables extra stats on the debug tab related to the loader cache. + -- Additionally gathers stats about all package.loaders + loader = false, + -- Track each new require in the Lazy profiling tab + require = false, + }, + } +< + +If you don’t want to use a Nerd Font, you can replace the icons with Unicode symbols. ~ + +>lua + { + ui = { + icons = { + cmd = "⌘", + config = "🛠", + event = "📅", + ft = "📂", + init = "⚙", + keys = "🗝", + plugin = "🔌", + runtime = "💻", + require = "🌙", + source = "📄", + start = "🚀", + task = "📌", + lazy = "💤 ", + }, + }, + } +< + + +🌈 HIGHLIGHT GROUPS *lazy.nvim-⚙️-configuration-🌈-highlight-groups* + + ----------------------------------------------------------------------- + Highlight Group Default Group Description + ----------------------- ----------------------- ----------------------- + LazyButton CursorLine + + LazyButtonActive Visual + + LazyComment Comment + + LazyCommit @variable.builtin commit ref + + LazyCommitIssue Number + + LazyCommitScope Italic conventional commit + scope + + LazyCommitType Title conventional commit + type + + LazyDimmed Conceal property + + LazyDir @markup.link directory + + LazyH1 IncSearch home button + + LazyH2 Bold titles + + LazyLocal Constant + + LazyNoCond DiagnosticWarn unloaded icon for a + plugin where cond() was + false + + LazyNormal NormalFloat + + LazyProgressDone Constant progress bar done + + LazyProgressTodo LineNr progress bar todo + + LazyProp Conceal property + + LazyReasonCmd Operator + + LazyReasonEvent Constant + + LazyReasonFt Character + + LazyReasonImport Identifier + + LazyReasonKeys Statement + + LazyReasonPlugin Special + + LazyReasonRequire @variable.parameter + + LazyReasonRuntime @macro + + LazyReasonSource Character + + LazyReasonStart @variable.member + + LazySpecial @punctuation.special + + LazyTaskError ErrorMsg task errors + + LazyTaskOutput MsgArea task output + + LazyUrl @markup.link url + + LazyValue @string value of a property + ----------------------------------------------------------------------- + +============================================================================== +7. 🚀 Usage *lazy.nvim-🚀-usage* + + +▶️ STARTUP SEQUENCE *lazy.nvim-🚀-usage-▶️-startup-sequence* + +**lazy.nvim** does **NOT** use Neovim packages and even disables plugin loading +completely (`vim.go.loadplugins = false`). It takes over the complete startup +sequence for more flexibility and better performance. + +In practice this means that step 10 of |Neovim Initialization| is done by Lazy: + +1. All the plugins’ `init()` functions are executed +2. All plugins with `lazy=false` are loaded. This includes sourcing `/plugin` and `/ftdetect` files. (`/after` will not be sourced yet) +3. All files from `/plugin` and `/ftdetect` directories in your rtp are sourced (excluding `/after`) +4. All `/after/plugin` files are sourced (this includes `/after` from plugins) + +Files from runtime directories are always sourced in alphabetical order. + + +🚀 COMMANDS *lazy.nvim-🚀-usage-🚀-commands* + +Plugins are managed with the `:Lazy` command. Open the help with `` to see +all the key mappings. + +You can press `` on a plugin to show its details. Most properties can be +hovered with `` to open links, help files, readmes, git commits and git +issues. + +Lazy can automatically check for updates in the background. This feature can be +enabled with `config.checker.enabled = true`. + +Any operation can be started from the UI, with a sub command or an API +function: + + ---------------------------------------------------------------------------------- + Command Lua Description + ------------------------- -------------------------------- ----------------------- + :Lazy build {plugins} require("lazy").build(opts) Rebuild a plugin + + :Lazy check [plugins] require("lazy").check(opts?) Check for updates and + show the log (git + fetch) + + :Lazy clean [plugins] require("lazy").clean(opts?) Clean plugins that are + no longer needed + + :Lazy clear require("lazy").clear() Clear finished tasks + + :Lazy debug require("lazy").debug() Show debug information + + :Lazy health require("lazy").health() Run :checkhealth lazy + + :Lazy help require("lazy").help() Toggle this help page + + :Lazy home require("lazy").home() Go back to plugin list + + :Lazy install [plugins] require("lazy").install(opts?) Install missing plugins + + :Lazy load {plugins} require("lazy").load(opts) Load a plugin that has + not been loaded yet. + Similar to :packadd. + Like + :Lazy load foo.nvim. + Use :Lazy! load to skip + cond checks. + + :Lazy log [plugins] require("lazy").log(opts?) Show recent updates + + :Lazy profile require("lazy").profile() Show detailed profiling + + :Lazy reload {plugins} require("lazy").reload(opts) Reload a plugin + (experimental!!) + + :Lazy restore [plugins] require("lazy").restore(opts?) Updates all plugins to + the state in the + lockfile. For a single + plugin: restore it to + the state in the + lockfile or to a given + commit under the cursor + + :Lazy sync [plugins] require("lazy").sync(opts?) Run install, clean and + update + + :Lazy update [plugins] require("lazy").update(opts?) Update plugins. This + will also update the + lockfile + ---------------------------------------------------------------------------------- +Any command can have a **bang** to make the command wait till it finished. For +example, if you want to sync lazy from the cmdline, you can use: + +>shell + nvim --headless "+Lazy! sync" +qa +< + +`opts` is a table with the following key-values: + +- **wait**: when true, then the call will wait till the operation completed +- **show**: when false, the UI will not be shown +- **plugins**: a list of plugin names to run the operation on +- **concurrency**: limit the `number` of concurrently running tasks + +Stats API (`require("lazy").stats()`): + +>lua + { + -- startuptime in milliseconds till UIEnter + startuptime = 0, + -- when true, startuptime is the accurate cputime for the Neovim process. (Linux & macOS) + -- this is more accurate than `nvim --startuptime`, and as such will be slightly higher + -- when false, startuptime is calculated based on a delta with a timestamp when lazy started. + real_cputime = false, + count = 0, -- total number of plugins + loaded = 0, -- number of loaded plugins + ---@type table + times = {}, + } +< + +**lazy.nvim** provides a statusline component that you can use to show the +number of pending updates. Make sure to enable `config.checker.enabled = true` +to make this work. + +Example of configuring lualine.nvim ~ + +>lua + require("lualine").setup({ + sections = { + lualine_x = { + { + require("lazy.status").updates, + cond = require("lazy.status").has_updates, + color = { fg = "#ff9e64" }, + }, + }, + }, + }) +< + + +📆 USER EVENTS *lazy.nvim-🚀-usage-📆-user-events* + +The following user events will be triggered: + +- **LazyDone**: when lazy has finished starting up and loaded your config +- **LazySync**: after running sync +- **LazyInstall**: after an install +- **LazyUpdate**: after an update +- **LazyClean**: after a clean +- **LazyCheck**: after checking for updates +- **LazyLog**: after running log +- **LazyLoad**: after loading a plugin. The `data` attribute will contain the plugin name. +- **LazySyncPre**: before running sync +- **LazyInstallPre**: before an install +- **LazyUpdatePre**: before an update +- **LazyCleanPre**: before a clean +- **LazyCheckPre**: before checking for updates +- **LazyLogPre**: before running log +- **LazyReload**: triggered by change detection after reloading plugin specs +- **VeryLazy**: triggered after `LazyDone` and processing `VimEnter` auto commands +- **LazyVimStarted**: triggered after `UIEnter` when `require("lazy").stats().startuptime` has been calculated. + Useful to update the startuptime on your dashboard. + + +❌ UNINSTALLING *lazy.nvim-🚀-usage-❌-uninstalling* + +To uninstall **lazy.nvim**, you need to remove the following files and +directories: + +- **data**: `~/.local/share/nvim/lazy` +- **state**: `~/.local/state/nvim/lazy` +- **lockfile**: `~/.config/nvim/lazy-lock.json` + + + Paths can differ if you changed `XDG` environment variables. + +🔒 LOCKFILE *lazy.nvim-🚀-usage-🔒-lockfile* + +After every **update**, the local lockfile (`lazy-lock.json`) is updated with +the installed revisions. It is recommended to have this file under version +control. + +If you use your Neovim config on multiple machines, using the lockfile, you can +ensure that the same version of every plugin is installed. + +If you are on another machine, you can do `:Lazy restore`, to update all your +plugins to the version from the lockfile. + + +📦 MIGRATION GUIDE *lazy.nvim-🚀-usage-📦-migration-guide* + + +PACKER.NVIM ~ + +- `setup` ➡️ `init` +- `requires` ➡️ `dependencies` +- `as` ➡️ `name` +- `opt` ➡️ `lazy` +- `run` ➡️ `build` +- `lock` ➡️ `pin` +- `disable=true` ➡️ `enabled = false` +- `tag='*'` ➡️ `version="*"` +- `after` is **not needed** for most use-cases. Use `dependencies` otherwise. +- `wants` is **not needed** for most use-cases. Use `dependencies` otherwise. +- `config` don’t support string type, use `fun(LazyPlugin)` instead. +- `module` is auto-loaded. No need to specify +- `keys` spec is |lazy.nvim-different| +- `rtp` can be accomplished with: + +>lua + config = function(plugin) + vim.opt.rtp:append(plugin.dir .. "/custom-rtp") + end +< + +With packer `wants`, `requires` and `after` can be used to manage dependencies. +With lazy, this isn’t needed for most of the Lua dependencies. They can be +installed just like normal plugins (even with `lazy=true`) and will be loaded +when other plugins need them. The `dependencies` key can be used to group those +required plugins with the one that requires them. The plugins which are added +as `dependencies` will always be lazy-loaded and loaded when the plugin is +loaded. + + +PAQ-NVIM ~ + +- `as` ➡️ `name` +- `opt` ➡️ `lazy` +- `run` ➡️ `build` + + +⚡ PROFILING & DEBUG *lazy.nvim-🚀-usage-⚡-profiling-&-debug* + +Great care has been taken to make the startup code (`lazy.core`) as efficient +as possible. During startup, all Lua files used before `VimEnter` or +`BufReadPre` are byte-compiled and cached, similar to what impatient.nvim + does. + +My config for example loads in about `11ms` with `93` plugins. I do a lot of +lazy-loading though :) + +**lazy.nvim** comes with an advanced profiler `:Lazy profile` to help you +improve performance. The profiling view shows you why and how long it took to +load your plugins. + + +🐛 DEBUG ~ + +See an overview of active lazy-loading handlers and what’s in the module +cache. + + +📂 STRUCTURING YOUR PLUGINS*lazy.nvim-🚀-usage-📂-structuring-your-plugins* + +Some users may want to split their plugin specs in multiple files. Instead of +passing a spec table to `setup()`, you can use a Lua module. The specs from the +**module** and any top-level **sub-modules** will be merged together in the +final spec, so it is not needed to add `require` calls in your main plugin file +to the other files. + +The benefits of using this approach: + +- Simple to **add** new plugin specs. Just create a new file in your plugins module. +- Allows for **caching** of all your plugin specs. This becomes important if you have a lot of smaller plugin specs. +- Spec changes will automatically be **reloaded** when they’re updated, so the `:Lazy` UI is always up to date. + +Example: + +- `~/.config/nvim/init.lua` + +>lua + require("lazy").setup("plugins") +< + +- `~/.config/nvim/lua/plugins.lua` or `~/.config/nvim/lua/plugins/init.lua` **(this file is optional)** + +>lua + return { + "folke/neodev.nvim", + "folke/which-key.nvim", + { "folke/neoconf.nvim", cmd = "Neoconf" }, + } +< + +- Any lua file in `~/.config/nvim/lua/plugins/*.lua` will be automatically merged in the main plugin spec + +For a real-life example, you can check LazyVim + and more specifically: + +- lazyvim.plugins contains all the plugin specs that will be loaded + + +↩️ IMPORTING SPECS, CONFIG & OPTS + +As part of a spec, you can add `import` statements to import additional plugin +modules. Both of the `setup()` calls are equivalent: + +>lua + require("lazy").setup("plugins") + + -- Same as: + require("lazy").setup({{import = "plugins"}}) +< + +To import multiple modules from a plugin, add additional specs for each import. +For example, to import LazyVim core plugins and an optional plugin: + +>lua + require("lazy").setup({ + spec = { + { "LazyVim/LazyVim", import = "lazyvim.plugins" }, + { import = "lazyvim.plugins.extras.coding.copilot" }, + } + }) +< + +When you import specs, you can override them by simply adding a spec for the +same plugin to your local specs, adding any keys you want to override / merge. + +`opts`, `dependencies`, `cmd`, `event`, `ft` and `keys` are always merged with +the parent spec. Any other property will override the property from the parent +spec. + + +============================================================================== +8. 🔥 Developers *lazy.nvim-🔥-developers* + +To make it easier for users to install your plugin, you can include a package +spec in your repo. + + +BEST PRACTICES *lazy.nvim-🔥-developers-best-practices* + +- If your plugin needs `setup()`, then create a simple `lazy.lua` file like this: + >lua + return { "me/my-plugin", opts = {} } + < +- Plugins that are pure lua libraries should be lazy-loaded with `lazy = true`. + >lua + { "nvim-lua/plenary.nvim", lazy = true } + < +- Always use `opts` instead of `config` when possible. `config` is almost never + needed. +- Only use `dependencies` if a plugin needs the dep to be installed **AND** + loaded. Lua plugins/libraries are automatically loaded when they are + `require()`d, so they don’t need to be in `dependencies`. +- Inside a `build` function or `*.lua` build file, use + `coroutine.yield(msg:string|LazyMsg)` to show progress. +- Don’t change the `cwd` in your build function, since builds run in parallel + and changing the `cwd` will affect other builds. + + +BUILDING *lazy.nvim-🔥-developers-building* + +The spec **build** property can be one of the following: + +- `fun(plugin: LazyPlugin)`: a function that builds the plugin. +- `*.lua`: a Lua file that builds the plugin (like `build.lua`) +- `":Command"`: a Neovim command +- `"rockspec"`: this will run `luarocks make` in the plugin’s directory + This is automatically set by the `rockspec` package source. +- any other **string** will be run as a shell command +- a `list` of any of the above to run multiple build steps +- if no `build` is specified, but a `build.lua` file exists, that will be used instead. + +Build functions and `*.lua` files run asynchronously in a coroutine. Use +`coroutine.yield(msg:string|LazyMsg)` to show progress. + +Yielding will also schedule the next `coroutine.resume()` to run in the next +tick, so you can do long-running tasks without blocking Neovim. + +>lua + ---@class LazyMsg + ---@field msg string + ---@field level? number vim.log.levels.XXX +< + +Use `vim.log.levels.TRACE` to only show the message as a **status** message for +the task. + + + +MINIT (MINIMAL INIT) *lazy.nvim-🔥-developers-minit-(minimal-init)* + +**lazy.nvim** comes with some built-in functionality to help you create a +minimal init for your plugin. + +I mainly use this for testing and for users to create a `repro.lua`. + +When running in **headless** mode, **lazy.nvim** will log any messages to the +terminal. See `opts.headless` for more info. + +**minit** will install/load all your specs and will always run an update as +well. + + +BOOTSTRAP ~ + +>lua + -- setting this env will override all XDG paths + vim.env.LAZY_STDPATH = ".tests" + -- this will install lazy in your stdpath + load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() +< + + +TESTING WITH BUSTED ~ + +This will add `"lunarmodules/busted"`, configure `hererocks` and run `busted`. + +Below is an example of how I use **minit** to run tests with busted + in **LazyVim**. + +>lua + #!/usr/bin/env -S nvim -l + + vim.env.LAZY_STDPATH = ".tests" + load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() + + -- Setup lazy.nvim + require("lazy.minit").busted({ + spec = { + "LazyVim/starter", + "williamboman/mason-lspconfig.nvim", + "williamboman/mason.nvim", + "nvim-treesitter/nvim-treesitter", + }, + }) +< + +To use this, you can run: + +>sh + nvim -l ./tests/busted.lua tests +< + +If you want to inspect the test environment, run: + +>sh + nvim -u ./tests/busted.lua +< + + +REPRO.LUA ~ + +>lua + vim.env.LAZY_STDPATH = ".repro" + load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() + + require("lazy.minit").repro({ + spec = { + "stevearc/conform.nvim", + "nvim-neotest/nvim-nio", + }, + }) + + -- do anything else you need to do to reproduce the issue +< + +Then run it with: + +>sh + nvim -u repro.lua +< + +============================================================================== +9. Links *lazy.nvim-links* 1. *image*: https://user-images.githubusercontent.com/292349/208301737-68fb279c-ba70-43ef-a369-8c3e8367d6b1.png +2. *image*: https://user-images.githubusercontent.com/292349/208301766-5c400561-83c3-4811-9667-1ec4bb3c43b8.png +3. *image*: https://user-images.githubusercontent.com/292349/208301790-7eedbfa5-d202-4e70-852e-de68aa47233b.png Generated by panvimdoc From 89b264ac1d3c9752b22d4e61d16dc408a75d2a16 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 7 Jul 2024 08:44:37 +0200 Subject: [PATCH 239/342] chore(main): release 11.10.2 (#1621) :robot: I have created a release *beep* *boop* --- ## [11.10.2](https://github.com/folke/lazy.nvim/compare/v11.10.1...v11.10.2) (2024-07-07) ### Bug Fixes * **git:** only check for new commits for local plugins. Closes [#1512](https://github.com/folke/lazy.nvim/issues/1512) ([81d2bff](https://github.com/folke/lazy.nvim/commit/81d2bfffdc8c84a40d25cae7fd4800178c19a138)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 7 +++++++ lua/lazy/core/config.lua | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index e6cb8da..9441643 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "11.10.1" + ".": "11.10.2" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 97a2b89..b265fe9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [11.10.2](https://github.com/folke/lazy.nvim/compare/v11.10.1...v11.10.2) (2024-07-07) + + +### Bug Fixes + +* **git:** only check for new commits for local plugins. Closes [#1512](https://github.com/folke/lazy.nvim/issues/1512) ([81d2bff](https://github.com/folke/lazy.nvim/commit/81d2bfffdc8c84a40d25cae7fd4800178c19a138)) + ## [11.10.1](https://github.com/folke/lazy.nvim/compare/v11.10.0...v11.10.1) (2024-07-05) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 3bcb5ae..f1eff9c 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -228,7 +228,7 @@ function M.hererocks() return M.options.rocks.hererocks end -M.version = "11.10.1" -- x-release-please-version +M.version = "11.10.2" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 083f3dfb5e5ef7e53fccd0d7d71c32aae7d93a16 Mon Sep 17 00:00:00 2001 From: folke Date: Sun, 7 Jul 2024 06:45:23 +0000 Subject: [PATCH 240/342] chore(build): auto-generate docs --- doc/lazy.nvim.txt | 1398 ++------------------------------------------- 1 file changed, 46 insertions(+), 1352 deletions(-) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index 73bd0ae..b3fad77 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -1,130 +1,61 @@ -*lazy.nvim.txt* A modern plugin manager for Neovim +*lazy.nvim.txt* For Neovim Last change: 2024 July 07 ============================================================================== 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. 📰 What’s new? *lazy.nvim-📰-what’s-new?* + - Features |lazy.nvim-features| + - Requirements |lazy.nvim-requirements| + - Getting Started |lazy.nvim-getting-started| +1. Links |lazy.nvim-links| +Install +· +Configure +· +Docs + + + + + + + + + + + + + + -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 . The GitHub `README.md` - has been updated to point to the new website. The `vimdoc` contains all the - information that is available on the website. -- **Spec Resolution & Merging**: the code that resolves a final spec from a - plugin’s fragments has been rewritten. This should be a tiny bit faster, but - more importantly, fixes some issues and is easier to maintain. -- Packages can now specify their dependencies - and configuration using one of: - - **Lazy**: `lazy.lua` file - - **Rockspec**: luarocks `*-scm-1.rockspec` file - - **Packspec**: `pkg.json` (experimental, since the format is not quite there yet) - Related _lazy.nvim_ options: - >lua - { - pkg = { - enabled = true, - cache = vim.fn.stdpath("state") .. "/lazy/pkg-cache.lua", - -- the first package source that is found for a plugin will be used. - sources = { - "lazy", - "rockspec", -- will only be used when rocks.enabled is true - "packspec", - }, - }, - rocks = { - enabled = true, - root = vim.fn.stdpath("data") .. "/lazy-rocks", - server = "https://nvim-neorocks.github.io/rocks-binaries/", - }, - } - < -- Installing neorg is now as simple as: - >lua - { "nvim-neorg/neorg", opts = {} } - < -- Packages are not limited to just Neovim plugins. You can install any - **luarocks** package, like: - >lua - { "https://github.com/lubyk/yaml" } - < - Luarocks packages without a `/lua` directory are never lazy-loaded, since - it’s just a library. -- `build` functions or `*.lua` build files (like `build.lua`) now run - asynchronously. You can use `coroutine.yield(status_msg)` to show progress. - Yielding will also schedule the next `resume` to run in the next tick, so you - can do long-running tasks without blocking Neovim. -============================================================================== -2. 🚀 Getting Started *lazy.nvim-🚀-getting-started* **lazy.nvim** is a modern plugin manager for Neovim. -✨ FEATURES *lazy.nvim-🚀-getting-started-✨-features* +FEATURES *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 support -- 📈 Statusline component to see the number of pending updates -- 🎨 Automatically lazy-loads colorschemes +- 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 support +- Statusline component to see the number of pending updates +- Automatically lazy-loads colorschemes -⚡️ REQUIREMENTS *lazy.nvim-🚀-getting-started-⚡️-requirements* +REQUIREMENTS *lazy.nvim-requirements* - Neovim >= **0.8.0** (needs to be built with **LuaJIT**) - Git >= **2.19.0** (for partial clones support) @@ -133,1251 +64,14 @@ Table of Contents *lazy.nvim-table-of-contents* You can remove `rockspec` from `opts.pkg.sources` to disable this feature. -============================================================================== -3. 🛠️ Installation *lazy.nvim-🛠️-installation* - -There are multiple ways to install **lazy.nvim**. The **Structured Setup** is -the recommended way, but you can also use the **Single File Setup** if you -prefer to keep everything in your `init.lua`. - -Please refer to the Configuration section for an overview of -all available options. - - - - -STRUCTURED SETUP *lazy.nvim-🛠️-installation-structured-setup* - ->lua - require("config.lazy") -< - ->lua - -- Bootstrap lazy.nvim - local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" - if not (vim.uv or vim.loop).fs_stat(lazypath) then - local lazyrepo = "https://github.com/folke/lazy.nvim.git" - local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) - if vim.v.shell_error ~= 0 then - vim.api.nvim_echo({ - { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, - { out, "WarningMsg" }, - { "\nPress any key to exit..." }, - }, true, {}) - vim.fn.getchar() - os.exit(1) - end - end - vim.opt.rtp:prepend(lazypath) - - -- Make sure to setup `mapleader` and `maplocalleader` before - -- loading lazy.nvim so that mappings are correct. - -- This is also a good place to setup other settings (vim.opt) - vim.g.mapleader = " " - vim.g.maplocalleader = "\\" - - -- Setup lazy.nvim - require("lazy").setup({ - -- highlight-start - spec = { - -- import your plugins - { import = "plugins" }, - }, - -- highlight-end - -- Configure any other settings here. See the documentation for more details. - -- colorscheme that will be used when installing plugins. - install = { colorscheme = { "habamax" } }, - -- automatically check for plugin updates - checker = { enabled = true }, - }) -< - -You can then create your plugin specs in `~/.config/nvim/lua/plugins/`. Each -file should return a table with the plugins you want to install. - -For more info see Structuring Your Plugins - - -SINGLE FILE SETUP *lazy.nvim-🛠️-installation-single-file-setup* - ->lua - -- Bootstrap lazy.nvim - local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" - if not (vim.uv or vim.loop).fs_stat(lazypath) then - local lazyrepo = "https://github.com/folke/lazy.nvim.git" - local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) - if vim.v.shell_error ~= 0 then - vim.api.nvim_echo({ - { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, - { out, "WarningMsg" }, - { "\nPress any key to exit..." }, - }, true, {}) - vim.fn.getchar() - os.exit(1) - end - end - vim.opt.rtp:prepend(lazypath) - - -- Make sure to setup `mapleader` and `maplocalleader` before - -- loading lazy.nvim so that mappings are correct. - -- This is also a good place to setup other settings (vim.opt) - vim.g.mapleader = " " - vim.g.maplocalleader = "\\" - - -- Setup lazy.nvim - require("lazy").setup({ - -- highlight-start - spec = { - -- add your plugins here - }, - -- highlight-end - -- Configure any other settings here. See the documentation for more details. - -- colorscheme that will be used when installing plugins. - install = { colorscheme = { "habamax" } }, - -- automatically check for plugin updates - checker = { enabled = true }, - }) -< +GETTING STARTED *lazy.nvim-getting-started* +Check the documentation website for more information. ============================================================================== -4. 🔌 Plugin Spec *lazy.nvim-🔌-plugin-spec* - - -SPEC SOURCE *lazy.nvim-🔌-plugin-spec-spec-source* - - ----------------------------------------------------------------------------------- - Property Type Description - ---------- ---------- ------------------------------------------------------------- - [1] string? Short plugin url. Will be expanded using - config.git.url_format. Can also be a url or dir. - - dir string? A directory pointing to a local plugin - - url string? A custom git url where the plugin is hosted - - name string? A custom name for the plugin used for the local plugin - directory and as the display name - - dev boolean? When true, a local plugin directory will be used instead. See - config.dev - ----------------------------------------------------------------------------------- -A valid spec should define one of `[1]`, `dir` or `url`. - - -SPEC LOADING *lazy.nvim-🔌-plugin-spec-spec-loading* - - -------------------------------------------------------------------------------------------------- - Property Type Description - -------------- ------------------------- --------------------------------------------------------- - dependencies LazySpec[] A list of plugin names or plugin specs that should be - loaded when the plugin loads. Dependencies are always - lazy-loaded unless specified otherwise. When specifying a - name, make sure the plugin spec has been defined - somewhere else. - - enabled boolean? or fun():boolean When false, or if the function returns false, then this - plugin will not be included in the spec - - cond boolean? or Behaves the same as enabled, but won’t uninstall the - fun(LazyPlugin):boolean plugin when the condition is false. Useful to disable - some plugins in vscode, or firenvim for example. - - priority number? Only useful for start plugins (lazy=false) to force - loading certain plugins first. Default priority is 50. - It’s recommended to set this to a high number for - colorschemes. - -------------------------------------------------------------------------------------------------- - -SPEC SETUP *lazy.nvim-🔌-plugin-spec-spec-setup* - - -------------------------------------------------------------------------------------------------- - Property Type Description - ---------- ----------------------------- --------------------------------------------------------- - init fun(LazyPlugin) init functions are always executed during. Mostly useful - for setting vim.g.* configuration used by Vim plugins - startup - - opts table or opts should be a table (will be merged with parent - fun(LazyPlugin, opts:table) specs), return a table (replaces parent specs) or should - change a table. The table will be passed to the - Plugin.config() function. Setting this value will imply - Plugin.config() - - config fun(LazyPlugin, opts:table) config is executed when the plugin loads. The default - or true implementation will automatically run - require(MAIN).setup(opts) if opts or config = true is - set. Lazy uses several heuristics to determine the - plugin’s MAIN module automatically based on the plugin’s - name. (opts is the recommended way to configure plugins). - - main string? You can specify the main module to use for config() and - opts(), in case it can not be determined automatically. - See config() - - build fun(LazyPlugin) or string or build is executed when a plugin is installed or updated. - false or a list of build See Building for more information. - commands - -------------------------------------------------------------------------------------------------- -Always use `opts` instead of `config` when possible. `config` is almost never -needed. - - - - -SPEC LAZY LOADING *lazy.nvim-🔌-plugin-spec-spec-lazy-loading* - - -------------------------------------------------------------------------------------------------------------------- - Property Type Description - ---------- ---------------------------------------------------------------- ---------------------------------------- - lazy boolean? When true, the plugin will only be - loaded when needed. Lazy-loaded plugins - are automatically loaded when their Lua - modules are required, or when one of the - lazy-loading handlers triggers - - event string? or string[] or Lazy-load on event. Events can be - fun(self:LazyPlugin, event:string[]):string[] or specified as BufEnter or with a pattern - {event:string[]\|string, pattern?:string[]\|string} like BufEnter *.lua - - cmd string? or string[] or Lazy-load on command - fun(self:LazyPlugin, cmd:string[]):string[] - - ft string? or string[] or Lazy-load on filetype - fun(self:LazyPlugin, ft:string[]):string[] - - keys string? or string[] or LazyKeysSpec[] or Lazy-load on key mapping - fun(self:LazyPlugin, keys:string[]):(string \| LazyKeysSpec)[] - -------------------------------------------------------------------------------------------------------------------- -Refer to the Lazy Loading <./lazy_loading.md> section for more information. - - -SPEC VERSIONING *lazy.nvim-🔌-plugin-spec-spec-versioning* - - ------------------------------------------------------------------------------ - Property Type Description - ------------ -------------------- -------------------------------------------- - branch string? Branch of the repository - - tag string? Tag of the repository - - commit string? Commit of the repository - - version string? or false to Version to use from the repository. Full - override the default Semver ranges are supported - - pin boolean? When true, this plugin will not be included - in updates - - submodules boolean? When false, git submodules will not be - fetched. Defaults to true - ------------------------------------------------------------------------------ -Refer to the Versioning <./versioning.md> section for more information. - - -SPEC ADVANCED *lazy.nvim-🔌-plugin-spec-spec-advanced* - - ---------------------------------------------------------------------------------------- - Property Type Description - ---------- ---------- ------------------------------------------------------------------ - optional boolean? When a spec is tagged optional, it will only be included in the - final spec, when the same plugin has been specified at least once - somewhere else without optional. This is mainly useful for Neovim - distros, to allow setting options on plugins that may/may not be - part of the user’s plugins. - - specs LazySpec A list of plugin specs defined in the scope of the plugin. This is - mainly useful for Neovim distros, to allow setting options on - plugins that may/may not be part of the user’s plugins. When the - plugin is disabled, none of the scoped specs will be included in - the final spec. Similar to dependencies without the automatic - loading of the specs. - - module false? Do not automatically load this Lua module when it’s required - somewhere - - import string? Import the given spec module. - ---------------------------------------------------------------------------------------- - -EXAMPLES *lazy.nvim-🔌-plugin-spec-examples* - ->lua - return { - -- the colorscheme should be available when starting Neovim - { - "folke/tokyonight.nvim", - lazy = false, -- make sure we load this during startup if it is your main colorscheme - priority = 1000, -- make sure to load this before all the other start plugins - config = function() - -- load the colorscheme here - vim.cmd([[colorscheme tokyonight]]) - end, - }, - - -- I have a separate config.mappings file where I require which-key. - -- With lazy the plugin will be automatically loaded when it is required somewhere - { "folke/which-key.nvim", lazy = true }, - - { - "nvim-neorg/neorg", - -- lazy-load on filetype - ft = "norg", - -- options for neorg. This will automatically call `require("neorg").setup(opts)` - opts = { - load = { - ["core.defaults"] = {}, - }, - }, - }, - - { - "dstein64/vim-startuptime", - -- lazy-load on a command - cmd = "StartupTime", - -- init is called during startup. Configuration for vim plugins typically should be set in an init function - init = function() - vim.g.startuptime_tries = 10 - end, - }, - - { - "hrsh7th/nvim-cmp", - -- load cmp on InsertEnter - event = "InsertEnter", - -- these dependencies will only be loaded when cmp loads - -- dependencies are always lazy-loaded unless specified otherwise - dependencies = { - "hrsh7th/cmp-nvim-lsp", - "hrsh7th/cmp-buffer", - }, - config = function() - -- ... - end, - }, - - -- if some code requires a module from an unloaded plugin, it will be automatically loaded. - -- So for api plugins like devicons, we can always set lazy=true - { "nvim-tree/nvim-web-devicons", lazy = true }, - - -- you can use the VeryLazy event for things that can - -- load later and are not important for the initial UI - { "stevearc/dressing.nvim", event = "VeryLazy" }, - - { - "Wansmer/treesj", - keys = { - { "J", "TSJToggle", desc = "Join Toggle" }, - }, - opts = { use_default_keymaps = false, max_join_length = 150 }, - }, - - { - "monaqa/dial.nvim", - -- lazy-load on keys - -- mode is `n` by default. For more advanced options, check the section on key mappings - keys = { "", { "", mode = "n" } }, - }, - - -- local plugins need to be explicitly configured with dir - { dir = "~/projects/secret.nvim" }, - - -- you can use a custom url to fetch a plugin - { url = "git@github.com:folke/noice.nvim.git" }, - - -- local plugins can also be configured with the dev option. - -- This will use {config.dev.path}/noice.nvim/ instead of fetching it from GitHub - -- With the dev option, you can easily switch between the local and installed version of a plugin - { "folke/noice.nvim", dev = true }, - } -< - - -LAZY LOADING *lazy.nvim-🔌-plugin-spec-lazy-loading* - -**lazy.nvim** automagically lazy-loads Lua modules. This means that if you have -a plugin `A` that is lazy-loaded and a plugin `B` that requires a module of -plugin `A`, then plugin `A` will be loaded on demand as expected. - - -Additionally, you can also lazy-load on **events**, **commands**, **file -types** and **key mappings**. - -Plugins will be lazy-loaded when one of the following is `true`: - -- The plugin only exists as a dependency in your spec -- It has an `event`, `cmd`, `ft` or `keys` key -- `config.defaults.lazy == true` - - -🌈 COLORSCHEMES ~ - -Colorscheme plugins can be configured with `lazy=true`. The plugin will -automagically load when doing `colorscheme foobar`. - - - -⌨️ LAZY KEY MAPPINGS ~ - -The `keys` property can be a `string` or `string[]` for simple normal-mode -mappings, or it can be a `LazyKeysSpec` table with the following key-value -pairs: - -- **[1]**: (`string`) lhs **(required)** -- **[2]**: (`string|fun()`) rhs **(optional)** -- **mode**: (`string|string[]`) mode **(optional, defaults to "n")** -- **ft**: (`string|string[]`) `filetype` for buffer-local keymaps **(optional)** -- any other option valid for `vim.keymap.set` - -Key mappings will load the plugin the first time they get executed. - -When `[2]` is `nil`, then the real mapping has to be created by the `config()` -function. - ->lua - -- Example for neo-tree.nvim - { - "nvim-neo-tree/neo-tree.nvim", - keys = { - { "ft", "Neotree toggle", desc = "NeoTree" }, - }, - config = function() - require("neo-tree").setup() - end, - } -< - - -VERSIONING *lazy.nvim-🔌-plugin-spec-versioning* - -If you want to install a specific revision of a plugin, you can use `commit`, -`tag`, `branch`, `version`. - -The `version` property supports Semver ranges. - - - -EXAMPLES ~ - -- `*`: latest stable version (this excludes pre-release versions) -- `1.2.x`: any version that starts with `1.2`, such as `1.2.0`, `1.2.3`, etc. -- `^1.2.3`: any version that is compatible with `1.2.3`, such as `1.3.0`, `1.4.5`, etc., but not `2.0.0`. -- `~1.2.3`: any version that is compatible with `1.2.3`, such as `1.2.4`, `1.2.5`, but not `1.3.0`. -- `>1.2.3`: any version that is greater than `1.2.3`, such as `1.3.0`, `1.4.5`, etc. -- `>=1.2.3`: any version that is greater than or equal to `1.2.3`, such as `1.2.3`, `1.3.0`, `1.4.5`, etc. -- `<1.2.3`: any version that is less than `1.2.3`, such as `1.1.0`, `1.0.5`, etc. -- `<=1.2.3`: any version that is less than or equal to `1.2.3`, such as `1.2.3`, `1.1.0`, `1.0.5`, etc - - -============================================================================== -5. 📦 Packages *lazy.nvim-📦-packages* - -**lazy.nvim** supports three ways for plugins to define their dependencies and -configuration. - -- **Lazy**: `lazy.lua` file -- **Rockspec**: luarocks `*-scm-1.rockspec` file -- **Packspec**: `pkg.json` (experimental, since the format is not quite there yet) - -You can enable/disable package sources with `config.pkg.sources` -. The order of sources is important, as the first source that -finds a package will be used. - - - -LAZY *lazy.nvim-📦-packages-lazy* - -Using a `lazy.lua` file is the recommended way to define your plugin -dependencies and configuration. Syntax is the same as any plugin spec. - - -ROCKSPEC *lazy.nvim-📦-packages-rockspec* - -When a plugin contains a `*-1.rockspec` file, **lazy.nvim** will automatically -build the rock and its dependencies. - -A **rockspec** will only be used if one of the following is true: - -- the package does not have a `/lua` directory -- the package has a complex build step -- the package has dependencies (excluding `lua`) - - -PACKSPEC *lazy.nvim-📦-packages-packspec* - -Supports the pkg.json - format, with -a lazy extension in `lazy`. `lazy` can contain any valid lazy spec fields. They -will be added to the plugin’s spec. - - -============================================================================== -6. ⚙️ Configuration *lazy.nvim-⚙️-configuration* - -**lazy.nvim** comes with the following defaults: - ->lua - { - root = vim.fn.stdpath("data") .. "/lazy", -- directory where plugins will be installed - defaults = { - -- Set this to `true` to have all your plugins lazy-loaded by default. - -- Only do this if you know what you are doing, as it can lead to unexpected behavior. - lazy = false, -- should plugins be lazy-loaded? - -- It's recommended to leave version=false for now, since a lot the plugin that support versioning, - -- have outdated releases, which may break your Neovim install. - version = nil, -- always use the latest git commit - -- version = "*", -- try installing the latest stable version for plugins that support semver - -- default `cond` you can use to globally disable a lot of plugins - -- when running inside vscode for example - cond = nil, ---@type boolean|fun(self:LazyPlugin):boolean|nil - }, - -- leave nil when passing the spec as the first argument to setup() - spec = nil, ---@type LazySpec - local_spec = true, -- load project specific .lazy.lua spec files. They will be added at the end of the spec. - lockfile = vim.fn.stdpath("config") .. "/lazy-lock.json", -- lockfile generated after running update. - ---@type number? limit the maximum amount of concurrent tasks - concurrency = jit.os:find("Windows") and (vim.uv.available_parallelism() * 2) or nil, - git = { - -- defaults for the `Lazy log` command - -- log = { "--since=3 days ago" }, -- show commits from the last 3 days - log = { "-8" }, -- show the last 8 commits - timeout = 120, -- kill processes that take more than 2 minutes - url_format = "https://github.com/%s.git", - -- lazy.nvim requires git >=2.19.0. If you really want to use lazy with an older version, - -- then set the below to false. This should work, but is NOT supported and will - -- increase downloads a lot. - filter = true, - }, - pkg = { - enabled = true, - cache = vim.fn.stdpath("state") .. "/lazy/pkg-cache.lua", - versions = true, -- Honor versions in pkg sources - -- the first package source that is found for a plugin will be used. - sources = { - "lazy", - "rockspec", - "packspec", - }, - }, - rocks = { - root = vim.fn.stdpath("data") .. "/lazy-rocks", - server = "https://nvim-neorocks.github.io/rocks-binaries/", - }, - dev = { - ---@type string | fun(plugin: LazyPlugin): string directory where you store your local plugin projects - path = "~/projects", - ---@type string[] plugins that match these patterns will use your local versions instead of being fetched from GitHub - patterns = {}, -- For example {"folke"} - fallback = false, -- Fallback to git when local plugin doesn't exist - }, - install = { - -- install missing plugins on startup. This doesn't increase startup time. - missing = true, - -- try to load one of these colorschemes when starting an installation during startup - colorscheme = { "habamax" }, - }, - ui = { - -- a number <1 is a percentage., >1 is a fixed size - size = { width = 0.8, height = 0.8 }, - wrap = true, -- wrap the lines in the ui - -- The border to use for the UI window. Accepts same border values as |nvim_open_win()|. - border = "none", - -- The backdrop opacity. 0 is fully opaque, 100 is fully transparent. - backdrop = 60, - title = nil, ---@type string only works when border is not "none" - title_pos = "center", ---@type "center" | "left" | "right" - -- Show pills on top of the Lazy window - pills = true, ---@type boolean - icons = { - cmd = " ", - config = "", - event = " ", - favorite = " ", - ft = " ", - init = " ", - import = " ", - keys = " ", - lazy = "󰒲 ", - loaded = "●", - not_loaded = "○", - plugin = " ", - runtime = " ", - require = "󰢱 ", - source = " ", - start = " ", - task = "✔ ", - list = { - "●", - "➜", - "★", - "‒", - }, - }, - -- leave nil, to automatically select a browser depending on your OS. - -- If you want to use a specific browser, you can define it here - browser = nil, ---@type string? - throttle = 20, -- how frequently should the ui process render events - custom_keys = { - -- You can define custom key maps here. If present, the description will - -- be shown in the help menu. - -- To disable one of the defaults, set it to false. - - ["l"] = { - function(plugin) - require("lazy.util").float_term({ "lazygit", "log" }, { - cwd = plugin.dir, - }) - end, - desc = "Open lazygit log", - }, - - ["t"] = { - function(plugin) - require("lazy.util").float_term(nil, { - cwd = plugin.dir, - }) - end, - desc = "Open terminal in plugin dir", - }, - }, - }, - diff = { - -- diff command can be one of: - -- * browser: opens the github compare view. Note that this is always mapped to as well, - -- so you can have a different command for diff - -- * git: will run git diff and open a buffer with filetype git - -- * terminal_git: will open a pseudo terminal with git diff - -- * diffview.nvim: will open Diffview to show the diff - cmd = "git", - }, - checker = { - -- automatically check for plugin updates - enabled = false, - concurrency = nil, ---@type number? set to 1 to check for updates very slowly - notify = true, -- get a notification when new updates are found - frequency = 3600, -- check for updates every hour - check_pinned = false, -- check for pinned packages that can't be updated - }, - change_detection = { - -- automatically check for config file changes and reload the ui - enabled = true, - notify = true, -- get a notification when changes are found - }, - performance = { - cache = { - enabled = true, - }, - reset_packpath = true, -- reset the package path to improve startup time - rtp = { - reset = true, -- reset the runtime path to $VIMRUNTIME and your config directory - ---@type string[] - paths = {}, -- add any custom paths here that you want to includes in the rtp - ---@type string[] list any plugins you want to disable here - disabled_plugins = { - -- "gzip", - -- "matchit", - -- "matchparen", - -- "netrwPlugin", - -- "tarPlugin", - -- "tohtml", - -- "tutor", - -- "zipPlugin", - }, - }, - }, - -- lazy can generate helptags from the headings in markdown readme files, - -- so :help works even for plugins that don't have vim docs. - -- when the readme opens with :help it will be correctly displayed as markdown - readme = { - enabled = true, - root = vim.fn.stdpath("state") .. "/lazy/readme", - files = { "README.md", "lua/**/README.md" }, - -- only generate markdown helptags for plugins that dont have docs - skip_if_doc_exists = true, - }, - state = vim.fn.stdpath("state") .. "/lazy/state.json", -- state info for checker and other things - -- Enable profiling of lazy.nvim. This will add some overhead, - -- so only enable this when you are debugging lazy.nvim - profiling = { - -- Enables extra stats on the debug tab related to the loader cache. - -- Additionally gathers stats about all package.loaders - loader = false, - -- Track each new require in the Lazy profiling tab - require = false, - }, - } -< - -If you don’t want to use a Nerd Font, you can replace the icons with Unicode symbols. ~ - ->lua - { - ui = { - icons = { - cmd = "⌘", - config = "🛠", - event = "📅", - ft = "📂", - init = "⚙", - keys = "🗝", - plugin = "🔌", - runtime = "💻", - require = "🌙", - source = "📄", - start = "🚀", - task = "📌", - lazy = "💤 ", - }, - }, - } -< - - -🌈 HIGHLIGHT GROUPS *lazy.nvim-⚙️-configuration-🌈-highlight-groups* - - ----------------------------------------------------------------------- - Highlight Group Default Group Description - ----------------------- ----------------------- ----------------------- - LazyButton CursorLine - - LazyButtonActive Visual - - LazyComment Comment - - LazyCommit @variable.builtin commit ref - - LazyCommitIssue Number - - LazyCommitScope Italic conventional commit - scope - - LazyCommitType Title conventional commit - type - - LazyDimmed Conceal property - - LazyDir @markup.link directory - - LazyH1 IncSearch home button - - LazyH2 Bold titles - - LazyLocal Constant - - LazyNoCond DiagnosticWarn unloaded icon for a - plugin where cond() was - false - - LazyNormal NormalFloat - - LazyProgressDone Constant progress bar done - - LazyProgressTodo LineNr progress bar todo - - LazyProp Conceal property - - LazyReasonCmd Operator - - LazyReasonEvent Constant - - LazyReasonFt Character - - LazyReasonImport Identifier - - LazyReasonKeys Statement - - LazyReasonPlugin Special - - LazyReasonRequire @variable.parameter - - LazyReasonRuntime @macro - - LazyReasonSource Character - - LazyReasonStart @variable.member - - LazySpecial @punctuation.special - - LazyTaskError ErrorMsg task errors - - LazyTaskOutput MsgArea task output - - LazyUrl @markup.link url - - LazyValue @string value of a property - ----------------------------------------------------------------------- - -============================================================================== -7. 🚀 Usage *lazy.nvim-🚀-usage* - - -▶️ STARTUP SEQUENCE *lazy.nvim-🚀-usage-▶️-startup-sequence* - -**lazy.nvim** does **NOT** use Neovim packages and even disables plugin loading -completely (`vim.go.loadplugins = false`). It takes over the complete startup -sequence for more flexibility and better performance. - -In practice this means that step 10 of |Neovim Initialization| is done by Lazy: - -1. All the plugins’ `init()` functions are executed -2. All plugins with `lazy=false` are loaded. This includes sourcing `/plugin` and `/ftdetect` files. (`/after` will not be sourced yet) -3. All files from `/plugin` and `/ftdetect` directories in your rtp are sourced (excluding `/after`) -4. All `/after/plugin` files are sourced (this includes `/after` from plugins) - -Files from runtime directories are always sourced in alphabetical order. - - -🚀 COMMANDS *lazy.nvim-🚀-usage-🚀-commands* - -Plugins are managed with the `:Lazy` command. Open the help with `` to see -all the key mappings. - -You can press `` on a plugin to show its details. Most properties can be -hovered with `` to open links, help files, readmes, git commits and git -issues. - -Lazy can automatically check for updates in the background. This feature can be -enabled with `config.checker.enabled = true`. - -Any operation can be started from the UI, with a sub command or an API -function: - - ---------------------------------------------------------------------------------- - Command Lua Description - ------------------------- -------------------------------- ----------------------- - :Lazy build {plugins} require("lazy").build(opts) Rebuild a plugin - - :Lazy check [plugins] require("lazy").check(opts?) Check for updates and - show the log (git - fetch) - - :Lazy clean [plugins] require("lazy").clean(opts?) Clean plugins that are - no longer needed - - :Lazy clear require("lazy").clear() Clear finished tasks - - :Lazy debug require("lazy").debug() Show debug information - - :Lazy health require("lazy").health() Run :checkhealth lazy - - :Lazy help require("lazy").help() Toggle this help page - - :Lazy home require("lazy").home() Go back to plugin list - - :Lazy install [plugins] require("lazy").install(opts?) Install missing plugins - - :Lazy load {plugins} require("lazy").load(opts) Load a plugin that has - not been loaded yet. - Similar to :packadd. - Like - :Lazy load foo.nvim. - Use :Lazy! load to skip - cond checks. - - :Lazy log [plugins] require("lazy").log(opts?) Show recent updates - - :Lazy profile require("lazy").profile() Show detailed profiling - - :Lazy reload {plugins} require("lazy").reload(opts) Reload a plugin - (experimental!!) - - :Lazy restore [plugins] require("lazy").restore(opts?) Updates all plugins to - the state in the - lockfile. For a single - plugin: restore it to - the state in the - lockfile or to a given - commit under the cursor - - :Lazy sync [plugins] require("lazy").sync(opts?) Run install, clean and - update - - :Lazy update [plugins] require("lazy").update(opts?) Update plugins. This - will also update the - lockfile - ---------------------------------------------------------------------------------- -Any command can have a **bang** to make the command wait till it finished. For -example, if you want to sync lazy from the cmdline, you can use: - ->shell - nvim --headless "+Lazy! sync" +qa -< - -`opts` is a table with the following key-values: - -- **wait**: when true, then the call will wait till the operation completed -- **show**: when false, the UI will not be shown -- **plugins**: a list of plugin names to run the operation on -- **concurrency**: limit the `number` of concurrently running tasks - -Stats API (`require("lazy").stats()`): - ->lua - { - -- startuptime in milliseconds till UIEnter - startuptime = 0, - -- when true, startuptime is the accurate cputime for the Neovim process. (Linux & macOS) - -- this is more accurate than `nvim --startuptime`, and as such will be slightly higher - -- when false, startuptime is calculated based on a delta with a timestamp when lazy started. - real_cputime = false, - count = 0, -- total number of plugins - loaded = 0, -- number of loaded plugins - ---@type table - times = {}, - } -< - -**lazy.nvim** provides a statusline component that you can use to show the -number of pending updates. Make sure to enable `config.checker.enabled = true` -to make this work. - -Example of configuring lualine.nvim ~ - ->lua - require("lualine").setup({ - sections = { - lualine_x = { - { - require("lazy.status").updates, - cond = require("lazy.status").has_updates, - color = { fg = "#ff9e64" }, - }, - }, - }, - }) -< - - -📆 USER EVENTS *lazy.nvim-🚀-usage-📆-user-events* - -The following user events will be triggered: - -- **LazyDone**: when lazy has finished starting up and loaded your config -- **LazySync**: after running sync -- **LazyInstall**: after an install -- **LazyUpdate**: after an update -- **LazyClean**: after a clean -- **LazyCheck**: after checking for updates -- **LazyLog**: after running log -- **LazyLoad**: after loading a plugin. The `data` attribute will contain the plugin name. -- **LazySyncPre**: before running sync -- **LazyInstallPre**: before an install -- **LazyUpdatePre**: before an update -- **LazyCleanPre**: before a clean -- **LazyCheckPre**: before checking for updates -- **LazyLogPre**: before running log -- **LazyReload**: triggered by change detection after reloading plugin specs -- **VeryLazy**: triggered after `LazyDone` and processing `VimEnter` auto commands -- **LazyVimStarted**: triggered after `UIEnter` when `require("lazy").stats().startuptime` has been calculated. - Useful to update the startuptime on your dashboard. - - -❌ UNINSTALLING *lazy.nvim-🚀-usage-❌-uninstalling* - -To uninstall **lazy.nvim**, you need to remove the following files and -directories: - -- **data**: `~/.local/share/nvim/lazy` -- **state**: `~/.local/state/nvim/lazy` -- **lockfile**: `~/.config/nvim/lazy-lock.json` - - - Paths can differ if you changed `XDG` environment variables. - -🔒 LOCKFILE *lazy.nvim-🚀-usage-🔒-lockfile* - -After every **update**, the local lockfile (`lazy-lock.json`) is updated with -the installed revisions. It is recommended to have this file under version -control. - -If you use your Neovim config on multiple machines, using the lockfile, you can -ensure that the same version of every plugin is installed. - -If you are on another machine, you can do `:Lazy restore`, to update all your -plugins to the version from the lockfile. - - -📦 MIGRATION GUIDE *lazy.nvim-🚀-usage-📦-migration-guide* - - -PACKER.NVIM ~ - -- `setup` ➡️ `init` -- `requires` ➡️ `dependencies` -- `as` ➡️ `name` -- `opt` ➡️ `lazy` -- `run` ➡️ `build` -- `lock` ➡️ `pin` -- `disable=true` ➡️ `enabled = false` -- `tag='*'` ➡️ `version="*"` -- `after` is **not needed** for most use-cases. Use `dependencies` otherwise. -- `wants` is **not needed** for most use-cases. Use `dependencies` otherwise. -- `config` don’t support string type, use `fun(LazyPlugin)` instead. -- `module` is auto-loaded. No need to specify -- `keys` spec is |lazy.nvim-different| -- `rtp` can be accomplished with: - ->lua - config = function(plugin) - vim.opt.rtp:append(plugin.dir .. "/custom-rtp") - end -< - -With packer `wants`, `requires` and `after` can be used to manage dependencies. -With lazy, this isn’t needed for most of the Lua dependencies. They can be -installed just like normal plugins (even with `lazy=true`) and will be loaded -when other plugins need them. The `dependencies` key can be used to group those -required plugins with the one that requires them. The plugins which are added -as `dependencies` will always be lazy-loaded and loaded when the plugin is -loaded. - - -PAQ-NVIM ~ - -- `as` ➡️ `name` -- `opt` ➡️ `lazy` -- `run` ➡️ `build` - - -⚡ PROFILING & DEBUG *lazy.nvim-🚀-usage-⚡-profiling-&-debug* - -Great care has been taken to make the startup code (`lazy.core`) as efficient -as possible. During startup, all Lua files used before `VimEnter` or -`BufReadPre` are byte-compiled and cached, similar to what impatient.nvim - does. - -My config for example loads in about `11ms` with `93` plugins. I do a lot of -lazy-loading though :) - -**lazy.nvim** comes with an advanced profiler `:Lazy profile` to help you -improve performance. The profiling view shows you why and how long it took to -load your plugins. - - -🐛 DEBUG ~ - -See an overview of active lazy-loading handlers and what’s in the module -cache. - - -📂 STRUCTURING YOUR PLUGINS*lazy.nvim-🚀-usage-📂-structuring-your-plugins* - -Some users may want to split their plugin specs in multiple files. Instead of -passing a spec table to `setup()`, you can use a Lua module. The specs from the -**module** and any top-level **sub-modules** will be merged together in the -final spec, so it is not needed to add `require` calls in your main plugin file -to the other files. - -The benefits of using this approach: - -- Simple to **add** new plugin specs. Just create a new file in your plugins module. -- Allows for **caching** of all your plugin specs. This becomes important if you have a lot of smaller plugin specs. -- Spec changes will automatically be **reloaded** when they’re updated, so the `:Lazy` UI is always up to date. - -Example: - -- `~/.config/nvim/init.lua` - ->lua - require("lazy").setup("plugins") -< - -- `~/.config/nvim/lua/plugins.lua` or `~/.config/nvim/lua/plugins/init.lua` **(this file is optional)** - ->lua - return { - "folke/neodev.nvim", - "folke/which-key.nvim", - { "folke/neoconf.nvim", cmd = "Neoconf" }, - } -< - -- Any lua file in `~/.config/nvim/lua/plugins/*.lua` will be automatically merged in the main plugin spec - -For a real-life example, you can check LazyVim - and more specifically: - -- lazyvim.plugins contains all the plugin specs that will be loaded - - -↩️ IMPORTING SPECS, CONFIG & OPTS - -As part of a spec, you can add `import` statements to import additional plugin -modules. Both of the `setup()` calls are equivalent: - ->lua - require("lazy").setup("plugins") - - -- Same as: - require("lazy").setup({{import = "plugins"}}) -< - -To import multiple modules from a plugin, add additional specs for each import. -For example, to import LazyVim core plugins and an optional plugin: - ->lua - require("lazy").setup({ - spec = { - { "LazyVim/LazyVim", import = "lazyvim.plugins" }, - { import = "lazyvim.plugins.extras.coding.copilot" }, - } - }) -< - -When you import specs, you can override them by simply adding a spec for the -same plugin to your local specs, adding any keys you want to override / merge. - -`opts`, `dependencies`, `cmd`, `event`, `ft` and `keys` are always merged with -the parent spec. Any other property will override the property from the parent -spec. - - -============================================================================== -8. 🔥 Developers *lazy.nvim-🔥-developers* - -To make it easier for users to install your plugin, you can include a package -spec in your repo. - - -BEST PRACTICES *lazy.nvim-🔥-developers-best-practices* - -- If your plugin needs `setup()`, then create a simple `lazy.lua` file like this: - >lua - return { "me/my-plugin", opts = {} } - < -- Plugins that are pure lua libraries should be lazy-loaded with `lazy = true`. - >lua - { "nvim-lua/plenary.nvim", lazy = true } - < -- Always use `opts` instead of `config` when possible. `config` is almost never - needed. -- Only use `dependencies` if a plugin needs the dep to be installed **AND** - loaded. Lua plugins/libraries are automatically loaded when they are - `require()`d, so they don’t need to be in `dependencies`. -- Inside a `build` function or `*.lua` build file, use - `coroutine.yield(msg:string|LazyMsg)` to show progress. -- Don’t change the `cwd` in your build function, since builds run in parallel - and changing the `cwd` will affect other builds. - - -BUILDING *lazy.nvim-🔥-developers-building* - -The spec **build** property can be one of the following: - -- `fun(plugin: LazyPlugin)`: a function that builds the plugin. -- `*.lua`: a Lua file that builds the plugin (like `build.lua`) -- `":Command"`: a Neovim command -- `"rockspec"`: this will run `luarocks make` in the plugin’s directory - This is automatically set by the `rockspec` package source. -- any other **string** will be run as a shell command -- a `list` of any of the above to run multiple build steps -- if no `build` is specified, but a `build.lua` file exists, that will be used instead. - -Build functions and `*.lua` files run asynchronously in a coroutine. Use -`coroutine.yield(msg:string|LazyMsg)` to show progress. - -Yielding will also schedule the next `coroutine.resume()` to run in the next -tick, so you can do long-running tasks without blocking Neovim. - ->lua - ---@class LazyMsg - ---@field msg string - ---@field level? number vim.log.levels.XXX -< - -Use `vim.log.levels.TRACE` to only show the message as a **status** message for -the task. - - - -MINIT (MINIMAL INIT) *lazy.nvim-🔥-developers-minit-(minimal-init)* - -**lazy.nvim** comes with some built-in functionality to help you create a -minimal init for your plugin. - -I mainly use this for testing and for users to create a `repro.lua`. - -When running in **headless** mode, **lazy.nvim** will log any messages to the -terminal. See `opts.headless` for more info. - -**minit** will install/load all your specs and will always run an update as -well. - - -BOOTSTRAP ~ - ->lua - -- setting this env will override all XDG paths - vim.env.LAZY_STDPATH = ".tests" - -- this will install lazy in your stdpath - load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() -< - - -TESTING WITH BUSTED ~ - -This will add `"lunarmodules/busted"`, configure `hererocks` and run `busted`. - -Below is an example of how I use **minit** to run tests with busted - in **LazyVim**. - ->lua - #!/usr/bin/env -S nvim -l - - vim.env.LAZY_STDPATH = ".tests" - load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() - - -- Setup lazy.nvim - require("lazy.minit").busted({ - spec = { - "LazyVim/starter", - "williamboman/mason-lspconfig.nvim", - "williamboman/mason.nvim", - "nvim-treesitter/nvim-treesitter", - }, - }) -< - -To use this, you can run: - ->sh - nvim -l ./tests/busted.lua tests -< - -If you want to inspect the test environment, run: - ->sh - nvim -u ./tests/busted.lua -< - - -REPRO.LUA ~ - ->lua - vim.env.LAZY_STDPATH = ".repro" - load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() - - require("lazy.minit").repro({ - spec = { - "stevearc/conform.nvim", - "nvim-neotest/nvim-nio", - }, - }) - - -- do anything else you need to do to reproduce the issue -< - -Then run it with: - ->sh - nvim -u repro.lua -< - -============================================================================== -9. Links *lazy.nvim-links* +1. Links *lazy.nvim-links* 1. *image*: https://user-images.githubusercontent.com/292349/208301737-68fb279c-ba70-43ef-a369-8c3e8367d6b1.png -2. *image*: https://user-images.githubusercontent.com/292349/208301766-5c400561-83c3-4811-9667-1ec4bb3c43b8.png -3. *image*: https://user-images.githubusercontent.com/292349/208301790-7eedbfa5-d202-4e70-852e-de68aa47233b.png Generated by panvimdoc From 25026d23822bf95b1f7a1ad2a8541a190c8f7b30 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 7 Jul 2024 06:45:25 +0000 Subject: [PATCH 241/342] chore(build): auto-generate docs --- doc/lazy.nvim.txt | 1398 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 1352 insertions(+), 46 deletions(-) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index b3fad77..73bd0ae 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -1,61 +1,130 @@ -*lazy.nvim.txt* For Neovim Last change: 2024 July 07 +*lazy.nvim.txt* A modern plugin manager for Neovim ============================================================================== Table of Contents *lazy.nvim-table-of-contents* - - Features |lazy.nvim-features| - - Requirements |lazy.nvim-requirements| - - Getting Started |lazy.nvim-getting-started| -1. Links |lazy.nvim-links| -Install -· -Configure -· -Docs - - - - - - - - - - - - - - +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. 📰 What’s new? *lazy.nvim-📰-what’s-new?* +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 . The GitHub `README.md` + has been updated to point to the new website. The `vimdoc` contains all the + information that is available on the website. +- **Spec Resolution & Merging**: the code that resolves a final spec from a + plugin’s fragments has been rewritten. This should be a tiny bit faster, but + more importantly, fixes some issues and is easier to maintain. +- Packages can now specify their dependencies + and configuration using one of: + - **Lazy**: `lazy.lua` file + - **Rockspec**: luarocks `*-scm-1.rockspec` file + - **Packspec**: `pkg.json` (experimental, since the format is not quite there yet) + Related _lazy.nvim_ options: + >lua + { + pkg = { + enabled = true, + cache = vim.fn.stdpath("state") .. "/lazy/pkg-cache.lua", + -- the first package source that is found for a plugin will be used. + sources = { + "lazy", + "rockspec", -- will only be used when rocks.enabled is true + "packspec", + }, + }, + rocks = { + enabled = true, + root = vim.fn.stdpath("data") .. "/lazy-rocks", + server = "https://nvim-neorocks.github.io/rocks-binaries/", + }, + } + < +- Installing neorg is now as simple as: + >lua + { "nvim-neorg/neorg", opts = {} } + < +- Packages are not limited to just Neovim plugins. You can install any + **luarocks** package, like: + >lua + { "https://github.com/lubyk/yaml" } + < + Luarocks packages without a `/lua` directory are never lazy-loaded, since + it’s just a library. +- `build` functions or `*.lua` build files (like `build.lua`) now run + asynchronously. You can use `coroutine.yield(status_msg)` to show progress. + Yielding will also schedule the next `resume` to run in the next tick, so you + can do long-running tasks without blocking Neovim. +============================================================================== +2. 🚀 Getting Started *lazy.nvim-🚀-getting-started* **lazy.nvim** is a modern plugin manager for Neovim. -FEATURES *lazy.nvim-features* +✨ FEATURES *lazy.nvim-🚀-getting-started-✨-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 support -- Statusline component to see the number of pending updates -- Automatically lazy-loads colorschemes +- 📦 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 support +- 📈 Statusline component to see the number of pending updates +- 🎨 Automatically lazy-loads colorschemes -REQUIREMENTS *lazy.nvim-requirements* +⚡️ REQUIREMENTS *lazy.nvim-🚀-getting-started-⚡️-requirements* - Neovim >= **0.8.0** (needs to be built with **LuaJIT**) - Git >= **2.19.0** (for partial clones support) @@ -64,14 +133,1251 @@ REQUIREMENTS *lazy.nvim-requirements* You can remove `rockspec` from `opts.pkg.sources` to disable this feature. -GETTING STARTED *lazy.nvim-getting-started* +============================================================================== +3. 🛠️ Installation *lazy.nvim-🛠️-installation* + +There are multiple ways to install **lazy.nvim**. The **Structured Setup** is +the recommended way, but you can also use the **Single File Setup** if you +prefer to keep everything in your `init.lua`. + +Please refer to the Configuration section for an overview of +all available options. + + + + +STRUCTURED SETUP *lazy.nvim-🛠️-installation-structured-setup* + +>lua + require("config.lazy") +< + +>lua + -- Bootstrap lazy.nvim + local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" + if not (vim.uv or vim.loop).fs_stat(lazypath) then + local lazyrepo = "https://github.com/folke/lazy.nvim.git" + local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) + if vim.v.shell_error ~= 0 then + vim.api.nvim_echo({ + { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, + { out, "WarningMsg" }, + { "\nPress any key to exit..." }, + }, true, {}) + vim.fn.getchar() + os.exit(1) + end + end + vim.opt.rtp:prepend(lazypath) + + -- Make sure to setup `mapleader` and `maplocalleader` before + -- loading lazy.nvim so that mappings are correct. + -- This is also a good place to setup other settings (vim.opt) + vim.g.mapleader = " " + vim.g.maplocalleader = "\\" + + -- Setup lazy.nvim + require("lazy").setup({ + -- highlight-start + spec = { + -- import your plugins + { import = "plugins" }, + }, + -- highlight-end + -- Configure any other settings here. See the documentation for more details. + -- colorscheme that will be used when installing plugins. + install = { colorscheme = { "habamax" } }, + -- automatically check for plugin updates + checker = { enabled = true }, + }) +< + +You can then create your plugin specs in `~/.config/nvim/lua/plugins/`. Each +file should return a table with the plugins you want to install. + +For more info see Structuring Your Plugins + + +SINGLE FILE SETUP *lazy.nvim-🛠️-installation-single-file-setup* + +>lua + -- Bootstrap lazy.nvim + local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" + if not (vim.uv or vim.loop).fs_stat(lazypath) then + local lazyrepo = "https://github.com/folke/lazy.nvim.git" + local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) + if vim.v.shell_error ~= 0 then + vim.api.nvim_echo({ + { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, + { out, "WarningMsg" }, + { "\nPress any key to exit..." }, + }, true, {}) + vim.fn.getchar() + os.exit(1) + end + end + vim.opt.rtp:prepend(lazypath) + + -- Make sure to setup `mapleader` and `maplocalleader` before + -- loading lazy.nvim so that mappings are correct. + -- This is also a good place to setup other settings (vim.opt) + vim.g.mapleader = " " + vim.g.maplocalleader = "\\" + + -- Setup lazy.nvim + require("lazy").setup({ + -- highlight-start + spec = { + -- add your plugins here + }, + -- highlight-end + -- Configure any other settings here. See the documentation for more details. + -- colorscheme that will be used when installing plugins. + install = { colorscheme = { "habamax" } }, + -- automatically check for plugin updates + checker = { enabled = true }, + }) +< -Check the documentation website for more information. ============================================================================== -1. Links *lazy.nvim-links* +4. 🔌 Plugin Spec *lazy.nvim-🔌-plugin-spec* + + +SPEC SOURCE *lazy.nvim-🔌-plugin-spec-spec-source* + + ----------------------------------------------------------------------------------- + Property Type Description + ---------- ---------- ------------------------------------------------------------- + [1] string? Short plugin url. Will be expanded using + config.git.url_format. Can also be a url or dir. + + dir string? A directory pointing to a local plugin + + url string? A custom git url where the plugin is hosted + + name string? A custom name for the plugin used for the local plugin + directory and as the display name + + dev boolean? When true, a local plugin directory will be used instead. See + config.dev + ----------------------------------------------------------------------------------- +A valid spec should define one of `[1]`, `dir` or `url`. + + +SPEC LOADING *lazy.nvim-🔌-plugin-spec-spec-loading* + + -------------------------------------------------------------------------------------------------- + Property Type Description + -------------- ------------------------- --------------------------------------------------------- + dependencies LazySpec[] A list of plugin names or plugin specs that should be + loaded when the plugin loads. Dependencies are always + lazy-loaded unless specified otherwise. When specifying a + name, make sure the plugin spec has been defined + somewhere else. + + enabled boolean? or fun():boolean When false, or if the function returns false, then this + plugin will not be included in the spec + + cond boolean? or Behaves the same as enabled, but won’t uninstall the + fun(LazyPlugin):boolean plugin when the condition is false. Useful to disable + some plugins in vscode, or firenvim for example. + + priority number? Only useful for start plugins (lazy=false) to force + loading certain plugins first. Default priority is 50. + It’s recommended to set this to a high number for + colorschemes. + -------------------------------------------------------------------------------------------------- + +SPEC SETUP *lazy.nvim-🔌-plugin-spec-spec-setup* + + -------------------------------------------------------------------------------------------------- + Property Type Description + ---------- ----------------------------- --------------------------------------------------------- + init fun(LazyPlugin) init functions are always executed during. Mostly useful + for setting vim.g.* configuration used by Vim plugins + startup + + opts table or opts should be a table (will be merged with parent + fun(LazyPlugin, opts:table) specs), return a table (replaces parent specs) or should + change a table. The table will be passed to the + Plugin.config() function. Setting this value will imply + Plugin.config() + + config fun(LazyPlugin, opts:table) config is executed when the plugin loads. The default + or true implementation will automatically run + require(MAIN).setup(opts) if opts or config = true is + set. Lazy uses several heuristics to determine the + plugin’s MAIN module automatically based on the plugin’s + name. (opts is the recommended way to configure plugins). + + main string? You can specify the main module to use for config() and + opts(), in case it can not be determined automatically. + See config() + + build fun(LazyPlugin) or string or build is executed when a plugin is installed or updated. + false or a list of build See Building for more information. + commands + -------------------------------------------------------------------------------------------------- +Always use `opts` instead of `config` when possible. `config` is almost never +needed. + + + + +SPEC LAZY LOADING *lazy.nvim-🔌-plugin-spec-spec-lazy-loading* + + -------------------------------------------------------------------------------------------------------------------- + Property Type Description + ---------- ---------------------------------------------------------------- ---------------------------------------- + lazy boolean? When true, the plugin will only be + loaded when needed. Lazy-loaded plugins + are automatically loaded when their Lua + modules are required, or when one of the + lazy-loading handlers triggers + + event string? or string[] or Lazy-load on event. Events can be + fun(self:LazyPlugin, event:string[]):string[] or specified as BufEnter or with a pattern + {event:string[]\|string, pattern?:string[]\|string} like BufEnter *.lua + + cmd string? or string[] or Lazy-load on command + fun(self:LazyPlugin, cmd:string[]):string[] + + ft string? or string[] or Lazy-load on filetype + fun(self:LazyPlugin, ft:string[]):string[] + + keys string? or string[] or LazyKeysSpec[] or Lazy-load on key mapping + fun(self:LazyPlugin, keys:string[]):(string \| LazyKeysSpec)[] + -------------------------------------------------------------------------------------------------------------------- +Refer to the Lazy Loading <./lazy_loading.md> section for more information. + + +SPEC VERSIONING *lazy.nvim-🔌-plugin-spec-spec-versioning* + + ------------------------------------------------------------------------------ + Property Type Description + ------------ -------------------- -------------------------------------------- + branch string? Branch of the repository + + tag string? Tag of the repository + + commit string? Commit of the repository + + version string? or false to Version to use from the repository. Full + override the default Semver ranges are supported + + pin boolean? When true, this plugin will not be included + in updates + + submodules boolean? When false, git submodules will not be + fetched. Defaults to true + ------------------------------------------------------------------------------ +Refer to the Versioning <./versioning.md> section for more information. + + +SPEC ADVANCED *lazy.nvim-🔌-plugin-spec-spec-advanced* + + ---------------------------------------------------------------------------------------- + Property Type Description + ---------- ---------- ------------------------------------------------------------------ + optional boolean? When a spec is tagged optional, it will only be included in the + final spec, when the same plugin has been specified at least once + somewhere else without optional. This is mainly useful for Neovim + distros, to allow setting options on plugins that may/may not be + part of the user’s plugins. + + specs LazySpec A list of plugin specs defined in the scope of the plugin. This is + mainly useful for Neovim distros, to allow setting options on + plugins that may/may not be part of the user’s plugins. When the + plugin is disabled, none of the scoped specs will be included in + the final spec. Similar to dependencies without the automatic + loading of the specs. + + module false? Do not automatically load this Lua module when it’s required + somewhere + + import string? Import the given spec module. + ---------------------------------------------------------------------------------------- + +EXAMPLES *lazy.nvim-🔌-plugin-spec-examples* + +>lua + return { + -- the colorscheme should be available when starting Neovim + { + "folke/tokyonight.nvim", + lazy = false, -- make sure we load this during startup if it is your main colorscheme + priority = 1000, -- make sure to load this before all the other start plugins + config = function() + -- load the colorscheme here + vim.cmd([[colorscheme tokyonight]]) + end, + }, + + -- I have a separate config.mappings file where I require which-key. + -- With lazy the plugin will be automatically loaded when it is required somewhere + { "folke/which-key.nvim", lazy = true }, + + { + "nvim-neorg/neorg", + -- lazy-load on filetype + ft = "norg", + -- options for neorg. This will automatically call `require("neorg").setup(opts)` + opts = { + load = { + ["core.defaults"] = {}, + }, + }, + }, + + { + "dstein64/vim-startuptime", + -- lazy-load on a command + cmd = "StartupTime", + -- init is called during startup. Configuration for vim plugins typically should be set in an init function + init = function() + vim.g.startuptime_tries = 10 + end, + }, + + { + "hrsh7th/nvim-cmp", + -- load cmp on InsertEnter + event = "InsertEnter", + -- these dependencies will only be loaded when cmp loads + -- dependencies are always lazy-loaded unless specified otherwise + dependencies = { + "hrsh7th/cmp-nvim-lsp", + "hrsh7th/cmp-buffer", + }, + config = function() + -- ... + end, + }, + + -- if some code requires a module from an unloaded plugin, it will be automatically loaded. + -- So for api plugins like devicons, we can always set lazy=true + { "nvim-tree/nvim-web-devicons", lazy = true }, + + -- you can use the VeryLazy event for things that can + -- load later and are not important for the initial UI + { "stevearc/dressing.nvim", event = "VeryLazy" }, + + { + "Wansmer/treesj", + keys = { + { "J", "TSJToggle", desc = "Join Toggle" }, + }, + opts = { use_default_keymaps = false, max_join_length = 150 }, + }, + + { + "monaqa/dial.nvim", + -- lazy-load on keys + -- mode is `n` by default. For more advanced options, check the section on key mappings + keys = { "", { "", mode = "n" } }, + }, + + -- local plugins need to be explicitly configured with dir + { dir = "~/projects/secret.nvim" }, + + -- you can use a custom url to fetch a plugin + { url = "git@github.com:folke/noice.nvim.git" }, + + -- local plugins can also be configured with the dev option. + -- This will use {config.dev.path}/noice.nvim/ instead of fetching it from GitHub + -- With the dev option, you can easily switch between the local and installed version of a plugin + { "folke/noice.nvim", dev = true }, + } +< + + +LAZY LOADING *lazy.nvim-🔌-plugin-spec-lazy-loading* + +**lazy.nvim** automagically lazy-loads Lua modules. This means that if you have +a plugin `A` that is lazy-loaded and a plugin `B` that requires a module of +plugin `A`, then plugin `A` will be loaded on demand as expected. + + +Additionally, you can also lazy-load on **events**, **commands**, **file +types** and **key mappings**. + +Plugins will be lazy-loaded when one of the following is `true`: + +- The plugin only exists as a dependency in your spec +- It has an `event`, `cmd`, `ft` or `keys` key +- `config.defaults.lazy == true` + + +🌈 COLORSCHEMES ~ + +Colorscheme plugins can be configured with `lazy=true`. The plugin will +automagically load when doing `colorscheme foobar`. + + + +⌨️ LAZY KEY MAPPINGS ~ + +The `keys` property can be a `string` or `string[]` for simple normal-mode +mappings, or it can be a `LazyKeysSpec` table with the following key-value +pairs: + +- **[1]**: (`string`) lhs **(required)** +- **[2]**: (`string|fun()`) rhs **(optional)** +- **mode**: (`string|string[]`) mode **(optional, defaults to "n")** +- **ft**: (`string|string[]`) `filetype` for buffer-local keymaps **(optional)** +- any other option valid for `vim.keymap.set` + +Key mappings will load the plugin the first time they get executed. + +When `[2]` is `nil`, then the real mapping has to be created by the `config()` +function. + +>lua + -- Example for neo-tree.nvim + { + "nvim-neo-tree/neo-tree.nvim", + keys = { + { "ft", "Neotree toggle", desc = "NeoTree" }, + }, + config = function() + require("neo-tree").setup() + end, + } +< + + +VERSIONING *lazy.nvim-🔌-plugin-spec-versioning* + +If you want to install a specific revision of a plugin, you can use `commit`, +`tag`, `branch`, `version`. + +The `version` property supports Semver ranges. + + + +EXAMPLES ~ + +- `*`: latest stable version (this excludes pre-release versions) +- `1.2.x`: any version that starts with `1.2`, such as `1.2.0`, `1.2.3`, etc. +- `^1.2.3`: any version that is compatible with `1.2.3`, such as `1.3.0`, `1.4.5`, etc., but not `2.0.0`. +- `~1.2.3`: any version that is compatible with `1.2.3`, such as `1.2.4`, `1.2.5`, but not `1.3.0`. +- `>1.2.3`: any version that is greater than `1.2.3`, such as `1.3.0`, `1.4.5`, etc. +- `>=1.2.3`: any version that is greater than or equal to `1.2.3`, such as `1.2.3`, `1.3.0`, `1.4.5`, etc. +- `<1.2.3`: any version that is less than `1.2.3`, such as `1.1.0`, `1.0.5`, etc. +- `<=1.2.3`: any version that is less than or equal to `1.2.3`, such as `1.2.3`, `1.1.0`, `1.0.5`, etc + + +============================================================================== +5. 📦 Packages *lazy.nvim-📦-packages* + +**lazy.nvim** supports three ways for plugins to define their dependencies and +configuration. + +- **Lazy**: `lazy.lua` file +- **Rockspec**: luarocks `*-scm-1.rockspec` file +- **Packspec**: `pkg.json` (experimental, since the format is not quite there yet) + +You can enable/disable package sources with `config.pkg.sources` +. The order of sources is important, as the first source that +finds a package will be used. + + + +LAZY *lazy.nvim-📦-packages-lazy* + +Using a `lazy.lua` file is the recommended way to define your plugin +dependencies and configuration. Syntax is the same as any plugin spec. + + +ROCKSPEC *lazy.nvim-📦-packages-rockspec* + +When a plugin contains a `*-1.rockspec` file, **lazy.nvim** will automatically +build the rock and its dependencies. + +A **rockspec** will only be used if one of the following is true: + +- the package does not have a `/lua` directory +- the package has a complex build step +- the package has dependencies (excluding `lua`) + + +PACKSPEC *lazy.nvim-📦-packages-packspec* + +Supports the pkg.json + format, with +a lazy extension in `lazy`. `lazy` can contain any valid lazy spec fields. They +will be added to the plugin’s spec. + + +============================================================================== +6. ⚙️ Configuration *lazy.nvim-⚙️-configuration* + +**lazy.nvim** comes with the following defaults: + +>lua + { + root = vim.fn.stdpath("data") .. "/lazy", -- directory where plugins will be installed + defaults = { + -- Set this to `true` to have all your plugins lazy-loaded by default. + -- Only do this if you know what you are doing, as it can lead to unexpected behavior. + lazy = false, -- should plugins be lazy-loaded? + -- It's recommended to leave version=false for now, since a lot the plugin that support versioning, + -- have outdated releases, which may break your Neovim install. + version = nil, -- always use the latest git commit + -- version = "*", -- try installing the latest stable version for plugins that support semver + -- default `cond` you can use to globally disable a lot of plugins + -- when running inside vscode for example + cond = nil, ---@type boolean|fun(self:LazyPlugin):boolean|nil + }, + -- leave nil when passing the spec as the first argument to setup() + spec = nil, ---@type LazySpec + local_spec = true, -- load project specific .lazy.lua spec files. They will be added at the end of the spec. + lockfile = vim.fn.stdpath("config") .. "/lazy-lock.json", -- lockfile generated after running update. + ---@type number? limit the maximum amount of concurrent tasks + concurrency = jit.os:find("Windows") and (vim.uv.available_parallelism() * 2) or nil, + git = { + -- defaults for the `Lazy log` command + -- log = { "--since=3 days ago" }, -- show commits from the last 3 days + log = { "-8" }, -- show the last 8 commits + timeout = 120, -- kill processes that take more than 2 minutes + url_format = "https://github.com/%s.git", + -- lazy.nvim requires git >=2.19.0. If you really want to use lazy with an older version, + -- then set the below to false. This should work, but is NOT supported and will + -- increase downloads a lot. + filter = true, + }, + pkg = { + enabled = true, + cache = vim.fn.stdpath("state") .. "/lazy/pkg-cache.lua", + versions = true, -- Honor versions in pkg sources + -- the first package source that is found for a plugin will be used. + sources = { + "lazy", + "rockspec", + "packspec", + }, + }, + rocks = { + root = vim.fn.stdpath("data") .. "/lazy-rocks", + server = "https://nvim-neorocks.github.io/rocks-binaries/", + }, + dev = { + ---@type string | fun(plugin: LazyPlugin): string directory where you store your local plugin projects + path = "~/projects", + ---@type string[] plugins that match these patterns will use your local versions instead of being fetched from GitHub + patterns = {}, -- For example {"folke"} + fallback = false, -- Fallback to git when local plugin doesn't exist + }, + install = { + -- install missing plugins on startup. This doesn't increase startup time. + missing = true, + -- try to load one of these colorschemes when starting an installation during startup + colorscheme = { "habamax" }, + }, + ui = { + -- a number <1 is a percentage., >1 is a fixed size + size = { width = 0.8, height = 0.8 }, + wrap = true, -- wrap the lines in the ui + -- The border to use for the UI window. Accepts same border values as |nvim_open_win()|. + border = "none", + -- The backdrop opacity. 0 is fully opaque, 100 is fully transparent. + backdrop = 60, + title = nil, ---@type string only works when border is not "none" + title_pos = "center", ---@type "center" | "left" | "right" + -- Show pills on top of the Lazy window + pills = true, ---@type boolean + icons = { + cmd = " ", + config = "", + event = " ", + favorite = " ", + ft = " ", + init = " ", + import = " ", + keys = " ", + lazy = "󰒲 ", + loaded = "●", + not_loaded = "○", + plugin = " ", + runtime = " ", + require = "󰢱 ", + source = " ", + start = " ", + task = "✔ ", + list = { + "●", + "➜", + "★", + "‒", + }, + }, + -- leave nil, to automatically select a browser depending on your OS. + -- If you want to use a specific browser, you can define it here + browser = nil, ---@type string? + throttle = 20, -- how frequently should the ui process render events + custom_keys = { + -- You can define custom key maps here. If present, the description will + -- be shown in the help menu. + -- To disable one of the defaults, set it to false. + + ["l"] = { + function(plugin) + require("lazy.util").float_term({ "lazygit", "log" }, { + cwd = plugin.dir, + }) + end, + desc = "Open lazygit log", + }, + + ["t"] = { + function(plugin) + require("lazy.util").float_term(nil, { + cwd = plugin.dir, + }) + end, + desc = "Open terminal in plugin dir", + }, + }, + }, + diff = { + -- diff command can be one of: + -- * browser: opens the github compare view. Note that this is always mapped to as well, + -- so you can have a different command for diff + -- * git: will run git diff and open a buffer with filetype git + -- * terminal_git: will open a pseudo terminal with git diff + -- * diffview.nvim: will open Diffview to show the diff + cmd = "git", + }, + checker = { + -- automatically check for plugin updates + enabled = false, + concurrency = nil, ---@type number? set to 1 to check for updates very slowly + notify = true, -- get a notification when new updates are found + frequency = 3600, -- check for updates every hour + check_pinned = false, -- check for pinned packages that can't be updated + }, + change_detection = { + -- automatically check for config file changes and reload the ui + enabled = true, + notify = true, -- get a notification when changes are found + }, + performance = { + cache = { + enabled = true, + }, + reset_packpath = true, -- reset the package path to improve startup time + rtp = { + reset = true, -- reset the runtime path to $VIMRUNTIME and your config directory + ---@type string[] + paths = {}, -- add any custom paths here that you want to includes in the rtp + ---@type string[] list any plugins you want to disable here + disabled_plugins = { + -- "gzip", + -- "matchit", + -- "matchparen", + -- "netrwPlugin", + -- "tarPlugin", + -- "tohtml", + -- "tutor", + -- "zipPlugin", + }, + }, + }, + -- lazy can generate helptags from the headings in markdown readme files, + -- so :help works even for plugins that don't have vim docs. + -- when the readme opens with :help it will be correctly displayed as markdown + readme = { + enabled = true, + root = vim.fn.stdpath("state") .. "/lazy/readme", + files = { "README.md", "lua/**/README.md" }, + -- only generate markdown helptags for plugins that dont have docs + skip_if_doc_exists = true, + }, + state = vim.fn.stdpath("state") .. "/lazy/state.json", -- state info for checker and other things + -- Enable profiling of lazy.nvim. This will add some overhead, + -- so only enable this when you are debugging lazy.nvim + profiling = { + -- Enables extra stats on the debug tab related to the loader cache. + -- Additionally gathers stats about all package.loaders + loader = false, + -- Track each new require in the Lazy profiling tab + require = false, + }, + } +< + +If you don’t want to use a Nerd Font, you can replace the icons with Unicode symbols. ~ + +>lua + { + ui = { + icons = { + cmd = "⌘", + config = "🛠", + event = "📅", + ft = "📂", + init = "⚙", + keys = "🗝", + plugin = "🔌", + runtime = "💻", + require = "🌙", + source = "📄", + start = "🚀", + task = "📌", + lazy = "💤 ", + }, + }, + } +< + + +🌈 HIGHLIGHT GROUPS *lazy.nvim-⚙️-configuration-🌈-highlight-groups* + + ----------------------------------------------------------------------- + Highlight Group Default Group Description + ----------------------- ----------------------- ----------------------- + LazyButton CursorLine + + LazyButtonActive Visual + + LazyComment Comment + + LazyCommit @variable.builtin commit ref + + LazyCommitIssue Number + + LazyCommitScope Italic conventional commit + scope + + LazyCommitType Title conventional commit + type + + LazyDimmed Conceal property + + LazyDir @markup.link directory + + LazyH1 IncSearch home button + + LazyH2 Bold titles + + LazyLocal Constant + + LazyNoCond DiagnosticWarn unloaded icon for a + plugin where cond() was + false + + LazyNormal NormalFloat + + LazyProgressDone Constant progress bar done + + LazyProgressTodo LineNr progress bar todo + + LazyProp Conceal property + + LazyReasonCmd Operator + + LazyReasonEvent Constant + + LazyReasonFt Character + + LazyReasonImport Identifier + + LazyReasonKeys Statement + + LazyReasonPlugin Special + + LazyReasonRequire @variable.parameter + + LazyReasonRuntime @macro + + LazyReasonSource Character + + LazyReasonStart @variable.member + + LazySpecial @punctuation.special + + LazyTaskError ErrorMsg task errors + + LazyTaskOutput MsgArea task output + + LazyUrl @markup.link url + + LazyValue @string value of a property + ----------------------------------------------------------------------- + +============================================================================== +7. 🚀 Usage *lazy.nvim-🚀-usage* + + +▶️ STARTUP SEQUENCE *lazy.nvim-🚀-usage-▶️-startup-sequence* + +**lazy.nvim** does **NOT** use Neovim packages and even disables plugin loading +completely (`vim.go.loadplugins = false`). It takes over the complete startup +sequence for more flexibility and better performance. + +In practice this means that step 10 of |Neovim Initialization| is done by Lazy: + +1. All the plugins’ `init()` functions are executed +2. All plugins with `lazy=false` are loaded. This includes sourcing `/plugin` and `/ftdetect` files. (`/after` will not be sourced yet) +3. All files from `/plugin` and `/ftdetect` directories in your rtp are sourced (excluding `/after`) +4. All `/after/plugin` files are sourced (this includes `/after` from plugins) + +Files from runtime directories are always sourced in alphabetical order. + + +🚀 COMMANDS *lazy.nvim-🚀-usage-🚀-commands* + +Plugins are managed with the `:Lazy` command. Open the help with `` to see +all the key mappings. + +You can press `` on a plugin to show its details. Most properties can be +hovered with `` to open links, help files, readmes, git commits and git +issues. + +Lazy can automatically check for updates in the background. This feature can be +enabled with `config.checker.enabled = true`. + +Any operation can be started from the UI, with a sub command or an API +function: + + ---------------------------------------------------------------------------------- + Command Lua Description + ------------------------- -------------------------------- ----------------------- + :Lazy build {plugins} require("lazy").build(opts) Rebuild a plugin + + :Lazy check [plugins] require("lazy").check(opts?) Check for updates and + show the log (git + fetch) + + :Lazy clean [plugins] require("lazy").clean(opts?) Clean plugins that are + no longer needed + + :Lazy clear require("lazy").clear() Clear finished tasks + + :Lazy debug require("lazy").debug() Show debug information + + :Lazy health require("lazy").health() Run :checkhealth lazy + + :Lazy help require("lazy").help() Toggle this help page + + :Lazy home require("lazy").home() Go back to plugin list + + :Lazy install [plugins] require("lazy").install(opts?) Install missing plugins + + :Lazy load {plugins} require("lazy").load(opts) Load a plugin that has + not been loaded yet. + Similar to :packadd. + Like + :Lazy load foo.nvim. + Use :Lazy! load to skip + cond checks. + + :Lazy log [plugins] require("lazy").log(opts?) Show recent updates + + :Lazy profile require("lazy").profile() Show detailed profiling + + :Lazy reload {plugins} require("lazy").reload(opts) Reload a plugin + (experimental!!) + + :Lazy restore [plugins] require("lazy").restore(opts?) Updates all plugins to + the state in the + lockfile. For a single + plugin: restore it to + the state in the + lockfile or to a given + commit under the cursor + + :Lazy sync [plugins] require("lazy").sync(opts?) Run install, clean and + update + + :Lazy update [plugins] require("lazy").update(opts?) Update plugins. This + will also update the + lockfile + ---------------------------------------------------------------------------------- +Any command can have a **bang** to make the command wait till it finished. For +example, if you want to sync lazy from the cmdline, you can use: + +>shell + nvim --headless "+Lazy! sync" +qa +< + +`opts` is a table with the following key-values: + +- **wait**: when true, then the call will wait till the operation completed +- **show**: when false, the UI will not be shown +- **plugins**: a list of plugin names to run the operation on +- **concurrency**: limit the `number` of concurrently running tasks + +Stats API (`require("lazy").stats()`): + +>lua + { + -- startuptime in milliseconds till UIEnter + startuptime = 0, + -- when true, startuptime is the accurate cputime for the Neovim process. (Linux & macOS) + -- this is more accurate than `nvim --startuptime`, and as such will be slightly higher + -- when false, startuptime is calculated based on a delta with a timestamp when lazy started. + real_cputime = false, + count = 0, -- total number of plugins + loaded = 0, -- number of loaded plugins + ---@type table + times = {}, + } +< + +**lazy.nvim** provides a statusline component that you can use to show the +number of pending updates. Make sure to enable `config.checker.enabled = true` +to make this work. + +Example of configuring lualine.nvim ~ + +>lua + require("lualine").setup({ + sections = { + lualine_x = { + { + require("lazy.status").updates, + cond = require("lazy.status").has_updates, + color = { fg = "#ff9e64" }, + }, + }, + }, + }) +< + + +📆 USER EVENTS *lazy.nvim-🚀-usage-📆-user-events* + +The following user events will be triggered: + +- **LazyDone**: when lazy has finished starting up and loaded your config +- **LazySync**: after running sync +- **LazyInstall**: after an install +- **LazyUpdate**: after an update +- **LazyClean**: after a clean +- **LazyCheck**: after checking for updates +- **LazyLog**: after running log +- **LazyLoad**: after loading a plugin. The `data` attribute will contain the plugin name. +- **LazySyncPre**: before running sync +- **LazyInstallPre**: before an install +- **LazyUpdatePre**: before an update +- **LazyCleanPre**: before a clean +- **LazyCheckPre**: before checking for updates +- **LazyLogPre**: before running log +- **LazyReload**: triggered by change detection after reloading plugin specs +- **VeryLazy**: triggered after `LazyDone` and processing `VimEnter` auto commands +- **LazyVimStarted**: triggered after `UIEnter` when `require("lazy").stats().startuptime` has been calculated. + Useful to update the startuptime on your dashboard. + + +❌ UNINSTALLING *lazy.nvim-🚀-usage-❌-uninstalling* + +To uninstall **lazy.nvim**, you need to remove the following files and +directories: + +- **data**: `~/.local/share/nvim/lazy` +- **state**: `~/.local/state/nvim/lazy` +- **lockfile**: `~/.config/nvim/lazy-lock.json` + + + Paths can differ if you changed `XDG` environment variables. + +🔒 LOCKFILE *lazy.nvim-🚀-usage-🔒-lockfile* + +After every **update**, the local lockfile (`lazy-lock.json`) is updated with +the installed revisions. It is recommended to have this file under version +control. + +If you use your Neovim config on multiple machines, using the lockfile, you can +ensure that the same version of every plugin is installed. + +If you are on another machine, you can do `:Lazy restore`, to update all your +plugins to the version from the lockfile. + + +📦 MIGRATION GUIDE *lazy.nvim-🚀-usage-📦-migration-guide* + + +PACKER.NVIM ~ + +- `setup` ➡️ `init` +- `requires` ➡️ `dependencies` +- `as` ➡️ `name` +- `opt` ➡️ `lazy` +- `run` ➡️ `build` +- `lock` ➡️ `pin` +- `disable=true` ➡️ `enabled = false` +- `tag='*'` ➡️ `version="*"` +- `after` is **not needed** for most use-cases. Use `dependencies` otherwise. +- `wants` is **not needed** for most use-cases. Use `dependencies` otherwise. +- `config` don’t support string type, use `fun(LazyPlugin)` instead. +- `module` is auto-loaded. No need to specify +- `keys` spec is |lazy.nvim-different| +- `rtp` can be accomplished with: + +>lua + config = function(plugin) + vim.opt.rtp:append(plugin.dir .. "/custom-rtp") + end +< + +With packer `wants`, `requires` and `after` can be used to manage dependencies. +With lazy, this isn’t needed for most of the Lua dependencies. They can be +installed just like normal plugins (even with `lazy=true`) and will be loaded +when other plugins need them. The `dependencies` key can be used to group those +required plugins with the one that requires them. The plugins which are added +as `dependencies` will always be lazy-loaded and loaded when the plugin is +loaded. + + +PAQ-NVIM ~ + +- `as` ➡️ `name` +- `opt` ➡️ `lazy` +- `run` ➡️ `build` + + +⚡ PROFILING & DEBUG *lazy.nvim-🚀-usage-⚡-profiling-&-debug* + +Great care has been taken to make the startup code (`lazy.core`) as efficient +as possible. During startup, all Lua files used before `VimEnter` or +`BufReadPre` are byte-compiled and cached, similar to what impatient.nvim + does. + +My config for example loads in about `11ms` with `93` plugins. I do a lot of +lazy-loading though :) + +**lazy.nvim** comes with an advanced profiler `:Lazy profile` to help you +improve performance. The profiling view shows you why and how long it took to +load your plugins. + + +🐛 DEBUG ~ + +See an overview of active lazy-loading handlers and what’s in the module +cache. + + +📂 STRUCTURING YOUR PLUGINS*lazy.nvim-🚀-usage-📂-structuring-your-plugins* + +Some users may want to split their plugin specs in multiple files. Instead of +passing a spec table to `setup()`, you can use a Lua module. The specs from the +**module** and any top-level **sub-modules** will be merged together in the +final spec, so it is not needed to add `require` calls in your main plugin file +to the other files. + +The benefits of using this approach: + +- Simple to **add** new plugin specs. Just create a new file in your plugins module. +- Allows for **caching** of all your plugin specs. This becomes important if you have a lot of smaller plugin specs. +- Spec changes will automatically be **reloaded** when they’re updated, so the `:Lazy` UI is always up to date. + +Example: + +- `~/.config/nvim/init.lua` + +>lua + require("lazy").setup("plugins") +< + +- `~/.config/nvim/lua/plugins.lua` or `~/.config/nvim/lua/plugins/init.lua` **(this file is optional)** + +>lua + return { + "folke/neodev.nvim", + "folke/which-key.nvim", + { "folke/neoconf.nvim", cmd = "Neoconf" }, + } +< + +- Any lua file in `~/.config/nvim/lua/plugins/*.lua` will be automatically merged in the main plugin spec + +For a real-life example, you can check LazyVim + and more specifically: + +- lazyvim.plugins contains all the plugin specs that will be loaded + + +↩️ IMPORTING SPECS, CONFIG & OPTS + +As part of a spec, you can add `import` statements to import additional plugin +modules. Both of the `setup()` calls are equivalent: + +>lua + require("lazy").setup("plugins") + + -- Same as: + require("lazy").setup({{import = "plugins"}}) +< + +To import multiple modules from a plugin, add additional specs for each import. +For example, to import LazyVim core plugins and an optional plugin: + +>lua + require("lazy").setup({ + spec = { + { "LazyVim/LazyVim", import = "lazyvim.plugins" }, + { import = "lazyvim.plugins.extras.coding.copilot" }, + } + }) +< + +When you import specs, you can override them by simply adding a spec for the +same plugin to your local specs, adding any keys you want to override / merge. + +`opts`, `dependencies`, `cmd`, `event`, `ft` and `keys` are always merged with +the parent spec. Any other property will override the property from the parent +spec. + + +============================================================================== +8. 🔥 Developers *lazy.nvim-🔥-developers* + +To make it easier for users to install your plugin, you can include a package +spec in your repo. + + +BEST PRACTICES *lazy.nvim-🔥-developers-best-practices* + +- If your plugin needs `setup()`, then create a simple `lazy.lua` file like this: + >lua + return { "me/my-plugin", opts = {} } + < +- Plugins that are pure lua libraries should be lazy-loaded with `lazy = true`. + >lua + { "nvim-lua/plenary.nvim", lazy = true } + < +- Always use `opts` instead of `config` when possible. `config` is almost never + needed. +- Only use `dependencies` if a plugin needs the dep to be installed **AND** + loaded. Lua plugins/libraries are automatically loaded when they are + `require()`d, so they don’t need to be in `dependencies`. +- Inside a `build` function or `*.lua` build file, use + `coroutine.yield(msg:string|LazyMsg)` to show progress. +- Don’t change the `cwd` in your build function, since builds run in parallel + and changing the `cwd` will affect other builds. + + +BUILDING *lazy.nvim-🔥-developers-building* + +The spec **build** property can be one of the following: + +- `fun(plugin: LazyPlugin)`: a function that builds the plugin. +- `*.lua`: a Lua file that builds the plugin (like `build.lua`) +- `":Command"`: a Neovim command +- `"rockspec"`: this will run `luarocks make` in the plugin’s directory + This is automatically set by the `rockspec` package source. +- any other **string** will be run as a shell command +- a `list` of any of the above to run multiple build steps +- if no `build` is specified, but a `build.lua` file exists, that will be used instead. + +Build functions and `*.lua` files run asynchronously in a coroutine. Use +`coroutine.yield(msg:string|LazyMsg)` to show progress. + +Yielding will also schedule the next `coroutine.resume()` to run in the next +tick, so you can do long-running tasks without blocking Neovim. + +>lua + ---@class LazyMsg + ---@field msg string + ---@field level? number vim.log.levels.XXX +< + +Use `vim.log.levels.TRACE` to only show the message as a **status** message for +the task. + + + +MINIT (MINIMAL INIT) *lazy.nvim-🔥-developers-minit-(minimal-init)* + +**lazy.nvim** comes with some built-in functionality to help you create a +minimal init for your plugin. + +I mainly use this for testing and for users to create a `repro.lua`. + +When running in **headless** mode, **lazy.nvim** will log any messages to the +terminal. See `opts.headless` for more info. + +**minit** will install/load all your specs and will always run an update as +well. + + +BOOTSTRAP ~ + +>lua + -- setting this env will override all XDG paths + vim.env.LAZY_STDPATH = ".tests" + -- this will install lazy in your stdpath + load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() +< + + +TESTING WITH BUSTED ~ + +This will add `"lunarmodules/busted"`, configure `hererocks` and run `busted`. + +Below is an example of how I use **minit** to run tests with busted + in **LazyVim**. + +>lua + #!/usr/bin/env -S nvim -l + + vim.env.LAZY_STDPATH = ".tests" + load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() + + -- Setup lazy.nvim + require("lazy.minit").busted({ + spec = { + "LazyVim/starter", + "williamboman/mason-lspconfig.nvim", + "williamboman/mason.nvim", + "nvim-treesitter/nvim-treesitter", + }, + }) +< + +To use this, you can run: + +>sh + nvim -l ./tests/busted.lua tests +< + +If you want to inspect the test environment, run: + +>sh + nvim -u ./tests/busted.lua +< + + +REPRO.LUA ~ + +>lua + vim.env.LAZY_STDPATH = ".repro" + load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() + + require("lazy.minit").repro({ + spec = { + "stevearc/conform.nvim", + "nvim-neotest/nvim-nio", + }, + }) + + -- do anything else you need to do to reproduce the issue +< + +Then run it with: + +>sh + nvim -u repro.lua +< + +============================================================================== +9. Links *lazy.nvim-links* 1. *image*: https://user-images.githubusercontent.com/292349/208301737-68fb279c-ba70-43ef-a369-8c3e8367d6b1.png +2. *image*: https://user-images.githubusercontent.com/292349/208301766-5c400561-83c3-4811-9667-1ec4bb3c43b8.png +3. *image*: https://user-images.githubusercontent.com/292349/208301790-7eedbfa5-d202-4e70-852e-de68aa47233b.png Generated by panvimdoc From c771cf4928d1a1428ac7461658ab2916ed48adf5 Mon Sep 17 00:00:00 2001 From: folke Date: Sun, 7 Jul 2024 06:46:59 +0000 Subject: [PATCH 242/342] chore(build): auto-generate docs --- doc/lazy.nvim.txt | 1398 ++------------------------------------------- 1 file changed, 46 insertions(+), 1352 deletions(-) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index 73bd0ae..b3fad77 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -1,130 +1,61 @@ -*lazy.nvim.txt* A modern plugin manager for Neovim +*lazy.nvim.txt* For Neovim Last change: 2024 July 07 ============================================================================== 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. 📰 What’s new? *lazy.nvim-📰-what’s-new?* + - Features |lazy.nvim-features| + - Requirements |lazy.nvim-requirements| + - Getting Started |lazy.nvim-getting-started| +1. Links |lazy.nvim-links| +Install +· +Configure +· +Docs + + + + + + + + + + + + + + -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 . The GitHub `README.md` - has been updated to point to the new website. The `vimdoc` contains all the - information that is available on the website. -- **Spec Resolution & Merging**: the code that resolves a final spec from a - plugin’s fragments has been rewritten. This should be a tiny bit faster, but - more importantly, fixes some issues and is easier to maintain. -- Packages can now specify their dependencies - and configuration using one of: - - **Lazy**: `lazy.lua` file - - **Rockspec**: luarocks `*-scm-1.rockspec` file - - **Packspec**: `pkg.json` (experimental, since the format is not quite there yet) - Related _lazy.nvim_ options: - >lua - { - pkg = { - enabled = true, - cache = vim.fn.stdpath("state") .. "/lazy/pkg-cache.lua", - -- the first package source that is found for a plugin will be used. - sources = { - "lazy", - "rockspec", -- will only be used when rocks.enabled is true - "packspec", - }, - }, - rocks = { - enabled = true, - root = vim.fn.stdpath("data") .. "/lazy-rocks", - server = "https://nvim-neorocks.github.io/rocks-binaries/", - }, - } - < -- Installing neorg is now as simple as: - >lua - { "nvim-neorg/neorg", opts = {} } - < -- Packages are not limited to just Neovim plugins. You can install any - **luarocks** package, like: - >lua - { "https://github.com/lubyk/yaml" } - < - Luarocks packages without a `/lua` directory are never lazy-loaded, since - it’s just a library. -- `build` functions or `*.lua` build files (like `build.lua`) now run - asynchronously. You can use `coroutine.yield(status_msg)` to show progress. - Yielding will also schedule the next `resume` to run in the next tick, so you - can do long-running tasks without blocking Neovim. -============================================================================== -2. 🚀 Getting Started *lazy.nvim-🚀-getting-started* **lazy.nvim** is a modern plugin manager for Neovim. -✨ FEATURES *lazy.nvim-🚀-getting-started-✨-features* +FEATURES *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 support -- 📈 Statusline component to see the number of pending updates -- 🎨 Automatically lazy-loads colorschemes +- 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 support +- Statusline component to see the number of pending updates +- Automatically lazy-loads colorschemes -⚡️ REQUIREMENTS *lazy.nvim-🚀-getting-started-⚡️-requirements* +REQUIREMENTS *lazy.nvim-requirements* - Neovim >= **0.8.0** (needs to be built with **LuaJIT**) - Git >= **2.19.0** (for partial clones support) @@ -133,1251 +64,14 @@ Table of Contents *lazy.nvim-table-of-contents* You can remove `rockspec` from `opts.pkg.sources` to disable this feature. -============================================================================== -3. 🛠️ Installation *lazy.nvim-🛠️-installation* - -There are multiple ways to install **lazy.nvim**. The **Structured Setup** is -the recommended way, but you can also use the **Single File Setup** if you -prefer to keep everything in your `init.lua`. - -Please refer to the Configuration section for an overview of -all available options. - - - - -STRUCTURED SETUP *lazy.nvim-🛠️-installation-structured-setup* - ->lua - require("config.lazy") -< - ->lua - -- Bootstrap lazy.nvim - local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" - if not (vim.uv or vim.loop).fs_stat(lazypath) then - local lazyrepo = "https://github.com/folke/lazy.nvim.git" - local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) - if vim.v.shell_error ~= 0 then - vim.api.nvim_echo({ - { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, - { out, "WarningMsg" }, - { "\nPress any key to exit..." }, - }, true, {}) - vim.fn.getchar() - os.exit(1) - end - end - vim.opt.rtp:prepend(lazypath) - - -- Make sure to setup `mapleader` and `maplocalleader` before - -- loading lazy.nvim so that mappings are correct. - -- This is also a good place to setup other settings (vim.opt) - vim.g.mapleader = " " - vim.g.maplocalleader = "\\" - - -- Setup lazy.nvim - require("lazy").setup({ - -- highlight-start - spec = { - -- import your plugins - { import = "plugins" }, - }, - -- highlight-end - -- Configure any other settings here. See the documentation for more details. - -- colorscheme that will be used when installing plugins. - install = { colorscheme = { "habamax" } }, - -- automatically check for plugin updates - checker = { enabled = true }, - }) -< - -You can then create your plugin specs in `~/.config/nvim/lua/plugins/`. Each -file should return a table with the plugins you want to install. - -For more info see Structuring Your Plugins - - -SINGLE FILE SETUP *lazy.nvim-🛠️-installation-single-file-setup* - ->lua - -- Bootstrap lazy.nvim - local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" - if not (vim.uv or vim.loop).fs_stat(lazypath) then - local lazyrepo = "https://github.com/folke/lazy.nvim.git" - local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) - if vim.v.shell_error ~= 0 then - vim.api.nvim_echo({ - { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, - { out, "WarningMsg" }, - { "\nPress any key to exit..." }, - }, true, {}) - vim.fn.getchar() - os.exit(1) - end - end - vim.opt.rtp:prepend(lazypath) - - -- Make sure to setup `mapleader` and `maplocalleader` before - -- loading lazy.nvim so that mappings are correct. - -- This is also a good place to setup other settings (vim.opt) - vim.g.mapleader = " " - vim.g.maplocalleader = "\\" - - -- Setup lazy.nvim - require("lazy").setup({ - -- highlight-start - spec = { - -- add your plugins here - }, - -- highlight-end - -- Configure any other settings here. See the documentation for more details. - -- colorscheme that will be used when installing plugins. - install = { colorscheme = { "habamax" } }, - -- automatically check for plugin updates - checker = { enabled = true }, - }) -< +GETTING STARTED *lazy.nvim-getting-started* +Check the documentation website for more information. ============================================================================== -4. 🔌 Plugin Spec *lazy.nvim-🔌-plugin-spec* - - -SPEC SOURCE *lazy.nvim-🔌-plugin-spec-spec-source* - - ----------------------------------------------------------------------------------- - Property Type Description - ---------- ---------- ------------------------------------------------------------- - [1] string? Short plugin url. Will be expanded using - config.git.url_format. Can also be a url or dir. - - dir string? A directory pointing to a local plugin - - url string? A custom git url where the plugin is hosted - - name string? A custom name for the plugin used for the local plugin - directory and as the display name - - dev boolean? When true, a local plugin directory will be used instead. See - config.dev - ----------------------------------------------------------------------------------- -A valid spec should define one of `[1]`, `dir` or `url`. - - -SPEC LOADING *lazy.nvim-🔌-plugin-spec-spec-loading* - - -------------------------------------------------------------------------------------------------- - Property Type Description - -------------- ------------------------- --------------------------------------------------------- - dependencies LazySpec[] A list of plugin names or plugin specs that should be - loaded when the plugin loads. Dependencies are always - lazy-loaded unless specified otherwise. When specifying a - name, make sure the plugin spec has been defined - somewhere else. - - enabled boolean? or fun():boolean When false, or if the function returns false, then this - plugin will not be included in the spec - - cond boolean? or Behaves the same as enabled, but won’t uninstall the - fun(LazyPlugin):boolean plugin when the condition is false. Useful to disable - some plugins in vscode, or firenvim for example. - - priority number? Only useful for start plugins (lazy=false) to force - loading certain plugins first. Default priority is 50. - It’s recommended to set this to a high number for - colorschemes. - -------------------------------------------------------------------------------------------------- - -SPEC SETUP *lazy.nvim-🔌-plugin-spec-spec-setup* - - -------------------------------------------------------------------------------------------------- - Property Type Description - ---------- ----------------------------- --------------------------------------------------------- - init fun(LazyPlugin) init functions are always executed during. Mostly useful - for setting vim.g.* configuration used by Vim plugins - startup - - opts table or opts should be a table (will be merged with parent - fun(LazyPlugin, opts:table) specs), return a table (replaces parent specs) or should - change a table. The table will be passed to the - Plugin.config() function. Setting this value will imply - Plugin.config() - - config fun(LazyPlugin, opts:table) config is executed when the plugin loads. The default - or true implementation will automatically run - require(MAIN).setup(opts) if opts or config = true is - set. Lazy uses several heuristics to determine the - plugin’s MAIN module automatically based on the plugin’s - name. (opts is the recommended way to configure plugins). - - main string? You can specify the main module to use for config() and - opts(), in case it can not be determined automatically. - See config() - - build fun(LazyPlugin) or string or build is executed when a plugin is installed or updated. - false or a list of build See Building for more information. - commands - -------------------------------------------------------------------------------------------------- -Always use `opts` instead of `config` when possible. `config` is almost never -needed. - - - - -SPEC LAZY LOADING *lazy.nvim-🔌-plugin-spec-spec-lazy-loading* - - -------------------------------------------------------------------------------------------------------------------- - Property Type Description - ---------- ---------------------------------------------------------------- ---------------------------------------- - lazy boolean? When true, the plugin will only be - loaded when needed. Lazy-loaded plugins - are automatically loaded when their Lua - modules are required, or when one of the - lazy-loading handlers triggers - - event string? or string[] or Lazy-load on event. Events can be - fun(self:LazyPlugin, event:string[]):string[] or specified as BufEnter or with a pattern - {event:string[]\|string, pattern?:string[]\|string} like BufEnter *.lua - - cmd string? or string[] or Lazy-load on command - fun(self:LazyPlugin, cmd:string[]):string[] - - ft string? or string[] or Lazy-load on filetype - fun(self:LazyPlugin, ft:string[]):string[] - - keys string? or string[] or LazyKeysSpec[] or Lazy-load on key mapping - fun(self:LazyPlugin, keys:string[]):(string \| LazyKeysSpec)[] - -------------------------------------------------------------------------------------------------------------------- -Refer to the Lazy Loading <./lazy_loading.md> section for more information. - - -SPEC VERSIONING *lazy.nvim-🔌-plugin-spec-spec-versioning* - - ------------------------------------------------------------------------------ - Property Type Description - ------------ -------------------- -------------------------------------------- - branch string? Branch of the repository - - tag string? Tag of the repository - - commit string? Commit of the repository - - version string? or false to Version to use from the repository. Full - override the default Semver ranges are supported - - pin boolean? When true, this plugin will not be included - in updates - - submodules boolean? When false, git submodules will not be - fetched. Defaults to true - ------------------------------------------------------------------------------ -Refer to the Versioning <./versioning.md> section for more information. - - -SPEC ADVANCED *lazy.nvim-🔌-plugin-spec-spec-advanced* - - ---------------------------------------------------------------------------------------- - Property Type Description - ---------- ---------- ------------------------------------------------------------------ - optional boolean? When a spec is tagged optional, it will only be included in the - final spec, when the same plugin has been specified at least once - somewhere else without optional. This is mainly useful for Neovim - distros, to allow setting options on plugins that may/may not be - part of the user’s plugins. - - specs LazySpec A list of plugin specs defined in the scope of the plugin. This is - mainly useful for Neovim distros, to allow setting options on - plugins that may/may not be part of the user’s plugins. When the - plugin is disabled, none of the scoped specs will be included in - the final spec. Similar to dependencies without the automatic - loading of the specs. - - module false? Do not automatically load this Lua module when it’s required - somewhere - - import string? Import the given spec module. - ---------------------------------------------------------------------------------------- - -EXAMPLES *lazy.nvim-🔌-plugin-spec-examples* - ->lua - return { - -- the colorscheme should be available when starting Neovim - { - "folke/tokyonight.nvim", - lazy = false, -- make sure we load this during startup if it is your main colorscheme - priority = 1000, -- make sure to load this before all the other start plugins - config = function() - -- load the colorscheme here - vim.cmd([[colorscheme tokyonight]]) - end, - }, - - -- I have a separate config.mappings file where I require which-key. - -- With lazy the plugin will be automatically loaded when it is required somewhere - { "folke/which-key.nvim", lazy = true }, - - { - "nvim-neorg/neorg", - -- lazy-load on filetype - ft = "norg", - -- options for neorg. This will automatically call `require("neorg").setup(opts)` - opts = { - load = { - ["core.defaults"] = {}, - }, - }, - }, - - { - "dstein64/vim-startuptime", - -- lazy-load on a command - cmd = "StartupTime", - -- init is called during startup. Configuration for vim plugins typically should be set in an init function - init = function() - vim.g.startuptime_tries = 10 - end, - }, - - { - "hrsh7th/nvim-cmp", - -- load cmp on InsertEnter - event = "InsertEnter", - -- these dependencies will only be loaded when cmp loads - -- dependencies are always lazy-loaded unless specified otherwise - dependencies = { - "hrsh7th/cmp-nvim-lsp", - "hrsh7th/cmp-buffer", - }, - config = function() - -- ... - end, - }, - - -- if some code requires a module from an unloaded plugin, it will be automatically loaded. - -- So for api plugins like devicons, we can always set lazy=true - { "nvim-tree/nvim-web-devicons", lazy = true }, - - -- you can use the VeryLazy event for things that can - -- load later and are not important for the initial UI - { "stevearc/dressing.nvim", event = "VeryLazy" }, - - { - "Wansmer/treesj", - keys = { - { "J", "TSJToggle", desc = "Join Toggle" }, - }, - opts = { use_default_keymaps = false, max_join_length = 150 }, - }, - - { - "monaqa/dial.nvim", - -- lazy-load on keys - -- mode is `n` by default. For more advanced options, check the section on key mappings - keys = { "", { "", mode = "n" } }, - }, - - -- local plugins need to be explicitly configured with dir - { dir = "~/projects/secret.nvim" }, - - -- you can use a custom url to fetch a plugin - { url = "git@github.com:folke/noice.nvim.git" }, - - -- local plugins can also be configured with the dev option. - -- This will use {config.dev.path}/noice.nvim/ instead of fetching it from GitHub - -- With the dev option, you can easily switch between the local and installed version of a plugin - { "folke/noice.nvim", dev = true }, - } -< - - -LAZY LOADING *lazy.nvim-🔌-plugin-spec-lazy-loading* - -**lazy.nvim** automagically lazy-loads Lua modules. This means that if you have -a plugin `A` that is lazy-loaded and a plugin `B` that requires a module of -plugin `A`, then plugin `A` will be loaded on demand as expected. - - -Additionally, you can also lazy-load on **events**, **commands**, **file -types** and **key mappings**. - -Plugins will be lazy-loaded when one of the following is `true`: - -- The plugin only exists as a dependency in your spec -- It has an `event`, `cmd`, `ft` or `keys` key -- `config.defaults.lazy == true` - - -🌈 COLORSCHEMES ~ - -Colorscheme plugins can be configured with `lazy=true`. The plugin will -automagically load when doing `colorscheme foobar`. - - - -⌨️ LAZY KEY MAPPINGS ~ - -The `keys` property can be a `string` or `string[]` for simple normal-mode -mappings, or it can be a `LazyKeysSpec` table with the following key-value -pairs: - -- **[1]**: (`string`) lhs **(required)** -- **[2]**: (`string|fun()`) rhs **(optional)** -- **mode**: (`string|string[]`) mode **(optional, defaults to "n")** -- **ft**: (`string|string[]`) `filetype` for buffer-local keymaps **(optional)** -- any other option valid for `vim.keymap.set` - -Key mappings will load the plugin the first time they get executed. - -When `[2]` is `nil`, then the real mapping has to be created by the `config()` -function. - ->lua - -- Example for neo-tree.nvim - { - "nvim-neo-tree/neo-tree.nvim", - keys = { - { "ft", "Neotree toggle", desc = "NeoTree" }, - }, - config = function() - require("neo-tree").setup() - end, - } -< - - -VERSIONING *lazy.nvim-🔌-plugin-spec-versioning* - -If you want to install a specific revision of a plugin, you can use `commit`, -`tag`, `branch`, `version`. - -The `version` property supports Semver ranges. - - - -EXAMPLES ~ - -- `*`: latest stable version (this excludes pre-release versions) -- `1.2.x`: any version that starts with `1.2`, such as `1.2.0`, `1.2.3`, etc. -- `^1.2.3`: any version that is compatible with `1.2.3`, such as `1.3.0`, `1.4.5`, etc., but not `2.0.0`. -- `~1.2.3`: any version that is compatible with `1.2.3`, such as `1.2.4`, `1.2.5`, but not `1.3.0`. -- `>1.2.3`: any version that is greater than `1.2.3`, such as `1.3.0`, `1.4.5`, etc. -- `>=1.2.3`: any version that is greater than or equal to `1.2.3`, such as `1.2.3`, `1.3.0`, `1.4.5`, etc. -- `<1.2.3`: any version that is less than `1.2.3`, such as `1.1.0`, `1.0.5`, etc. -- `<=1.2.3`: any version that is less than or equal to `1.2.3`, such as `1.2.3`, `1.1.0`, `1.0.5`, etc - - -============================================================================== -5. 📦 Packages *lazy.nvim-📦-packages* - -**lazy.nvim** supports three ways for plugins to define their dependencies and -configuration. - -- **Lazy**: `lazy.lua` file -- **Rockspec**: luarocks `*-scm-1.rockspec` file -- **Packspec**: `pkg.json` (experimental, since the format is not quite there yet) - -You can enable/disable package sources with `config.pkg.sources` -. The order of sources is important, as the first source that -finds a package will be used. - - - -LAZY *lazy.nvim-📦-packages-lazy* - -Using a `lazy.lua` file is the recommended way to define your plugin -dependencies and configuration. Syntax is the same as any plugin spec. - - -ROCKSPEC *lazy.nvim-📦-packages-rockspec* - -When a plugin contains a `*-1.rockspec` file, **lazy.nvim** will automatically -build the rock and its dependencies. - -A **rockspec** will only be used if one of the following is true: - -- the package does not have a `/lua` directory -- the package has a complex build step -- the package has dependencies (excluding `lua`) - - -PACKSPEC *lazy.nvim-📦-packages-packspec* - -Supports the pkg.json - format, with -a lazy extension in `lazy`. `lazy` can contain any valid lazy spec fields. They -will be added to the plugin’s spec. - - -============================================================================== -6. ⚙️ Configuration *lazy.nvim-⚙️-configuration* - -**lazy.nvim** comes with the following defaults: - ->lua - { - root = vim.fn.stdpath("data") .. "/lazy", -- directory where plugins will be installed - defaults = { - -- Set this to `true` to have all your plugins lazy-loaded by default. - -- Only do this if you know what you are doing, as it can lead to unexpected behavior. - lazy = false, -- should plugins be lazy-loaded? - -- It's recommended to leave version=false for now, since a lot the plugin that support versioning, - -- have outdated releases, which may break your Neovim install. - version = nil, -- always use the latest git commit - -- version = "*", -- try installing the latest stable version for plugins that support semver - -- default `cond` you can use to globally disable a lot of plugins - -- when running inside vscode for example - cond = nil, ---@type boolean|fun(self:LazyPlugin):boolean|nil - }, - -- leave nil when passing the spec as the first argument to setup() - spec = nil, ---@type LazySpec - local_spec = true, -- load project specific .lazy.lua spec files. They will be added at the end of the spec. - lockfile = vim.fn.stdpath("config") .. "/lazy-lock.json", -- lockfile generated after running update. - ---@type number? limit the maximum amount of concurrent tasks - concurrency = jit.os:find("Windows") and (vim.uv.available_parallelism() * 2) or nil, - git = { - -- defaults for the `Lazy log` command - -- log = { "--since=3 days ago" }, -- show commits from the last 3 days - log = { "-8" }, -- show the last 8 commits - timeout = 120, -- kill processes that take more than 2 minutes - url_format = "https://github.com/%s.git", - -- lazy.nvim requires git >=2.19.0. If you really want to use lazy with an older version, - -- then set the below to false. This should work, but is NOT supported and will - -- increase downloads a lot. - filter = true, - }, - pkg = { - enabled = true, - cache = vim.fn.stdpath("state") .. "/lazy/pkg-cache.lua", - versions = true, -- Honor versions in pkg sources - -- the first package source that is found for a plugin will be used. - sources = { - "lazy", - "rockspec", - "packspec", - }, - }, - rocks = { - root = vim.fn.stdpath("data") .. "/lazy-rocks", - server = "https://nvim-neorocks.github.io/rocks-binaries/", - }, - dev = { - ---@type string | fun(plugin: LazyPlugin): string directory where you store your local plugin projects - path = "~/projects", - ---@type string[] plugins that match these patterns will use your local versions instead of being fetched from GitHub - patterns = {}, -- For example {"folke"} - fallback = false, -- Fallback to git when local plugin doesn't exist - }, - install = { - -- install missing plugins on startup. This doesn't increase startup time. - missing = true, - -- try to load one of these colorschemes when starting an installation during startup - colorscheme = { "habamax" }, - }, - ui = { - -- a number <1 is a percentage., >1 is a fixed size - size = { width = 0.8, height = 0.8 }, - wrap = true, -- wrap the lines in the ui - -- The border to use for the UI window. Accepts same border values as |nvim_open_win()|. - border = "none", - -- The backdrop opacity. 0 is fully opaque, 100 is fully transparent. - backdrop = 60, - title = nil, ---@type string only works when border is not "none" - title_pos = "center", ---@type "center" | "left" | "right" - -- Show pills on top of the Lazy window - pills = true, ---@type boolean - icons = { - cmd = " ", - config = "", - event = " ", - favorite = " ", - ft = " ", - init = " ", - import = " ", - keys = " ", - lazy = "󰒲 ", - loaded = "●", - not_loaded = "○", - plugin = " ", - runtime = " ", - require = "󰢱 ", - source = " ", - start = " ", - task = "✔ ", - list = { - "●", - "➜", - "★", - "‒", - }, - }, - -- leave nil, to automatically select a browser depending on your OS. - -- If you want to use a specific browser, you can define it here - browser = nil, ---@type string? - throttle = 20, -- how frequently should the ui process render events - custom_keys = { - -- You can define custom key maps here. If present, the description will - -- be shown in the help menu. - -- To disable one of the defaults, set it to false. - - ["l"] = { - function(plugin) - require("lazy.util").float_term({ "lazygit", "log" }, { - cwd = plugin.dir, - }) - end, - desc = "Open lazygit log", - }, - - ["t"] = { - function(plugin) - require("lazy.util").float_term(nil, { - cwd = plugin.dir, - }) - end, - desc = "Open terminal in plugin dir", - }, - }, - }, - diff = { - -- diff command can be one of: - -- * browser: opens the github compare view. Note that this is always mapped to as well, - -- so you can have a different command for diff - -- * git: will run git diff and open a buffer with filetype git - -- * terminal_git: will open a pseudo terminal with git diff - -- * diffview.nvim: will open Diffview to show the diff - cmd = "git", - }, - checker = { - -- automatically check for plugin updates - enabled = false, - concurrency = nil, ---@type number? set to 1 to check for updates very slowly - notify = true, -- get a notification when new updates are found - frequency = 3600, -- check for updates every hour - check_pinned = false, -- check for pinned packages that can't be updated - }, - change_detection = { - -- automatically check for config file changes and reload the ui - enabled = true, - notify = true, -- get a notification when changes are found - }, - performance = { - cache = { - enabled = true, - }, - reset_packpath = true, -- reset the package path to improve startup time - rtp = { - reset = true, -- reset the runtime path to $VIMRUNTIME and your config directory - ---@type string[] - paths = {}, -- add any custom paths here that you want to includes in the rtp - ---@type string[] list any plugins you want to disable here - disabled_plugins = { - -- "gzip", - -- "matchit", - -- "matchparen", - -- "netrwPlugin", - -- "tarPlugin", - -- "tohtml", - -- "tutor", - -- "zipPlugin", - }, - }, - }, - -- lazy can generate helptags from the headings in markdown readme files, - -- so :help works even for plugins that don't have vim docs. - -- when the readme opens with :help it will be correctly displayed as markdown - readme = { - enabled = true, - root = vim.fn.stdpath("state") .. "/lazy/readme", - files = { "README.md", "lua/**/README.md" }, - -- only generate markdown helptags for plugins that dont have docs - skip_if_doc_exists = true, - }, - state = vim.fn.stdpath("state") .. "/lazy/state.json", -- state info for checker and other things - -- Enable profiling of lazy.nvim. This will add some overhead, - -- so only enable this when you are debugging lazy.nvim - profiling = { - -- Enables extra stats on the debug tab related to the loader cache. - -- Additionally gathers stats about all package.loaders - loader = false, - -- Track each new require in the Lazy profiling tab - require = false, - }, - } -< - -If you don’t want to use a Nerd Font, you can replace the icons with Unicode symbols. ~ - ->lua - { - ui = { - icons = { - cmd = "⌘", - config = "🛠", - event = "📅", - ft = "📂", - init = "⚙", - keys = "🗝", - plugin = "🔌", - runtime = "💻", - require = "🌙", - source = "📄", - start = "🚀", - task = "📌", - lazy = "💤 ", - }, - }, - } -< - - -🌈 HIGHLIGHT GROUPS *lazy.nvim-⚙️-configuration-🌈-highlight-groups* - - ----------------------------------------------------------------------- - Highlight Group Default Group Description - ----------------------- ----------------------- ----------------------- - LazyButton CursorLine - - LazyButtonActive Visual - - LazyComment Comment - - LazyCommit @variable.builtin commit ref - - LazyCommitIssue Number - - LazyCommitScope Italic conventional commit - scope - - LazyCommitType Title conventional commit - type - - LazyDimmed Conceal property - - LazyDir @markup.link directory - - LazyH1 IncSearch home button - - LazyH2 Bold titles - - LazyLocal Constant - - LazyNoCond DiagnosticWarn unloaded icon for a - plugin where cond() was - false - - LazyNormal NormalFloat - - LazyProgressDone Constant progress bar done - - LazyProgressTodo LineNr progress bar todo - - LazyProp Conceal property - - LazyReasonCmd Operator - - LazyReasonEvent Constant - - LazyReasonFt Character - - LazyReasonImport Identifier - - LazyReasonKeys Statement - - LazyReasonPlugin Special - - LazyReasonRequire @variable.parameter - - LazyReasonRuntime @macro - - LazyReasonSource Character - - LazyReasonStart @variable.member - - LazySpecial @punctuation.special - - LazyTaskError ErrorMsg task errors - - LazyTaskOutput MsgArea task output - - LazyUrl @markup.link url - - LazyValue @string value of a property - ----------------------------------------------------------------------- - -============================================================================== -7. 🚀 Usage *lazy.nvim-🚀-usage* - - -▶️ STARTUP SEQUENCE *lazy.nvim-🚀-usage-▶️-startup-sequence* - -**lazy.nvim** does **NOT** use Neovim packages and even disables plugin loading -completely (`vim.go.loadplugins = false`). It takes over the complete startup -sequence for more flexibility and better performance. - -In practice this means that step 10 of |Neovim Initialization| is done by Lazy: - -1. All the plugins’ `init()` functions are executed -2. All plugins with `lazy=false` are loaded. This includes sourcing `/plugin` and `/ftdetect` files. (`/after` will not be sourced yet) -3. All files from `/plugin` and `/ftdetect` directories in your rtp are sourced (excluding `/after`) -4. All `/after/plugin` files are sourced (this includes `/after` from plugins) - -Files from runtime directories are always sourced in alphabetical order. - - -🚀 COMMANDS *lazy.nvim-🚀-usage-🚀-commands* - -Plugins are managed with the `:Lazy` command. Open the help with `` to see -all the key mappings. - -You can press `` on a plugin to show its details. Most properties can be -hovered with `` to open links, help files, readmes, git commits and git -issues. - -Lazy can automatically check for updates in the background. This feature can be -enabled with `config.checker.enabled = true`. - -Any operation can be started from the UI, with a sub command or an API -function: - - ---------------------------------------------------------------------------------- - Command Lua Description - ------------------------- -------------------------------- ----------------------- - :Lazy build {plugins} require("lazy").build(opts) Rebuild a plugin - - :Lazy check [plugins] require("lazy").check(opts?) Check for updates and - show the log (git - fetch) - - :Lazy clean [plugins] require("lazy").clean(opts?) Clean plugins that are - no longer needed - - :Lazy clear require("lazy").clear() Clear finished tasks - - :Lazy debug require("lazy").debug() Show debug information - - :Lazy health require("lazy").health() Run :checkhealth lazy - - :Lazy help require("lazy").help() Toggle this help page - - :Lazy home require("lazy").home() Go back to plugin list - - :Lazy install [plugins] require("lazy").install(opts?) Install missing plugins - - :Lazy load {plugins} require("lazy").load(opts) Load a plugin that has - not been loaded yet. - Similar to :packadd. - Like - :Lazy load foo.nvim. - Use :Lazy! load to skip - cond checks. - - :Lazy log [plugins] require("lazy").log(opts?) Show recent updates - - :Lazy profile require("lazy").profile() Show detailed profiling - - :Lazy reload {plugins} require("lazy").reload(opts) Reload a plugin - (experimental!!) - - :Lazy restore [plugins] require("lazy").restore(opts?) Updates all plugins to - the state in the - lockfile. For a single - plugin: restore it to - the state in the - lockfile or to a given - commit under the cursor - - :Lazy sync [plugins] require("lazy").sync(opts?) Run install, clean and - update - - :Lazy update [plugins] require("lazy").update(opts?) Update plugins. This - will also update the - lockfile - ---------------------------------------------------------------------------------- -Any command can have a **bang** to make the command wait till it finished. For -example, if you want to sync lazy from the cmdline, you can use: - ->shell - nvim --headless "+Lazy! sync" +qa -< - -`opts` is a table with the following key-values: - -- **wait**: when true, then the call will wait till the operation completed -- **show**: when false, the UI will not be shown -- **plugins**: a list of plugin names to run the operation on -- **concurrency**: limit the `number` of concurrently running tasks - -Stats API (`require("lazy").stats()`): - ->lua - { - -- startuptime in milliseconds till UIEnter - startuptime = 0, - -- when true, startuptime is the accurate cputime for the Neovim process. (Linux & macOS) - -- this is more accurate than `nvim --startuptime`, and as such will be slightly higher - -- when false, startuptime is calculated based on a delta with a timestamp when lazy started. - real_cputime = false, - count = 0, -- total number of plugins - loaded = 0, -- number of loaded plugins - ---@type table - times = {}, - } -< - -**lazy.nvim** provides a statusline component that you can use to show the -number of pending updates. Make sure to enable `config.checker.enabled = true` -to make this work. - -Example of configuring lualine.nvim ~ - ->lua - require("lualine").setup({ - sections = { - lualine_x = { - { - require("lazy.status").updates, - cond = require("lazy.status").has_updates, - color = { fg = "#ff9e64" }, - }, - }, - }, - }) -< - - -📆 USER EVENTS *lazy.nvim-🚀-usage-📆-user-events* - -The following user events will be triggered: - -- **LazyDone**: when lazy has finished starting up and loaded your config -- **LazySync**: after running sync -- **LazyInstall**: after an install -- **LazyUpdate**: after an update -- **LazyClean**: after a clean -- **LazyCheck**: after checking for updates -- **LazyLog**: after running log -- **LazyLoad**: after loading a plugin. The `data` attribute will contain the plugin name. -- **LazySyncPre**: before running sync -- **LazyInstallPre**: before an install -- **LazyUpdatePre**: before an update -- **LazyCleanPre**: before a clean -- **LazyCheckPre**: before checking for updates -- **LazyLogPre**: before running log -- **LazyReload**: triggered by change detection after reloading plugin specs -- **VeryLazy**: triggered after `LazyDone` and processing `VimEnter` auto commands -- **LazyVimStarted**: triggered after `UIEnter` when `require("lazy").stats().startuptime` has been calculated. - Useful to update the startuptime on your dashboard. - - -❌ UNINSTALLING *lazy.nvim-🚀-usage-❌-uninstalling* - -To uninstall **lazy.nvim**, you need to remove the following files and -directories: - -- **data**: `~/.local/share/nvim/lazy` -- **state**: `~/.local/state/nvim/lazy` -- **lockfile**: `~/.config/nvim/lazy-lock.json` - - - Paths can differ if you changed `XDG` environment variables. - -🔒 LOCKFILE *lazy.nvim-🚀-usage-🔒-lockfile* - -After every **update**, the local lockfile (`lazy-lock.json`) is updated with -the installed revisions. It is recommended to have this file under version -control. - -If you use your Neovim config on multiple machines, using the lockfile, you can -ensure that the same version of every plugin is installed. - -If you are on another machine, you can do `:Lazy restore`, to update all your -plugins to the version from the lockfile. - - -📦 MIGRATION GUIDE *lazy.nvim-🚀-usage-📦-migration-guide* - - -PACKER.NVIM ~ - -- `setup` ➡️ `init` -- `requires` ➡️ `dependencies` -- `as` ➡️ `name` -- `opt` ➡️ `lazy` -- `run` ➡️ `build` -- `lock` ➡️ `pin` -- `disable=true` ➡️ `enabled = false` -- `tag='*'` ➡️ `version="*"` -- `after` is **not needed** for most use-cases. Use `dependencies` otherwise. -- `wants` is **not needed** for most use-cases. Use `dependencies` otherwise. -- `config` don’t support string type, use `fun(LazyPlugin)` instead. -- `module` is auto-loaded. No need to specify -- `keys` spec is |lazy.nvim-different| -- `rtp` can be accomplished with: - ->lua - config = function(plugin) - vim.opt.rtp:append(plugin.dir .. "/custom-rtp") - end -< - -With packer `wants`, `requires` and `after` can be used to manage dependencies. -With lazy, this isn’t needed for most of the Lua dependencies. They can be -installed just like normal plugins (even with `lazy=true`) and will be loaded -when other plugins need them. The `dependencies` key can be used to group those -required plugins with the one that requires them. The plugins which are added -as `dependencies` will always be lazy-loaded and loaded when the plugin is -loaded. - - -PAQ-NVIM ~ - -- `as` ➡️ `name` -- `opt` ➡️ `lazy` -- `run` ➡️ `build` - - -⚡ PROFILING & DEBUG *lazy.nvim-🚀-usage-⚡-profiling-&-debug* - -Great care has been taken to make the startup code (`lazy.core`) as efficient -as possible. During startup, all Lua files used before `VimEnter` or -`BufReadPre` are byte-compiled and cached, similar to what impatient.nvim - does. - -My config for example loads in about `11ms` with `93` plugins. I do a lot of -lazy-loading though :) - -**lazy.nvim** comes with an advanced profiler `:Lazy profile` to help you -improve performance. The profiling view shows you why and how long it took to -load your plugins. - - -🐛 DEBUG ~ - -See an overview of active lazy-loading handlers and what’s in the module -cache. - - -📂 STRUCTURING YOUR PLUGINS*lazy.nvim-🚀-usage-📂-structuring-your-plugins* - -Some users may want to split their plugin specs in multiple files. Instead of -passing a spec table to `setup()`, you can use a Lua module. The specs from the -**module** and any top-level **sub-modules** will be merged together in the -final spec, so it is not needed to add `require` calls in your main plugin file -to the other files. - -The benefits of using this approach: - -- Simple to **add** new plugin specs. Just create a new file in your plugins module. -- Allows for **caching** of all your plugin specs. This becomes important if you have a lot of smaller plugin specs. -- Spec changes will automatically be **reloaded** when they’re updated, so the `:Lazy` UI is always up to date. - -Example: - -- `~/.config/nvim/init.lua` - ->lua - require("lazy").setup("plugins") -< - -- `~/.config/nvim/lua/plugins.lua` or `~/.config/nvim/lua/plugins/init.lua` **(this file is optional)** - ->lua - return { - "folke/neodev.nvim", - "folke/which-key.nvim", - { "folke/neoconf.nvim", cmd = "Neoconf" }, - } -< - -- Any lua file in `~/.config/nvim/lua/plugins/*.lua` will be automatically merged in the main plugin spec - -For a real-life example, you can check LazyVim - and more specifically: - -- lazyvim.plugins contains all the plugin specs that will be loaded - - -↩️ IMPORTING SPECS, CONFIG & OPTS - -As part of a spec, you can add `import` statements to import additional plugin -modules. Both of the `setup()` calls are equivalent: - ->lua - require("lazy").setup("plugins") - - -- Same as: - require("lazy").setup({{import = "plugins"}}) -< - -To import multiple modules from a plugin, add additional specs for each import. -For example, to import LazyVim core plugins and an optional plugin: - ->lua - require("lazy").setup({ - spec = { - { "LazyVim/LazyVim", import = "lazyvim.plugins" }, - { import = "lazyvim.plugins.extras.coding.copilot" }, - } - }) -< - -When you import specs, you can override them by simply adding a spec for the -same plugin to your local specs, adding any keys you want to override / merge. - -`opts`, `dependencies`, `cmd`, `event`, `ft` and `keys` are always merged with -the parent spec. Any other property will override the property from the parent -spec. - - -============================================================================== -8. 🔥 Developers *lazy.nvim-🔥-developers* - -To make it easier for users to install your plugin, you can include a package -spec in your repo. - - -BEST PRACTICES *lazy.nvim-🔥-developers-best-practices* - -- If your plugin needs `setup()`, then create a simple `lazy.lua` file like this: - >lua - return { "me/my-plugin", opts = {} } - < -- Plugins that are pure lua libraries should be lazy-loaded with `lazy = true`. - >lua - { "nvim-lua/plenary.nvim", lazy = true } - < -- Always use `opts` instead of `config` when possible. `config` is almost never - needed. -- Only use `dependencies` if a plugin needs the dep to be installed **AND** - loaded. Lua plugins/libraries are automatically loaded when they are - `require()`d, so they don’t need to be in `dependencies`. -- Inside a `build` function or `*.lua` build file, use - `coroutine.yield(msg:string|LazyMsg)` to show progress. -- Don’t change the `cwd` in your build function, since builds run in parallel - and changing the `cwd` will affect other builds. - - -BUILDING *lazy.nvim-🔥-developers-building* - -The spec **build** property can be one of the following: - -- `fun(plugin: LazyPlugin)`: a function that builds the plugin. -- `*.lua`: a Lua file that builds the plugin (like `build.lua`) -- `":Command"`: a Neovim command -- `"rockspec"`: this will run `luarocks make` in the plugin’s directory - This is automatically set by the `rockspec` package source. -- any other **string** will be run as a shell command -- a `list` of any of the above to run multiple build steps -- if no `build` is specified, but a `build.lua` file exists, that will be used instead. - -Build functions and `*.lua` files run asynchronously in a coroutine. Use -`coroutine.yield(msg:string|LazyMsg)` to show progress. - -Yielding will also schedule the next `coroutine.resume()` to run in the next -tick, so you can do long-running tasks without blocking Neovim. - ->lua - ---@class LazyMsg - ---@field msg string - ---@field level? number vim.log.levels.XXX -< - -Use `vim.log.levels.TRACE` to only show the message as a **status** message for -the task. - - - -MINIT (MINIMAL INIT) *lazy.nvim-🔥-developers-minit-(minimal-init)* - -**lazy.nvim** comes with some built-in functionality to help you create a -minimal init for your plugin. - -I mainly use this for testing and for users to create a `repro.lua`. - -When running in **headless** mode, **lazy.nvim** will log any messages to the -terminal. See `opts.headless` for more info. - -**minit** will install/load all your specs and will always run an update as -well. - - -BOOTSTRAP ~ - ->lua - -- setting this env will override all XDG paths - vim.env.LAZY_STDPATH = ".tests" - -- this will install lazy in your stdpath - load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() -< - - -TESTING WITH BUSTED ~ - -This will add `"lunarmodules/busted"`, configure `hererocks` and run `busted`. - -Below is an example of how I use **minit** to run tests with busted - in **LazyVim**. - ->lua - #!/usr/bin/env -S nvim -l - - vim.env.LAZY_STDPATH = ".tests" - load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() - - -- Setup lazy.nvim - require("lazy.minit").busted({ - spec = { - "LazyVim/starter", - "williamboman/mason-lspconfig.nvim", - "williamboman/mason.nvim", - "nvim-treesitter/nvim-treesitter", - }, - }) -< - -To use this, you can run: - ->sh - nvim -l ./tests/busted.lua tests -< - -If you want to inspect the test environment, run: - ->sh - nvim -u ./tests/busted.lua -< - - -REPRO.LUA ~ - ->lua - vim.env.LAZY_STDPATH = ".repro" - load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() - - require("lazy.minit").repro({ - spec = { - "stevearc/conform.nvim", - "nvim-neotest/nvim-nio", - }, - }) - - -- do anything else you need to do to reproduce the issue -< - -Then run it with: - ->sh - nvim -u repro.lua -< - -============================================================================== -9. Links *lazy.nvim-links* +1. Links *lazy.nvim-links* 1. *image*: https://user-images.githubusercontent.com/292349/208301737-68fb279c-ba70-43ef-a369-8c3e8367d6b1.png -2. *image*: https://user-images.githubusercontent.com/292349/208301766-5c400561-83c3-4811-9667-1ec4bb3c43b8.png -3. *image*: https://user-images.githubusercontent.com/292349/208301790-7eedbfa5-d202-4e70-852e-de68aa47233b.png Generated by panvimdoc From 72c0dc9462ab3bf1a68198afabc1eb4e2940d299 Mon Sep 17 00:00:00 2001 From: Andre Toerien Date: Sun, 7 Jul 2024 17:13:49 +0200 Subject: [PATCH 243/342] fix(git): local plugin fixes (#1624) ## Description As I described in https://github.com/folke/lazy.nvim/pull/1512#issuecomment-2212474372, this makes it so that local plugins will only show as needing updates if the local branch is behind the upstream branch. This is done by checking the output of the `git log` command, and only setting `plugin._.updates` if the output is not empty. This seems to solve my issue where local plugins with unpushed changes always show as needing updates, but if there's a easier/better way of doing it then please feel free to edit/close this. Or if you don't agree that the current behaviour is a bug, then that's also fine - it's not a big deal and I can easily just ignore the "updates available" notice. I also came across a minor issue where the plugin diff view (press `d`) compares the wrong commits for local plugins, because [lua/lazy/view/init.lua](https://github.com/folke/lazy.nvim/blob/c771cf4928d1a1428ac7461658ab2916ed48adf5/lua/lazy/view/init.lua#L268) always uses `get_target`. I fixed this by moving `get_local_target` into `get_target` - I think this is simpler and more straightforward than the alternative of adding a ternary everywhere `get_target` is called. This second bugfix is a very small change, so I've just included it here, but I'm happy to make a second PR if you'd like. ## Related Issue(s) Related PR: #1512 --- lua/lazy/manage/checker.lua | 4 +++- lua/lazy/manage/git.lua | 15 ++++++--------- lua/lazy/manage/task/git.lua | 30 +++++++++++++++++++++--------- 3 files changed, 30 insertions(+), 19 deletions(-) diff --git a/lua/lazy/manage/checker.lua b/lua/lazy/manage/checker.lua index 8e03d9e..6efc5a7 100644 --- a/lua/lazy/manage/checker.lua +++ b/lua/lazy/manage/checker.lua @@ -35,7 +35,9 @@ end function M.fast_check(opts) opts = opts or {} for _, plugin in pairs(Config.plugins) do - if not plugin.pin and not plugin.dev and plugin._.installed then + -- don't check local plugins here, since we mark them as needing updates + -- only if local is behind upstream (if the git log task gives no output) + if plugin._.installed and not (plugin.pin or plugin._.is_local) then plugin._.updates = nil local info = Git.info(plugin.dir) local ok, target = pcall(Git.get_target, plugin) diff --git a/lua/lazy/manage/git.lua b/lua/lazy/manage/git.lua index 201e4e7..ef68cc7 100644 --- a/lua/lazy/manage/git.lua +++ b/lua/lazy/manage/git.lua @@ -116,6 +116,12 @@ end ---@param plugin LazyPlugin ---@return GitInfo? function M.get_target(plugin) + if plugin._.is_local then + local info = M.info(plugin.dir) + local branch = assert(info and info.branch or M.get_branch(plugin)) + return { branch = branch, commit = M.get_commit(plugin.dir, branch, true) } + end + local branch = assert(M.get_branch(plugin)) if plugin.commit then @@ -144,15 +150,6 @@ function M.get_target(plugin) } end end - ---@diagnostic disable-next-line: return-type-mismatch - return { branch = branch, commit = M.get_commit(plugin.dir, branch, true) } -end - ----@param plugin LazyPlugin ----@return GitInfo? -function M.get_local_target(plugin) - local info = M.info(plugin.dir) - local branch = assert(info and info.branch or M.get_branch(plugin)) return { branch = branch, commit = M.get_commit(plugin.dir, branch, true) } end diff --git a/lua/lazy/manage/task/git.lua b/lua/lazy/manage/task/git.lua index 8e0ef48..9425fec 100644 --- a/lua/lazy/manage/task/git.lua +++ b/lua/lazy/manage/task/git.lua @@ -32,11 +32,13 @@ M.log = { "--no-show-signature", } + local info, target + if opts.updated then table.insert(args, self.plugin._.updated.from .. ".." .. (self.plugin._.updated.to or "HEAD")) elseif opts.check then - local info = assert(Git.info(self.plugin.dir)) - local target = assert(self.plugin._.is_local and Git.get_local_target(self.plugin) or Git.get_target(self.plugin)) + info = assert(Git.info(self.plugin.dir)) + target = assert(Git.get_target(self.plugin)) if not target.commit then for k, v in pairs(target) do error(k .. " '" .. v .. "' not found") @@ -44,15 +46,17 @@ M.log = { error("no target commit found") end assert(target.commit, self.plugin.name .. " " .. target.branch) - if Git.eq(info, target) then - if Config.options.checker.check_pinned then - local last_commit = Git.get_commit(self.plugin.dir, target.branch, true) - if not Git.eq(info, { commit = last_commit }) then - self.plugin._.outdated = true + if not self.plugin._.is_local then + if Git.eq(info, target) then + if Config.options.checker.check_pinned then + local last_commit = Git.get_commit(self.plugin.dir, target.branch, true) + if not Git.eq(info, { commit = last_commit }) then + self.plugin._.outdated = true + end end + else + self.plugin._.updates = { from = info, to = target } end - else - self.plugin._.updates = { from = info, to = target } end table.insert(args, info.commit .. ".." .. target.commit) else @@ -63,6 +67,14 @@ M.log = { args = args, cwd = self.plugin.dir, }) + + -- for local plugins, mark as needing updates only if local is + -- behind upstream, i.e. if git log gave no output + if opts.check and self.plugin._.is_local then + if not vim.tbl_isempty(self:get_log()) then + self.plugin._.updates = { from = info, to = target } + end + end end, } From 93c9a3f872153247cef14f095d2d037b7c93704f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 7 Jul 2024 15:14:44 +0000 Subject: [PATCH 244/342] chore(build): auto-generate docs --- doc/lazy.nvim.txt | 1398 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 1352 insertions(+), 46 deletions(-) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index b3fad77..73bd0ae 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -1,61 +1,130 @@ -*lazy.nvim.txt* For Neovim Last change: 2024 July 07 +*lazy.nvim.txt* A modern plugin manager for Neovim ============================================================================== Table of Contents *lazy.nvim-table-of-contents* - - Features |lazy.nvim-features| - - Requirements |lazy.nvim-requirements| - - Getting Started |lazy.nvim-getting-started| -1. Links |lazy.nvim-links| -Install -· -Configure -· -Docs - - - - - - - - - - - - - - +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. 📰 What’s new? *lazy.nvim-📰-what’s-new?* +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 . The GitHub `README.md` + has been updated to point to the new website. The `vimdoc` contains all the + information that is available on the website. +- **Spec Resolution & Merging**: the code that resolves a final spec from a + plugin’s fragments has been rewritten. This should be a tiny bit faster, but + more importantly, fixes some issues and is easier to maintain. +- Packages can now specify their dependencies + and configuration using one of: + - **Lazy**: `lazy.lua` file + - **Rockspec**: luarocks `*-scm-1.rockspec` file + - **Packspec**: `pkg.json` (experimental, since the format is not quite there yet) + Related _lazy.nvim_ options: + >lua + { + pkg = { + enabled = true, + cache = vim.fn.stdpath("state") .. "/lazy/pkg-cache.lua", + -- the first package source that is found for a plugin will be used. + sources = { + "lazy", + "rockspec", -- will only be used when rocks.enabled is true + "packspec", + }, + }, + rocks = { + enabled = true, + root = vim.fn.stdpath("data") .. "/lazy-rocks", + server = "https://nvim-neorocks.github.io/rocks-binaries/", + }, + } + < +- Installing neorg is now as simple as: + >lua + { "nvim-neorg/neorg", opts = {} } + < +- Packages are not limited to just Neovim plugins. You can install any + **luarocks** package, like: + >lua + { "https://github.com/lubyk/yaml" } + < + Luarocks packages without a `/lua` directory are never lazy-loaded, since + it’s just a library. +- `build` functions or `*.lua` build files (like `build.lua`) now run + asynchronously. You can use `coroutine.yield(status_msg)` to show progress. + Yielding will also schedule the next `resume` to run in the next tick, so you + can do long-running tasks without blocking Neovim. +============================================================================== +2. 🚀 Getting Started *lazy.nvim-🚀-getting-started* **lazy.nvim** is a modern plugin manager for Neovim. -FEATURES *lazy.nvim-features* +✨ FEATURES *lazy.nvim-🚀-getting-started-✨-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 support -- Statusline component to see the number of pending updates -- Automatically lazy-loads colorschemes +- 📦 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 support +- 📈 Statusline component to see the number of pending updates +- 🎨 Automatically lazy-loads colorschemes -REQUIREMENTS *lazy.nvim-requirements* +⚡️ REQUIREMENTS *lazy.nvim-🚀-getting-started-⚡️-requirements* - Neovim >= **0.8.0** (needs to be built with **LuaJIT**) - Git >= **2.19.0** (for partial clones support) @@ -64,14 +133,1251 @@ REQUIREMENTS *lazy.nvim-requirements* You can remove `rockspec` from `opts.pkg.sources` to disable this feature. -GETTING STARTED *lazy.nvim-getting-started* +============================================================================== +3. 🛠️ Installation *lazy.nvim-🛠️-installation* + +There are multiple ways to install **lazy.nvim**. The **Structured Setup** is +the recommended way, but you can also use the **Single File Setup** if you +prefer to keep everything in your `init.lua`. + +Please refer to the Configuration section for an overview of +all available options. + + + + +STRUCTURED SETUP *lazy.nvim-🛠️-installation-structured-setup* + +>lua + require("config.lazy") +< + +>lua + -- Bootstrap lazy.nvim + local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" + if not (vim.uv or vim.loop).fs_stat(lazypath) then + local lazyrepo = "https://github.com/folke/lazy.nvim.git" + local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) + if vim.v.shell_error ~= 0 then + vim.api.nvim_echo({ + { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, + { out, "WarningMsg" }, + { "\nPress any key to exit..." }, + }, true, {}) + vim.fn.getchar() + os.exit(1) + end + end + vim.opt.rtp:prepend(lazypath) + + -- Make sure to setup `mapleader` and `maplocalleader` before + -- loading lazy.nvim so that mappings are correct. + -- This is also a good place to setup other settings (vim.opt) + vim.g.mapleader = " " + vim.g.maplocalleader = "\\" + + -- Setup lazy.nvim + require("lazy").setup({ + -- highlight-start + spec = { + -- import your plugins + { import = "plugins" }, + }, + -- highlight-end + -- Configure any other settings here. See the documentation for more details. + -- colorscheme that will be used when installing plugins. + install = { colorscheme = { "habamax" } }, + -- automatically check for plugin updates + checker = { enabled = true }, + }) +< + +You can then create your plugin specs in `~/.config/nvim/lua/plugins/`. Each +file should return a table with the plugins you want to install. + +For more info see Structuring Your Plugins + + +SINGLE FILE SETUP *lazy.nvim-🛠️-installation-single-file-setup* + +>lua + -- Bootstrap lazy.nvim + local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" + if not (vim.uv or vim.loop).fs_stat(lazypath) then + local lazyrepo = "https://github.com/folke/lazy.nvim.git" + local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) + if vim.v.shell_error ~= 0 then + vim.api.nvim_echo({ + { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, + { out, "WarningMsg" }, + { "\nPress any key to exit..." }, + }, true, {}) + vim.fn.getchar() + os.exit(1) + end + end + vim.opt.rtp:prepend(lazypath) + + -- Make sure to setup `mapleader` and `maplocalleader` before + -- loading lazy.nvim so that mappings are correct. + -- This is also a good place to setup other settings (vim.opt) + vim.g.mapleader = " " + vim.g.maplocalleader = "\\" + + -- Setup lazy.nvim + require("lazy").setup({ + -- highlight-start + spec = { + -- add your plugins here + }, + -- highlight-end + -- Configure any other settings here. See the documentation for more details. + -- colorscheme that will be used when installing plugins. + install = { colorscheme = { "habamax" } }, + -- automatically check for plugin updates + checker = { enabled = true }, + }) +< -Check the documentation website for more information. ============================================================================== -1. Links *lazy.nvim-links* +4. 🔌 Plugin Spec *lazy.nvim-🔌-plugin-spec* + + +SPEC SOURCE *lazy.nvim-🔌-plugin-spec-spec-source* + + ----------------------------------------------------------------------------------- + Property Type Description + ---------- ---------- ------------------------------------------------------------- + [1] string? Short plugin url. Will be expanded using + config.git.url_format. Can also be a url or dir. + + dir string? A directory pointing to a local plugin + + url string? A custom git url where the plugin is hosted + + name string? A custom name for the plugin used for the local plugin + directory and as the display name + + dev boolean? When true, a local plugin directory will be used instead. See + config.dev + ----------------------------------------------------------------------------------- +A valid spec should define one of `[1]`, `dir` or `url`. + + +SPEC LOADING *lazy.nvim-🔌-plugin-spec-spec-loading* + + -------------------------------------------------------------------------------------------------- + Property Type Description + -------------- ------------------------- --------------------------------------------------------- + dependencies LazySpec[] A list of plugin names or plugin specs that should be + loaded when the plugin loads. Dependencies are always + lazy-loaded unless specified otherwise. When specifying a + name, make sure the plugin spec has been defined + somewhere else. + + enabled boolean? or fun():boolean When false, or if the function returns false, then this + plugin will not be included in the spec + + cond boolean? or Behaves the same as enabled, but won’t uninstall the + fun(LazyPlugin):boolean plugin when the condition is false. Useful to disable + some plugins in vscode, or firenvim for example. + + priority number? Only useful for start plugins (lazy=false) to force + loading certain plugins first. Default priority is 50. + It’s recommended to set this to a high number for + colorschemes. + -------------------------------------------------------------------------------------------------- + +SPEC SETUP *lazy.nvim-🔌-plugin-spec-spec-setup* + + -------------------------------------------------------------------------------------------------- + Property Type Description + ---------- ----------------------------- --------------------------------------------------------- + init fun(LazyPlugin) init functions are always executed during. Mostly useful + for setting vim.g.* configuration used by Vim plugins + startup + + opts table or opts should be a table (will be merged with parent + fun(LazyPlugin, opts:table) specs), return a table (replaces parent specs) or should + change a table. The table will be passed to the + Plugin.config() function. Setting this value will imply + Plugin.config() + + config fun(LazyPlugin, opts:table) config is executed when the plugin loads. The default + or true implementation will automatically run + require(MAIN).setup(opts) if opts or config = true is + set. Lazy uses several heuristics to determine the + plugin’s MAIN module automatically based on the plugin’s + name. (opts is the recommended way to configure plugins). + + main string? You can specify the main module to use for config() and + opts(), in case it can not be determined automatically. + See config() + + build fun(LazyPlugin) or string or build is executed when a plugin is installed or updated. + false or a list of build See Building for more information. + commands + -------------------------------------------------------------------------------------------------- +Always use `opts` instead of `config` when possible. `config` is almost never +needed. + + + + +SPEC LAZY LOADING *lazy.nvim-🔌-plugin-spec-spec-lazy-loading* + + -------------------------------------------------------------------------------------------------------------------- + Property Type Description + ---------- ---------------------------------------------------------------- ---------------------------------------- + lazy boolean? When true, the plugin will only be + loaded when needed. Lazy-loaded plugins + are automatically loaded when their Lua + modules are required, or when one of the + lazy-loading handlers triggers + + event string? or string[] or Lazy-load on event. Events can be + fun(self:LazyPlugin, event:string[]):string[] or specified as BufEnter or with a pattern + {event:string[]\|string, pattern?:string[]\|string} like BufEnter *.lua + + cmd string? or string[] or Lazy-load on command + fun(self:LazyPlugin, cmd:string[]):string[] + + ft string? or string[] or Lazy-load on filetype + fun(self:LazyPlugin, ft:string[]):string[] + + keys string? or string[] or LazyKeysSpec[] or Lazy-load on key mapping + fun(self:LazyPlugin, keys:string[]):(string \| LazyKeysSpec)[] + -------------------------------------------------------------------------------------------------------------------- +Refer to the Lazy Loading <./lazy_loading.md> section for more information. + + +SPEC VERSIONING *lazy.nvim-🔌-plugin-spec-spec-versioning* + + ------------------------------------------------------------------------------ + Property Type Description + ------------ -------------------- -------------------------------------------- + branch string? Branch of the repository + + tag string? Tag of the repository + + commit string? Commit of the repository + + version string? or false to Version to use from the repository. Full + override the default Semver ranges are supported + + pin boolean? When true, this plugin will not be included + in updates + + submodules boolean? When false, git submodules will not be + fetched. Defaults to true + ------------------------------------------------------------------------------ +Refer to the Versioning <./versioning.md> section for more information. + + +SPEC ADVANCED *lazy.nvim-🔌-plugin-spec-spec-advanced* + + ---------------------------------------------------------------------------------------- + Property Type Description + ---------- ---------- ------------------------------------------------------------------ + optional boolean? When a spec is tagged optional, it will only be included in the + final spec, when the same plugin has been specified at least once + somewhere else without optional. This is mainly useful for Neovim + distros, to allow setting options on plugins that may/may not be + part of the user’s plugins. + + specs LazySpec A list of plugin specs defined in the scope of the plugin. This is + mainly useful for Neovim distros, to allow setting options on + plugins that may/may not be part of the user’s plugins. When the + plugin is disabled, none of the scoped specs will be included in + the final spec. Similar to dependencies without the automatic + loading of the specs. + + module false? Do not automatically load this Lua module when it’s required + somewhere + + import string? Import the given spec module. + ---------------------------------------------------------------------------------------- + +EXAMPLES *lazy.nvim-🔌-plugin-spec-examples* + +>lua + return { + -- the colorscheme should be available when starting Neovim + { + "folke/tokyonight.nvim", + lazy = false, -- make sure we load this during startup if it is your main colorscheme + priority = 1000, -- make sure to load this before all the other start plugins + config = function() + -- load the colorscheme here + vim.cmd([[colorscheme tokyonight]]) + end, + }, + + -- I have a separate config.mappings file where I require which-key. + -- With lazy the plugin will be automatically loaded when it is required somewhere + { "folke/which-key.nvim", lazy = true }, + + { + "nvim-neorg/neorg", + -- lazy-load on filetype + ft = "norg", + -- options for neorg. This will automatically call `require("neorg").setup(opts)` + opts = { + load = { + ["core.defaults"] = {}, + }, + }, + }, + + { + "dstein64/vim-startuptime", + -- lazy-load on a command + cmd = "StartupTime", + -- init is called during startup. Configuration for vim plugins typically should be set in an init function + init = function() + vim.g.startuptime_tries = 10 + end, + }, + + { + "hrsh7th/nvim-cmp", + -- load cmp on InsertEnter + event = "InsertEnter", + -- these dependencies will only be loaded when cmp loads + -- dependencies are always lazy-loaded unless specified otherwise + dependencies = { + "hrsh7th/cmp-nvim-lsp", + "hrsh7th/cmp-buffer", + }, + config = function() + -- ... + end, + }, + + -- if some code requires a module from an unloaded plugin, it will be automatically loaded. + -- So for api plugins like devicons, we can always set lazy=true + { "nvim-tree/nvim-web-devicons", lazy = true }, + + -- you can use the VeryLazy event for things that can + -- load later and are not important for the initial UI + { "stevearc/dressing.nvim", event = "VeryLazy" }, + + { + "Wansmer/treesj", + keys = { + { "J", "TSJToggle", desc = "Join Toggle" }, + }, + opts = { use_default_keymaps = false, max_join_length = 150 }, + }, + + { + "monaqa/dial.nvim", + -- lazy-load on keys + -- mode is `n` by default. For more advanced options, check the section on key mappings + keys = { "", { "", mode = "n" } }, + }, + + -- local plugins need to be explicitly configured with dir + { dir = "~/projects/secret.nvim" }, + + -- you can use a custom url to fetch a plugin + { url = "git@github.com:folke/noice.nvim.git" }, + + -- local plugins can also be configured with the dev option. + -- This will use {config.dev.path}/noice.nvim/ instead of fetching it from GitHub + -- With the dev option, you can easily switch between the local and installed version of a plugin + { "folke/noice.nvim", dev = true }, + } +< + + +LAZY LOADING *lazy.nvim-🔌-plugin-spec-lazy-loading* + +**lazy.nvim** automagically lazy-loads Lua modules. This means that if you have +a plugin `A` that is lazy-loaded and a plugin `B` that requires a module of +plugin `A`, then plugin `A` will be loaded on demand as expected. + + +Additionally, you can also lazy-load on **events**, **commands**, **file +types** and **key mappings**. + +Plugins will be lazy-loaded when one of the following is `true`: + +- The plugin only exists as a dependency in your spec +- It has an `event`, `cmd`, `ft` or `keys` key +- `config.defaults.lazy == true` + + +🌈 COLORSCHEMES ~ + +Colorscheme plugins can be configured with `lazy=true`. The plugin will +automagically load when doing `colorscheme foobar`. + + + +⌨️ LAZY KEY MAPPINGS ~ + +The `keys` property can be a `string` or `string[]` for simple normal-mode +mappings, or it can be a `LazyKeysSpec` table with the following key-value +pairs: + +- **[1]**: (`string`) lhs **(required)** +- **[2]**: (`string|fun()`) rhs **(optional)** +- **mode**: (`string|string[]`) mode **(optional, defaults to "n")** +- **ft**: (`string|string[]`) `filetype` for buffer-local keymaps **(optional)** +- any other option valid for `vim.keymap.set` + +Key mappings will load the plugin the first time they get executed. + +When `[2]` is `nil`, then the real mapping has to be created by the `config()` +function. + +>lua + -- Example for neo-tree.nvim + { + "nvim-neo-tree/neo-tree.nvim", + keys = { + { "ft", "Neotree toggle", desc = "NeoTree" }, + }, + config = function() + require("neo-tree").setup() + end, + } +< + + +VERSIONING *lazy.nvim-🔌-plugin-spec-versioning* + +If you want to install a specific revision of a plugin, you can use `commit`, +`tag`, `branch`, `version`. + +The `version` property supports Semver ranges. + + + +EXAMPLES ~ + +- `*`: latest stable version (this excludes pre-release versions) +- `1.2.x`: any version that starts with `1.2`, such as `1.2.0`, `1.2.3`, etc. +- `^1.2.3`: any version that is compatible with `1.2.3`, such as `1.3.0`, `1.4.5`, etc., but not `2.0.0`. +- `~1.2.3`: any version that is compatible with `1.2.3`, such as `1.2.4`, `1.2.5`, but not `1.3.0`. +- `>1.2.3`: any version that is greater than `1.2.3`, such as `1.3.0`, `1.4.5`, etc. +- `>=1.2.3`: any version that is greater than or equal to `1.2.3`, such as `1.2.3`, `1.3.0`, `1.4.5`, etc. +- `<1.2.3`: any version that is less than `1.2.3`, such as `1.1.0`, `1.0.5`, etc. +- `<=1.2.3`: any version that is less than or equal to `1.2.3`, such as `1.2.3`, `1.1.0`, `1.0.5`, etc + + +============================================================================== +5. 📦 Packages *lazy.nvim-📦-packages* + +**lazy.nvim** supports three ways for plugins to define their dependencies and +configuration. + +- **Lazy**: `lazy.lua` file +- **Rockspec**: luarocks `*-scm-1.rockspec` file +- **Packspec**: `pkg.json` (experimental, since the format is not quite there yet) + +You can enable/disable package sources with `config.pkg.sources` +. The order of sources is important, as the first source that +finds a package will be used. + + + +LAZY *lazy.nvim-📦-packages-lazy* + +Using a `lazy.lua` file is the recommended way to define your plugin +dependencies and configuration. Syntax is the same as any plugin spec. + + +ROCKSPEC *lazy.nvim-📦-packages-rockspec* + +When a plugin contains a `*-1.rockspec` file, **lazy.nvim** will automatically +build the rock and its dependencies. + +A **rockspec** will only be used if one of the following is true: + +- the package does not have a `/lua` directory +- the package has a complex build step +- the package has dependencies (excluding `lua`) + + +PACKSPEC *lazy.nvim-📦-packages-packspec* + +Supports the pkg.json + format, with +a lazy extension in `lazy`. `lazy` can contain any valid lazy spec fields. They +will be added to the plugin’s spec. + + +============================================================================== +6. ⚙️ Configuration *lazy.nvim-⚙️-configuration* + +**lazy.nvim** comes with the following defaults: + +>lua + { + root = vim.fn.stdpath("data") .. "/lazy", -- directory where plugins will be installed + defaults = { + -- Set this to `true` to have all your plugins lazy-loaded by default. + -- Only do this if you know what you are doing, as it can lead to unexpected behavior. + lazy = false, -- should plugins be lazy-loaded? + -- It's recommended to leave version=false for now, since a lot the plugin that support versioning, + -- have outdated releases, which may break your Neovim install. + version = nil, -- always use the latest git commit + -- version = "*", -- try installing the latest stable version for plugins that support semver + -- default `cond` you can use to globally disable a lot of plugins + -- when running inside vscode for example + cond = nil, ---@type boolean|fun(self:LazyPlugin):boolean|nil + }, + -- leave nil when passing the spec as the first argument to setup() + spec = nil, ---@type LazySpec + local_spec = true, -- load project specific .lazy.lua spec files. They will be added at the end of the spec. + lockfile = vim.fn.stdpath("config") .. "/lazy-lock.json", -- lockfile generated after running update. + ---@type number? limit the maximum amount of concurrent tasks + concurrency = jit.os:find("Windows") and (vim.uv.available_parallelism() * 2) or nil, + git = { + -- defaults for the `Lazy log` command + -- log = { "--since=3 days ago" }, -- show commits from the last 3 days + log = { "-8" }, -- show the last 8 commits + timeout = 120, -- kill processes that take more than 2 minutes + url_format = "https://github.com/%s.git", + -- lazy.nvim requires git >=2.19.0. If you really want to use lazy with an older version, + -- then set the below to false. This should work, but is NOT supported and will + -- increase downloads a lot. + filter = true, + }, + pkg = { + enabled = true, + cache = vim.fn.stdpath("state") .. "/lazy/pkg-cache.lua", + versions = true, -- Honor versions in pkg sources + -- the first package source that is found for a plugin will be used. + sources = { + "lazy", + "rockspec", + "packspec", + }, + }, + rocks = { + root = vim.fn.stdpath("data") .. "/lazy-rocks", + server = "https://nvim-neorocks.github.io/rocks-binaries/", + }, + dev = { + ---@type string | fun(plugin: LazyPlugin): string directory where you store your local plugin projects + path = "~/projects", + ---@type string[] plugins that match these patterns will use your local versions instead of being fetched from GitHub + patterns = {}, -- For example {"folke"} + fallback = false, -- Fallback to git when local plugin doesn't exist + }, + install = { + -- install missing plugins on startup. This doesn't increase startup time. + missing = true, + -- try to load one of these colorschemes when starting an installation during startup + colorscheme = { "habamax" }, + }, + ui = { + -- a number <1 is a percentage., >1 is a fixed size + size = { width = 0.8, height = 0.8 }, + wrap = true, -- wrap the lines in the ui + -- The border to use for the UI window. Accepts same border values as |nvim_open_win()|. + border = "none", + -- The backdrop opacity. 0 is fully opaque, 100 is fully transparent. + backdrop = 60, + title = nil, ---@type string only works when border is not "none" + title_pos = "center", ---@type "center" | "left" | "right" + -- Show pills on top of the Lazy window + pills = true, ---@type boolean + icons = { + cmd = " ", + config = "", + event = " ", + favorite = " ", + ft = " ", + init = " ", + import = " ", + keys = " ", + lazy = "󰒲 ", + loaded = "●", + not_loaded = "○", + plugin = " ", + runtime = " ", + require = "󰢱 ", + source = " ", + start = " ", + task = "✔ ", + list = { + "●", + "➜", + "★", + "‒", + }, + }, + -- leave nil, to automatically select a browser depending on your OS. + -- If you want to use a specific browser, you can define it here + browser = nil, ---@type string? + throttle = 20, -- how frequently should the ui process render events + custom_keys = { + -- You can define custom key maps here. If present, the description will + -- be shown in the help menu. + -- To disable one of the defaults, set it to false. + + ["l"] = { + function(plugin) + require("lazy.util").float_term({ "lazygit", "log" }, { + cwd = plugin.dir, + }) + end, + desc = "Open lazygit log", + }, + + ["t"] = { + function(plugin) + require("lazy.util").float_term(nil, { + cwd = plugin.dir, + }) + end, + desc = "Open terminal in plugin dir", + }, + }, + }, + diff = { + -- diff command can be one of: + -- * browser: opens the github compare view. Note that this is always mapped to as well, + -- so you can have a different command for diff + -- * git: will run git diff and open a buffer with filetype git + -- * terminal_git: will open a pseudo terminal with git diff + -- * diffview.nvim: will open Diffview to show the diff + cmd = "git", + }, + checker = { + -- automatically check for plugin updates + enabled = false, + concurrency = nil, ---@type number? set to 1 to check for updates very slowly + notify = true, -- get a notification when new updates are found + frequency = 3600, -- check for updates every hour + check_pinned = false, -- check for pinned packages that can't be updated + }, + change_detection = { + -- automatically check for config file changes and reload the ui + enabled = true, + notify = true, -- get a notification when changes are found + }, + performance = { + cache = { + enabled = true, + }, + reset_packpath = true, -- reset the package path to improve startup time + rtp = { + reset = true, -- reset the runtime path to $VIMRUNTIME and your config directory + ---@type string[] + paths = {}, -- add any custom paths here that you want to includes in the rtp + ---@type string[] list any plugins you want to disable here + disabled_plugins = { + -- "gzip", + -- "matchit", + -- "matchparen", + -- "netrwPlugin", + -- "tarPlugin", + -- "tohtml", + -- "tutor", + -- "zipPlugin", + }, + }, + }, + -- lazy can generate helptags from the headings in markdown readme files, + -- so :help works even for plugins that don't have vim docs. + -- when the readme opens with :help it will be correctly displayed as markdown + readme = { + enabled = true, + root = vim.fn.stdpath("state") .. "/lazy/readme", + files = { "README.md", "lua/**/README.md" }, + -- only generate markdown helptags for plugins that dont have docs + skip_if_doc_exists = true, + }, + state = vim.fn.stdpath("state") .. "/lazy/state.json", -- state info for checker and other things + -- Enable profiling of lazy.nvim. This will add some overhead, + -- so only enable this when you are debugging lazy.nvim + profiling = { + -- Enables extra stats on the debug tab related to the loader cache. + -- Additionally gathers stats about all package.loaders + loader = false, + -- Track each new require in the Lazy profiling tab + require = false, + }, + } +< + +If you don’t want to use a Nerd Font, you can replace the icons with Unicode symbols. ~ + +>lua + { + ui = { + icons = { + cmd = "⌘", + config = "🛠", + event = "📅", + ft = "📂", + init = "⚙", + keys = "🗝", + plugin = "🔌", + runtime = "💻", + require = "🌙", + source = "📄", + start = "🚀", + task = "📌", + lazy = "💤 ", + }, + }, + } +< + + +🌈 HIGHLIGHT GROUPS *lazy.nvim-⚙️-configuration-🌈-highlight-groups* + + ----------------------------------------------------------------------- + Highlight Group Default Group Description + ----------------------- ----------------------- ----------------------- + LazyButton CursorLine + + LazyButtonActive Visual + + LazyComment Comment + + LazyCommit @variable.builtin commit ref + + LazyCommitIssue Number + + LazyCommitScope Italic conventional commit + scope + + LazyCommitType Title conventional commit + type + + LazyDimmed Conceal property + + LazyDir @markup.link directory + + LazyH1 IncSearch home button + + LazyH2 Bold titles + + LazyLocal Constant + + LazyNoCond DiagnosticWarn unloaded icon for a + plugin where cond() was + false + + LazyNormal NormalFloat + + LazyProgressDone Constant progress bar done + + LazyProgressTodo LineNr progress bar todo + + LazyProp Conceal property + + LazyReasonCmd Operator + + LazyReasonEvent Constant + + LazyReasonFt Character + + LazyReasonImport Identifier + + LazyReasonKeys Statement + + LazyReasonPlugin Special + + LazyReasonRequire @variable.parameter + + LazyReasonRuntime @macro + + LazyReasonSource Character + + LazyReasonStart @variable.member + + LazySpecial @punctuation.special + + LazyTaskError ErrorMsg task errors + + LazyTaskOutput MsgArea task output + + LazyUrl @markup.link url + + LazyValue @string value of a property + ----------------------------------------------------------------------- + +============================================================================== +7. 🚀 Usage *lazy.nvim-🚀-usage* + + +▶️ STARTUP SEQUENCE *lazy.nvim-🚀-usage-▶️-startup-sequence* + +**lazy.nvim** does **NOT** use Neovim packages and even disables plugin loading +completely (`vim.go.loadplugins = false`). It takes over the complete startup +sequence for more flexibility and better performance. + +In practice this means that step 10 of |Neovim Initialization| is done by Lazy: + +1. All the plugins’ `init()` functions are executed +2. All plugins with `lazy=false` are loaded. This includes sourcing `/plugin` and `/ftdetect` files. (`/after` will not be sourced yet) +3. All files from `/plugin` and `/ftdetect` directories in your rtp are sourced (excluding `/after`) +4. All `/after/plugin` files are sourced (this includes `/after` from plugins) + +Files from runtime directories are always sourced in alphabetical order. + + +🚀 COMMANDS *lazy.nvim-🚀-usage-🚀-commands* + +Plugins are managed with the `:Lazy` command. Open the help with `` to see +all the key mappings. + +You can press `` on a plugin to show its details. Most properties can be +hovered with `` to open links, help files, readmes, git commits and git +issues. + +Lazy can automatically check for updates in the background. This feature can be +enabled with `config.checker.enabled = true`. + +Any operation can be started from the UI, with a sub command or an API +function: + + ---------------------------------------------------------------------------------- + Command Lua Description + ------------------------- -------------------------------- ----------------------- + :Lazy build {plugins} require("lazy").build(opts) Rebuild a plugin + + :Lazy check [plugins] require("lazy").check(opts?) Check for updates and + show the log (git + fetch) + + :Lazy clean [plugins] require("lazy").clean(opts?) Clean plugins that are + no longer needed + + :Lazy clear require("lazy").clear() Clear finished tasks + + :Lazy debug require("lazy").debug() Show debug information + + :Lazy health require("lazy").health() Run :checkhealth lazy + + :Lazy help require("lazy").help() Toggle this help page + + :Lazy home require("lazy").home() Go back to plugin list + + :Lazy install [plugins] require("lazy").install(opts?) Install missing plugins + + :Lazy load {plugins} require("lazy").load(opts) Load a plugin that has + not been loaded yet. + Similar to :packadd. + Like + :Lazy load foo.nvim. + Use :Lazy! load to skip + cond checks. + + :Lazy log [plugins] require("lazy").log(opts?) Show recent updates + + :Lazy profile require("lazy").profile() Show detailed profiling + + :Lazy reload {plugins} require("lazy").reload(opts) Reload a plugin + (experimental!!) + + :Lazy restore [plugins] require("lazy").restore(opts?) Updates all plugins to + the state in the + lockfile. For a single + plugin: restore it to + the state in the + lockfile or to a given + commit under the cursor + + :Lazy sync [plugins] require("lazy").sync(opts?) Run install, clean and + update + + :Lazy update [plugins] require("lazy").update(opts?) Update plugins. This + will also update the + lockfile + ---------------------------------------------------------------------------------- +Any command can have a **bang** to make the command wait till it finished. For +example, if you want to sync lazy from the cmdline, you can use: + +>shell + nvim --headless "+Lazy! sync" +qa +< + +`opts` is a table with the following key-values: + +- **wait**: when true, then the call will wait till the operation completed +- **show**: when false, the UI will not be shown +- **plugins**: a list of plugin names to run the operation on +- **concurrency**: limit the `number` of concurrently running tasks + +Stats API (`require("lazy").stats()`): + +>lua + { + -- startuptime in milliseconds till UIEnter + startuptime = 0, + -- when true, startuptime is the accurate cputime for the Neovim process. (Linux & macOS) + -- this is more accurate than `nvim --startuptime`, and as such will be slightly higher + -- when false, startuptime is calculated based on a delta with a timestamp when lazy started. + real_cputime = false, + count = 0, -- total number of plugins + loaded = 0, -- number of loaded plugins + ---@type table + times = {}, + } +< + +**lazy.nvim** provides a statusline component that you can use to show the +number of pending updates. Make sure to enable `config.checker.enabled = true` +to make this work. + +Example of configuring lualine.nvim ~ + +>lua + require("lualine").setup({ + sections = { + lualine_x = { + { + require("lazy.status").updates, + cond = require("lazy.status").has_updates, + color = { fg = "#ff9e64" }, + }, + }, + }, + }) +< + + +📆 USER EVENTS *lazy.nvim-🚀-usage-📆-user-events* + +The following user events will be triggered: + +- **LazyDone**: when lazy has finished starting up and loaded your config +- **LazySync**: after running sync +- **LazyInstall**: after an install +- **LazyUpdate**: after an update +- **LazyClean**: after a clean +- **LazyCheck**: after checking for updates +- **LazyLog**: after running log +- **LazyLoad**: after loading a plugin. The `data` attribute will contain the plugin name. +- **LazySyncPre**: before running sync +- **LazyInstallPre**: before an install +- **LazyUpdatePre**: before an update +- **LazyCleanPre**: before a clean +- **LazyCheckPre**: before checking for updates +- **LazyLogPre**: before running log +- **LazyReload**: triggered by change detection after reloading plugin specs +- **VeryLazy**: triggered after `LazyDone` and processing `VimEnter` auto commands +- **LazyVimStarted**: triggered after `UIEnter` when `require("lazy").stats().startuptime` has been calculated. + Useful to update the startuptime on your dashboard. + + +❌ UNINSTALLING *lazy.nvim-🚀-usage-❌-uninstalling* + +To uninstall **lazy.nvim**, you need to remove the following files and +directories: + +- **data**: `~/.local/share/nvim/lazy` +- **state**: `~/.local/state/nvim/lazy` +- **lockfile**: `~/.config/nvim/lazy-lock.json` + + + Paths can differ if you changed `XDG` environment variables. + +🔒 LOCKFILE *lazy.nvim-🚀-usage-🔒-lockfile* + +After every **update**, the local lockfile (`lazy-lock.json`) is updated with +the installed revisions. It is recommended to have this file under version +control. + +If you use your Neovim config on multiple machines, using the lockfile, you can +ensure that the same version of every plugin is installed. + +If you are on another machine, you can do `:Lazy restore`, to update all your +plugins to the version from the lockfile. + + +📦 MIGRATION GUIDE *lazy.nvim-🚀-usage-📦-migration-guide* + + +PACKER.NVIM ~ + +- `setup` ➡️ `init` +- `requires` ➡️ `dependencies` +- `as` ➡️ `name` +- `opt` ➡️ `lazy` +- `run` ➡️ `build` +- `lock` ➡️ `pin` +- `disable=true` ➡️ `enabled = false` +- `tag='*'` ➡️ `version="*"` +- `after` is **not needed** for most use-cases. Use `dependencies` otherwise. +- `wants` is **not needed** for most use-cases. Use `dependencies` otherwise. +- `config` don’t support string type, use `fun(LazyPlugin)` instead. +- `module` is auto-loaded. No need to specify +- `keys` spec is |lazy.nvim-different| +- `rtp` can be accomplished with: + +>lua + config = function(plugin) + vim.opt.rtp:append(plugin.dir .. "/custom-rtp") + end +< + +With packer `wants`, `requires` and `after` can be used to manage dependencies. +With lazy, this isn’t needed for most of the Lua dependencies. They can be +installed just like normal plugins (even with `lazy=true`) and will be loaded +when other plugins need them. The `dependencies` key can be used to group those +required plugins with the one that requires them. The plugins which are added +as `dependencies` will always be lazy-loaded and loaded when the plugin is +loaded. + + +PAQ-NVIM ~ + +- `as` ➡️ `name` +- `opt` ➡️ `lazy` +- `run` ➡️ `build` + + +⚡ PROFILING & DEBUG *lazy.nvim-🚀-usage-⚡-profiling-&-debug* + +Great care has been taken to make the startup code (`lazy.core`) as efficient +as possible. During startup, all Lua files used before `VimEnter` or +`BufReadPre` are byte-compiled and cached, similar to what impatient.nvim + does. + +My config for example loads in about `11ms` with `93` plugins. I do a lot of +lazy-loading though :) + +**lazy.nvim** comes with an advanced profiler `:Lazy profile` to help you +improve performance. The profiling view shows you why and how long it took to +load your plugins. + + +🐛 DEBUG ~ + +See an overview of active lazy-loading handlers and what’s in the module +cache. + + +📂 STRUCTURING YOUR PLUGINS*lazy.nvim-🚀-usage-📂-structuring-your-plugins* + +Some users may want to split their plugin specs in multiple files. Instead of +passing a spec table to `setup()`, you can use a Lua module. The specs from the +**module** and any top-level **sub-modules** will be merged together in the +final spec, so it is not needed to add `require` calls in your main plugin file +to the other files. + +The benefits of using this approach: + +- Simple to **add** new plugin specs. Just create a new file in your plugins module. +- Allows for **caching** of all your plugin specs. This becomes important if you have a lot of smaller plugin specs. +- Spec changes will automatically be **reloaded** when they’re updated, so the `:Lazy` UI is always up to date. + +Example: + +- `~/.config/nvim/init.lua` + +>lua + require("lazy").setup("plugins") +< + +- `~/.config/nvim/lua/plugins.lua` or `~/.config/nvim/lua/plugins/init.lua` **(this file is optional)** + +>lua + return { + "folke/neodev.nvim", + "folke/which-key.nvim", + { "folke/neoconf.nvim", cmd = "Neoconf" }, + } +< + +- Any lua file in `~/.config/nvim/lua/plugins/*.lua` will be automatically merged in the main plugin spec + +For a real-life example, you can check LazyVim + and more specifically: + +- lazyvim.plugins contains all the plugin specs that will be loaded + + +↩️ IMPORTING SPECS, CONFIG & OPTS + +As part of a spec, you can add `import` statements to import additional plugin +modules. Both of the `setup()` calls are equivalent: + +>lua + require("lazy").setup("plugins") + + -- Same as: + require("lazy").setup({{import = "plugins"}}) +< + +To import multiple modules from a plugin, add additional specs for each import. +For example, to import LazyVim core plugins and an optional plugin: + +>lua + require("lazy").setup({ + spec = { + { "LazyVim/LazyVim", import = "lazyvim.plugins" }, + { import = "lazyvim.plugins.extras.coding.copilot" }, + } + }) +< + +When you import specs, you can override them by simply adding a spec for the +same plugin to your local specs, adding any keys you want to override / merge. + +`opts`, `dependencies`, `cmd`, `event`, `ft` and `keys` are always merged with +the parent spec. Any other property will override the property from the parent +spec. + + +============================================================================== +8. 🔥 Developers *lazy.nvim-🔥-developers* + +To make it easier for users to install your plugin, you can include a package +spec in your repo. + + +BEST PRACTICES *lazy.nvim-🔥-developers-best-practices* + +- If your plugin needs `setup()`, then create a simple `lazy.lua` file like this: + >lua + return { "me/my-plugin", opts = {} } + < +- Plugins that are pure lua libraries should be lazy-loaded with `lazy = true`. + >lua + { "nvim-lua/plenary.nvim", lazy = true } + < +- Always use `opts` instead of `config` when possible. `config` is almost never + needed. +- Only use `dependencies` if a plugin needs the dep to be installed **AND** + loaded. Lua plugins/libraries are automatically loaded when they are + `require()`d, so they don’t need to be in `dependencies`. +- Inside a `build` function or `*.lua` build file, use + `coroutine.yield(msg:string|LazyMsg)` to show progress. +- Don’t change the `cwd` in your build function, since builds run in parallel + and changing the `cwd` will affect other builds. + + +BUILDING *lazy.nvim-🔥-developers-building* + +The spec **build** property can be one of the following: + +- `fun(plugin: LazyPlugin)`: a function that builds the plugin. +- `*.lua`: a Lua file that builds the plugin (like `build.lua`) +- `":Command"`: a Neovim command +- `"rockspec"`: this will run `luarocks make` in the plugin’s directory + This is automatically set by the `rockspec` package source. +- any other **string** will be run as a shell command +- a `list` of any of the above to run multiple build steps +- if no `build` is specified, but a `build.lua` file exists, that will be used instead. + +Build functions and `*.lua` files run asynchronously in a coroutine. Use +`coroutine.yield(msg:string|LazyMsg)` to show progress. + +Yielding will also schedule the next `coroutine.resume()` to run in the next +tick, so you can do long-running tasks without blocking Neovim. + +>lua + ---@class LazyMsg + ---@field msg string + ---@field level? number vim.log.levels.XXX +< + +Use `vim.log.levels.TRACE` to only show the message as a **status** message for +the task. + + + +MINIT (MINIMAL INIT) *lazy.nvim-🔥-developers-minit-(minimal-init)* + +**lazy.nvim** comes with some built-in functionality to help you create a +minimal init for your plugin. + +I mainly use this for testing and for users to create a `repro.lua`. + +When running in **headless** mode, **lazy.nvim** will log any messages to the +terminal. See `opts.headless` for more info. + +**minit** will install/load all your specs and will always run an update as +well. + + +BOOTSTRAP ~ + +>lua + -- setting this env will override all XDG paths + vim.env.LAZY_STDPATH = ".tests" + -- this will install lazy in your stdpath + load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() +< + + +TESTING WITH BUSTED ~ + +This will add `"lunarmodules/busted"`, configure `hererocks` and run `busted`. + +Below is an example of how I use **minit** to run tests with busted + in **LazyVim**. + +>lua + #!/usr/bin/env -S nvim -l + + vim.env.LAZY_STDPATH = ".tests" + load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() + + -- Setup lazy.nvim + require("lazy.minit").busted({ + spec = { + "LazyVim/starter", + "williamboman/mason-lspconfig.nvim", + "williamboman/mason.nvim", + "nvim-treesitter/nvim-treesitter", + }, + }) +< + +To use this, you can run: + +>sh + nvim -l ./tests/busted.lua tests +< + +If you want to inspect the test environment, run: + +>sh + nvim -u ./tests/busted.lua +< + + +REPRO.LUA ~ + +>lua + vim.env.LAZY_STDPATH = ".repro" + load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() + + require("lazy.minit").repro({ + spec = { + "stevearc/conform.nvim", + "nvim-neotest/nvim-nio", + }, + }) + + -- do anything else you need to do to reproduce the issue +< + +Then run it with: + +>sh + nvim -u repro.lua +< + +============================================================================== +9. Links *lazy.nvim-links* 1. *image*: https://user-images.githubusercontent.com/292349/208301737-68fb279c-ba70-43ef-a369-8c3e8367d6b1.png +2. *image*: https://user-images.githubusercontent.com/292349/208301766-5c400561-83c3-4811-9667-1ec4bb3c43b8.png +3. *image*: https://user-images.githubusercontent.com/292349/208301790-7eedbfa5-d202-4e70-852e-de68aa47233b.png Generated by panvimdoc From 436d09af7d3d9e1ff39dc2cf51be800a7ab45be9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 7 Jul 2024 15:15:37 +0000 Subject: [PATCH 245/342] chore(build): auto-generate docs --- doc/lazy.nvim.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index 73bd0ae..c2c9695 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -294,9 +294,9 @@ SPEC SETUP *lazy.nvim-🔌-plugin-spec-spec-setup* -------------------------------------------------------------------------------------------------- Property Type Description ---------- ----------------------------- --------------------------------------------------------- - init fun(LazyPlugin) init functions are always executed during. Mostly useful - for setting vim.g.* configuration used by Vim plugins - startup + init fun(LazyPlugin) init functions are always executed during startup. Mostly + useful for setting vim.g.* configuration used by Vim + plugins startup opts table or opts should be a table (will be merged with parent fun(LazyPlugin, opts:table) specs), return a table (replaces parent specs) or should From a6daaf68a2805ac9180b835f09de5ca5d5cf8993 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 7 Jul 2024 21:25:12 +0200 Subject: [PATCH 246/342] chore(main): release 11.10.3 (#1625) :robot: I have created a release *beep* *boop* --- ## [11.10.3](https://github.com/folke/lazy.nvim/compare/v11.10.2...v11.10.3) (2024-07-07) ### Bug Fixes * **git:** local plugin fixes ([#1624](https://github.com/folke/lazy.nvim/issues/1624)) ([72c0dc9](https://github.com/folke/lazy.nvim/commit/72c0dc9462ab3bf1a68198afabc1eb4e2940d299)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 7 +++++++ lua/lazy/core/config.lua | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index 9441643..5d18bbe 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "11.10.2" + ".": "11.10.3" } diff --git a/CHANGELOG.md b/CHANGELOG.md index b265fe9..b09ee5d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [11.10.3](https://github.com/folke/lazy.nvim/compare/v11.10.2...v11.10.3) (2024-07-07) + + +### Bug Fixes + +* **git:** local plugin fixes ([#1624](https://github.com/folke/lazy.nvim/issues/1624)) ([72c0dc9](https://github.com/folke/lazy.nvim/commit/72c0dc9462ab3bf1a68198afabc1eb4e2940d299)) + ## [11.10.2](https://github.com/folke/lazy.nvim/compare/v11.10.1...v11.10.2) (2024-07-07) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index f1eff9c..083db1c 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -228,7 +228,7 @@ function M.hererocks() return M.options.rocks.hererocks end -M.version = "11.10.2" -- x-release-please-version +M.version = "11.10.3" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 44cd12fa2709a4de644b1d7c2773d5c59df07a66 Mon Sep 17 00:00:00 2001 From: folke Date: Sun, 7 Jul 2024 19:26:10 +0000 Subject: [PATCH 247/342] chore(build): auto-generate docs --- doc/lazy.nvim.txt | 1398 ++------------------------------------------- 1 file changed, 46 insertions(+), 1352 deletions(-) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index c2c9695..b3fad77 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -1,130 +1,61 @@ -*lazy.nvim.txt* A modern plugin manager for Neovim +*lazy.nvim.txt* For Neovim Last change: 2024 July 07 ============================================================================== 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. 📰 What’s new? *lazy.nvim-📰-what’s-new?* + - Features |lazy.nvim-features| + - Requirements |lazy.nvim-requirements| + - Getting Started |lazy.nvim-getting-started| +1. Links |lazy.nvim-links| +Install +· +Configure +· +Docs + + + + + + + + + + + + + + -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 . The GitHub `README.md` - has been updated to point to the new website. The `vimdoc` contains all the - information that is available on the website. -- **Spec Resolution & Merging**: the code that resolves a final spec from a - plugin’s fragments has been rewritten. This should be a tiny bit faster, but - more importantly, fixes some issues and is easier to maintain. -- Packages can now specify their dependencies - and configuration using one of: - - **Lazy**: `lazy.lua` file - - **Rockspec**: luarocks `*-scm-1.rockspec` file - - **Packspec**: `pkg.json` (experimental, since the format is not quite there yet) - Related _lazy.nvim_ options: - >lua - { - pkg = { - enabled = true, - cache = vim.fn.stdpath("state") .. "/lazy/pkg-cache.lua", - -- the first package source that is found for a plugin will be used. - sources = { - "lazy", - "rockspec", -- will only be used when rocks.enabled is true - "packspec", - }, - }, - rocks = { - enabled = true, - root = vim.fn.stdpath("data") .. "/lazy-rocks", - server = "https://nvim-neorocks.github.io/rocks-binaries/", - }, - } - < -- Installing neorg is now as simple as: - >lua - { "nvim-neorg/neorg", opts = {} } - < -- Packages are not limited to just Neovim plugins. You can install any - **luarocks** package, like: - >lua - { "https://github.com/lubyk/yaml" } - < - Luarocks packages without a `/lua` directory are never lazy-loaded, since - it’s just a library. -- `build` functions or `*.lua` build files (like `build.lua`) now run - asynchronously. You can use `coroutine.yield(status_msg)` to show progress. - Yielding will also schedule the next `resume` to run in the next tick, so you - can do long-running tasks without blocking Neovim. -============================================================================== -2. 🚀 Getting Started *lazy.nvim-🚀-getting-started* **lazy.nvim** is a modern plugin manager for Neovim. -✨ FEATURES *lazy.nvim-🚀-getting-started-✨-features* +FEATURES *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 support -- 📈 Statusline component to see the number of pending updates -- 🎨 Automatically lazy-loads colorschemes +- 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 support +- Statusline component to see the number of pending updates +- Automatically lazy-loads colorschemes -⚡️ REQUIREMENTS *lazy.nvim-🚀-getting-started-⚡️-requirements* +REQUIREMENTS *lazy.nvim-requirements* - Neovim >= **0.8.0** (needs to be built with **LuaJIT**) - Git >= **2.19.0** (for partial clones support) @@ -133,1251 +64,14 @@ Table of Contents *lazy.nvim-table-of-contents* You can remove `rockspec` from `opts.pkg.sources` to disable this feature. -============================================================================== -3. 🛠️ Installation *lazy.nvim-🛠️-installation* - -There are multiple ways to install **lazy.nvim**. The **Structured Setup** is -the recommended way, but you can also use the **Single File Setup** if you -prefer to keep everything in your `init.lua`. - -Please refer to the Configuration section for an overview of -all available options. - - - - -STRUCTURED SETUP *lazy.nvim-🛠️-installation-structured-setup* - ->lua - require("config.lazy") -< - ->lua - -- Bootstrap lazy.nvim - local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" - if not (vim.uv or vim.loop).fs_stat(lazypath) then - local lazyrepo = "https://github.com/folke/lazy.nvim.git" - local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) - if vim.v.shell_error ~= 0 then - vim.api.nvim_echo({ - { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, - { out, "WarningMsg" }, - { "\nPress any key to exit..." }, - }, true, {}) - vim.fn.getchar() - os.exit(1) - end - end - vim.opt.rtp:prepend(lazypath) - - -- Make sure to setup `mapleader` and `maplocalleader` before - -- loading lazy.nvim so that mappings are correct. - -- This is also a good place to setup other settings (vim.opt) - vim.g.mapleader = " " - vim.g.maplocalleader = "\\" - - -- Setup lazy.nvim - require("lazy").setup({ - -- highlight-start - spec = { - -- import your plugins - { import = "plugins" }, - }, - -- highlight-end - -- Configure any other settings here. See the documentation for more details. - -- colorscheme that will be used when installing plugins. - install = { colorscheme = { "habamax" } }, - -- automatically check for plugin updates - checker = { enabled = true }, - }) -< - -You can then create your plugin specs in `~/.config/nvim/lua/plugins/`. Each -file should return a table with the plugins you want to install. - -For more info see Structuring Your Plugins - - -SINGLE FILE SETUP *lazy.nvim-🛠️-installation-single-file-setup* - ->lua - -- Bootstrap lazy.nvim - local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" - if not (vim.uv or vim.loop).fs_stat(lazypath) then - local lazyrepo = "https://github.com/folke/lazy.nvim.git" - local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) - if vim.v.shell_error ~= 0 then - vim.api.nvim_echo({ - { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, - { out, "WarningMsg" }, - { "\nPress any key to exit..." }, - }, true, {}) - vim.fn.getchar() - os.exit(1) - end - end - vim.opt.rtp:prepend(lazypath) - - -- Make sure to setup `mapleader` and `maplocalleader` before - -- loading lazy.nvim so that mappings are correct. - -- This is also a good place to setup other settings (vim.opt) - vim.g.mapleader = " " - vim.g.maplocalleader = "\\" - - -- Setup lazy.nvim - require("lazy").setup({ - -- highlight-start - spec = { - -- add your plugins here - }, - -- highlight-end - -- Configure any other settings here. See the documentation for more details. - -- colorscheme that will be used when installing plugins. - install = { colorscheme = { "habamax" } }, - -- automatically check for plugin updates - checker = { enabled = true }, - }) -< +GETTING STARTED *lazy.nvim-getting-started* +Check the documentation website for more information. ============================================================================== -4. 🔌 Plugin Spec *lazy.nvim-🔌-plugin-spec* - - -SPEC SOURCE *lazy.nvim-🔌-plugin-spec-spec-source* - - ----------------------------------------------------------------------------------- - Property Type Description - ---------- ---------- ------------------------------------------------------------- - [1] string? Short plugin url. Will be expanded using - config.git.url_format. Can also be a url or dir. - - dir string? A directory pointing to a local plugin - - url string? A custom git url where the plugin is hosted - - name string? A custom name for the plugin used for the local plugin - directory and as the display name - - dev boolean? When true, a local plugin directory will be used instead. See - config.dev - ----------------------------------------------------------------------------------- -A valid spec should define one of `[1]`, `dir` or `url`. - - -SPEC LOADING *lazy.nvim-🔌-plugin-spec-spec-loading* - - -------------------------------------------------------------------------------------------------- - Property Type Description - -------------- ------------------------- --------------------------------------------------------- - dependencies LazySpec[] A list of plugin names or plugin specs that should be - loaded when the plugin loads. Dependencies are always - lazy-loaded unless specified otherwise. When specifying a - name, make sure the plugin spec has been defined - somewhere else. - - enabled boolean? or fun():boolean When false, or if the function returns false, then this - plugin will not be included in the spec - - cond boolean? or Behaves the same as enabled, but won’t uninstall the - fun(LazyPlugin):boolean plugin when the condition is false. Useful to disable - some plugins in vscode, or firenvim for example. - - priority number? Only useful for start plugins (lazy=false) to force - loading certain plugins first. Default priority is 50. - It’s recommended to set this to a high number for - colorschemes. - -------------------------------------------------------------------------------------------------- - -SPEC SETUP *lazy.nvim-🔌-plugin-spec-spec-setup* - - -------------------------------------------------------------------------------------------------- - Property Type Description - ---------- ----------------------------- --------------------------------------------------------- - init fun(LazyPlugin) init functions are always executed during startup. Mostly - useful for setting vim.g.* configuration used by Vim - plugins startup - - opts table or opts should be a table (will be merged with parent - fun(LazyPlugin, opts:table) specs), return a table (replaces parent specs) or should - change a table. The table will be passed to the - Plugin.config() function. Setting this value will imply - Plugin.config() - - config fun(LazyPlugin, opts:table) config is executed when the plugin loads. The default - or true implementation will automatically run - require(MAIN).setup(opts) if opts or config = true is - set. Lazy uses several heuristics to determine the - plugin’s MAIN module automatically based on the plugin’s - name. (opts is the recommended way to configure plugins). - - main string? You can specify the main module to use for config() and - opts(), in case it can not be determined automatically. - See config() - - build fun(LazyPlugin) or string or build is executed when a plugin is installed or updated. - false or a list of build See Building for more information. - commands - -------------------------------------------------------------------------------------------------- -Always use `opts` instead of `config` when possible. `config` is almost never -needed. - - - - -SPEC LAZY LOADING *lazy.nvim-🔌-plugin-spec-spec-lazy-loading* - - -------------------------------------------------------------------------------------------------------------------- - Property Type Description - ---------- ---------------------------------------------------------------- ---------------------------------------- - lazy boolean? When true, the plugin will only be - loaded when needed. Lazy-loaded plugins - are automatically loaded when their Lua - modules are required, or when one of the - lazy-loading handlers triggers - - event string? or string[] or Lazy-load on event. Events can be - fun(self:LazyPlugin, event:string[]):string[] or specified as BufEnter or with a pattern - {event:string[]\|string, pattern?:string[]\|string} like BufEnter *.lua - - cmd string? or string[] or Lazy-load on command - fun(self:LazyPlugin, cmd:string[]):string[] - - ft string? or string[] or Lazy-load on filetype - fun(self:LazyPlugin, ft:string[]):string[] - - keys string? or string[] or LazyKeysSpec[] or Lazy-load on key mapping - fun(self:LazyPlugin, keys:string[]):(string \| LazyKeysSpec)[] - -------------------------------------------------------------------------------------------------------------------- -Refer to the Lazy Loading <./lazy_loading.md> section for more information. - - -SPEC VERSIONING *lazy.nvim-🔌-plugin-spec-spec-versioning* - - ------------------------------------------------------------------------------ - Property Type Description - ------------ -------------------- -------------------------------------------- - branch string? Branch of the repository - - tag string? Tag of the repository - - commit string? Commit of the repository - - version string? or false to Version to use from the repository. Full - override the default Semver ranges are supported - - pin boolean? When true, this plugin will not be included - in updates - - submodules boolean? When false, git submodules will not be - fetched. Defaults to true - ------------------------------------------------------------------------------ -Refer to the Versioning <./versioning.md> section for more information. - - -SPEC ADVANCED *lazy.nvim-🔌-plugin-spec-spec-advanced* - - ---------------------------------------------------------------------------------------- - Property Type Description - ---------- ---------- ------------------------------------------------------------------ - optional boolean? When a spec is tagged optional, it will only be included in the - final spec, when the same plugin has been specified at least once - somewhere else without optional. This is mainly useful for Neovim - distros, to allow setting options on plugins that may/may not be - part of the user’s plugins. - - specs LazySpec A list of plugin specs defined in the scope of the plugin. This is - mainly useful for Neovim distros, to allow setting options on - plugins that may/may not be part of the user’s plugins. When the - plugin is disabled, none of the scoped specs will be included in - the final spec. Similar to dependencies without the automatic - loading of the specs. - - module false? Do not automatically load this Lua module when it’s required - somewhere - - import string? Import the given spec module. - ---------------------------------------------------------------------------------------- - -EXAMPLES *lazy.nvim-🔌-plugin-spec-examples* - ->lua - return { - -- the colorscheme should be available when starting Neovim - { - "folke/tokyonight.nvim", - lazy = false, -- make sure we load this during startup if it is your main colorscheme - priority = 1000, -- make sure to load this before all the other start plugins - config = function() - -- load the colorscheme here - vim.cmd([[colorscheme tokyonight]]) - end, - }, - - -- I have a separate config.mappings file where I require which-key. - -- With lazy the plugin will be automatically loaded when it is required somewhere - { "folke/which-key.nvim", lazy = true }, - - { - "nvim-neorg/neorg", - -- lazy-load on filetype - ft = "norg", - -- options for neorg. This will automatically call `require("neorg").setup(opts)` - opts = { - load = { - ["core.defaults"] = {}, - }, - }, - }, - - { - "dstein64/vim-startuptime", - -- lazy-load on a command - cmd = "StartupTime", - -- init is called during startup. Configuration for vim plugins typically should be set in an init function - init = function() - vim.g.startuptime_tries = 10 - end, - }, - - { - "hrsh7th/nvim-cmp", - -- load cmp on InsertEnter - event = "InsertEnter", - -- these dependencies will only be loaded when cmp loads - -- dependencies are always lazy-loaded unless specified otherwise - dependencies = { - "hrsh7th/cmp-nvim-lsp", - "hrsh7th/cmp-buffer", - }, - config = function() - -- ... - end, - }, - - -- if some code requires a module from an unloaded plugin, it will be automatically loaded. - -- So for api plugins like devicons, we can always set lazy=true - { "nvim-tree/nvim-web-devicons", lazy = true }, - - -- you can use the VeryLazy event for things that can - -- load later and are not important for the initial UI - { "stevearc/dressing.nvim", event = "VeryLazy" }, - - { - "Wansmer/treesj", - keys = { - { "J", "TSJToggle", desc = "Join Toggle" }, - }, - opts = { use_default_keymaps = false, max_join_length = 150 }, - }, - - { - "monaqa/dial.nvim", - -- lazy-load on keys - -- mode is `n` by default. For more advanced options, check the section on key mappings - keys = { "", { "", mode = "n" } }, - }, - - -- local plugins need to be explicitly configured with dir - { dir = "~/projects/secret.nvim" }, - - -- you can use a custom url to fetch a plugin - { url = "git@github.com:folke/noice.nvim.git" }, - - -- local plugins can also be configured with the dev option. - -- This will use {config.dev.path}/noice.nvim/ instead of fetching it from GitHub - -- With the dev option, you can easily switch between the local and installed version of a plugin - { "folke/noice.nvim", dev = true }, - } -< - - -LAZY LOADING *lazy.nvim-🔌-plugin-spec-lazy-loading* - -**lazy.nvim** automagically lazy-loads Lua modules. This means that if you have -a plugin `A` that is lazy-loaded and a plugin `B` that requires a module of -plugin `A`, then plugin `A` will be loaded on demand as expected. - - -Additionally, you can also lazy-load on **events**, **commands**, **file -types** and **key mappings**. - -Plugins will be lazy-loaded when one of the following is `true`: - -- The plugin only exists as a dependency in your spec -- It has an `event`, `cmd`, `ft` or `keys` key -- `config.defaults.lazy == true` - - -🌈 COLORSCHEMES ~ - -Colorscheme plugins can be configured with `lazy=true`. The plugin will -automagically load when doing `colorscheme foobar`. - - - -⌨️ LAZY KEY MAPPINGS ~ - -The `keys` property can be a `string` or `string[]` for simple normal-mode -mappings, or it can be a `LazyKeysSpec` table with the following key-value -pairs: - -- **[1]**: (`string`) lhs **(required)** -- **[2]**: (`string|fun()`) rhs **(optional)** -- **mode**: (`string|string[]`) mode **(optional, defaults to "n")** -- **ft**: (`string|string[]`) `filetype` for buffer-local keymaps **(optional)** -- any other option valid for `vim.keymap.set` - -Key mappings will load the plugin the first time they get executed. - -When `[2]` is `nil`, then the real mapping has to be created by the `config()` -function. - ->lua - -- Example for neo-tree.nvim - { - "nvim-neo-tree/neo-tree.nvim", - keys = { - { "ft", "Neotree toggle", desc = "NeoTree" }, - }, - config = function() - require("neo-tree").setup() - end, - } -< - - -VERSIONING *lazy.nvim-🔌-plugin-spec-versioning* - -If you want to install a specific revision of a plugin, you can use `commit`, -`tag`, `branch`, `version`. - -The `version` property supports Semver ranges. - - - -EXAMPLES ~ - -- `*`: latest stable version (this excludes pre-release versions) -- `1.2.x`: any version that starts with `1.2`, such as `1.2.0`, `1.2.3`, etc. -- `^1.2.3`: any version that is compatible with `1.2.3`, such as `1.3.0`, `1.4.5`, etc., but not `2.0.0`. -- `~1.2.3`: any version that is compatible with `1.2.3`, such as `1.2.4`, `1.2.5`, but not `1.3.0`. -- `>1.2.3`: any version that is greater than `1.2.3`, such as `1.3.0`, `1.4.5`, etc. -- `>=1.2.3`: any version that is greater than or equal to `1.2.3`, such as `1.2.3`, `1.3.0`, `1.4.5`, etc. -- `<1.2.3`: any version that is less than `1.2.3`, such as `1.1.0`, `1.0.5`, etc. -- `<=1.2.3`: any version that is less than or equal to `1.2.3`, such as `1.2.3`, `1.1.0`, `1.0.5`, etc - - -============================================================================== -5. 📦 Packages *lazy.nvim-📦-packages* - -**lazy.nvim** supports three ways for plugins to define their dependencies and -configuration. - -- **Lazy**: `lazy.lua` file -- **Rockspec**: luarocks `*-scm-1.rockspec` file -- **Packspec**: `pkg.json` (experimental, since the format is not quite there yet) - -You can enable/disable package sources with `config.pkg.sources` -. The order of sources is important, as the first source that -finds a package will be used. - - - -LAZY *lazy.nvim-📦-packages-lazy* - -Using a `lazy.lua` file is the recommended way to define your plugin -dependencies and configuration. Syntax is the same as any plugin spec. - - -ROCKSPEC *lazy.nvim-📦-packages-rockspec* - -When a plugin contains a `*-1.rockspec` file, **lazy.nvim** will automatically -build the rock and its dependencies. - -A **rockspec** will only be used if one of the following is true: - -- the package does not have a `/lua` directory -- the package has a complex build step -- the package has dependencies (excluding `lua`) - - -PACKSPEC *lazy.nvim-📦-packages-packspec* - -Supports the pkg.json - format, with -a lazy extension in `lazy`. `lazy` can contain any valid lazy spec fields. They -will be added to the plugin’s spec. - - -============================================================================== -6. ⚙️ Configuration *lazy.nvim-⚙️-configuration* - -**lazy.nvim** comes with the following defaults: - ->lua - { - root = vim.fn.stdpath("data") .. "/lazy", -- directory where plugins will be installed - defaults = { - -- Set this to `true` to have all your plugins lazy-loaded by default. - -- Only do this if you know what you are doing, as it can lead to unexpected behavior. - lazy = false, -- should plugins be lazy-loaded? - -- It's recommended to leave version=false for now, since a lot the plugin that support versioning, - -- have outdated releases, which may break your Neovim install. - version = nil, -- always use the latest git commit - -- version = "*", -- try installing the latest stable version for plugins that support semver - -- default `cond` you can use to globally disable a lot of plugins - -- when running inside vscode for example - cond = nil, ---@type boolean|fun(self:LazyPlugin):boolean|nil - }, - -- leave nil when passing the spec as the first argument to setup() - spec = nil, ---@type LazySpec - local_spec = true, -- load project specific .lazy.lua spec files. They will be added at the end of the spec. - lockfile = vim.fn.stdpath("config") .. "/lazy-lock.json", -- lockfile generated after running update. - ---@type number? limit the maximum amount of concurrent tasks - concurrency = jit.os:find("Windows") and (vim.uv.available_parallelism() * 2) or nil, - git = { - -- defaults for the `Lazy log` command - -- log = { "--since=3 days ago" }, -- show commits from the last 3 days - log = { "-8" }, -- show the last 8 commits - timeout = 120, -- kill processes that take more than 2 minutes - url_format = "https://github.com/%s.git", - -- lazy.nvim requires git >=2.19.0. If you really want to use lazy with an older version, - -- then set the below to false. This should work, but is NOT supported and will - -- increase downloads a lot. - filter = true, - }, - pkg = { - enabled = true, - cache = vim.fn.stdpath("state") .. "/lazy/pkg-cache.lua", - versions = true, -- Honor versions in pkg sources - -- the first package source that is found for a plugin will be used. - sources = { - "lazy", - "rockspec", - "packspec", - }, - }, - rocks = { - root = vim.fn.stdpath("data") .. "/lazy-rocks", - server = "https://nvim-neorocks.github.io/rocks-binaries/", - }, - dev = { - ---@type string | fun(plugin: LazyPlugin): string directory where you store your local plugin projects - path = "~/projects", - ---@type string[] plugins that match these patterns will use your local versions instead of being fetched from GitHub - patterns = {}, -- For example {"folke"} - fallback = false, -- Fallback to git when local plugin doesn't exist - }, - install = { - -- install missing plugins on startup. This doesn't increase startup time. - missing = true, - -- try to load one of these colorschemes when starting an installation during startup - colorscheme = { "habamax" }, - }, - ui = { - -- a number <1 is a percentage., >1 is a fixed size - size = { width = 0.8, height = 0.8 }, - wrap = true, -- wrap the lines in the ui - -- The border to use for the UI window. Accepts same border values as |nvim_open_win()|. - border = "none", - -- The backdrop opacity. 0 is fully opaque, 100 is fully transparent. - backdrop = 60, - title = nil, ---@type string only works when border is not "none" - title_pos = "center", ---@type "center" | "left" | "right" - -- Show pills on top of the Lazy window - pills = true, ---@type boolean - icons = { - cmd = " ", - config = "", - event = " ", - favorite = " ", - ft = " ", - init = " ", - import = " ", - keys = " ", - lazy = "󰒲 ", - loaded = "●", - not_loaded = "○", - plugin = " ", - runtime = " ", - require = "󰢱 ", - source = " ", - start = " ", - task = "✔ ", - list = { - "●", - "➜", - "★", - "‒", - }, - }, - -- leave nil, to automatically select a browser depending on your OS. - -- If you want to use a specific browser, you can define it here - browser = nil, ---@type string? - throttle = 20, -- how frequently should the ui process render events - custom_keys = { - -- You can define custom key maps here. If present, the description will - -- be shown in the help menu. - -- To disable one of the defaults, set it to false. - - ["l"] = { - function(plugin) - require("lazy.util").float_term({ "lazygit", "log" }, { - cwd = plugin.dir, - }) - end, - desc = "Open lazygit log", - }, - - ["t"] = { - function(plugin) - require("lazy.util").float_term(nil, { - cwd = plugin.dir, - }) - end, - desc = "Open terminal in plugin dir", - }, - }, - }, - diff = { - -- diff command can be one of: - -- * browser: opens the github compare view. Note that this is always mapped to as well, - -- so you can have a different command for diff - -- * git: will run git diff and open a buffer with filetype git - -- * terminal_git: will open a pseudo terminal with git diff - -- * diffview.nvim: will open Diffview to show the diff - cmd = "git", - }, - checker = { - -- automatically check for plugin updates - enabled = false, - concurrency = nil, ---@type number? set to 1 to check for updates very slowly - notify = true, -- get a notification when new updates are found - frequency = 3600, -- check for updates every hour - check_pinned = false, -- check for pinned packages that can't be updated - }, - change_detection = { - -- automatically check for config file changes and reload the ui - enabled = true, - notify = true, -- get a notification when changes are found - }, - performance = { - cache = { - enabled = true, - }, - reset_packpath = true, -- reset the package path to improve startup time - rtp = { - reset = true, -- reset the runtime path to $VIMRUNTIME and your config directory - ---@type string[] - paths = {}, -- add any custom paths here that you want to includes in the rtp - ---@type string[] list any plugins you want to disable here - disabled_plugins = { - -- "gzip", - -- "matchit", - -- "matchparen", - -- "netrwPlugin", - -- "tarPlugin", - -- "tohtml", - -- "tutor", - -- "zipPlugin", - }, - }, - }, - -- lazy can generate helptags from the headings in markdown readme files, - -- so :help works even for plugins that don't have vim docs. - -- when the readme opens with :help it will be correctly displayed as markdown - readme = { - enabled = true, - root = vim.fn.stdpath("state") .. "/lazy/readme", - files = { "README.md", "lua/**/README.md" }, - -- only generate markdown helptags for plugins that dont have docs - skip_if_doc_exists = true, - }, - state = vim.fn.stdpath("state") .. "/lazy/state.json", -- state info for checker and other things - -- Enable profiling of lazy.nvim. This will add some overhead, - -- so only enable this when you are debugging lazy.nvim - profiling = { - -- Enables extra stats on the debug tab related to the loader cache. - -- Additionally gathers stats about all package.loaders - loader = false, - -- Track each new require in the Lazy profiling tab - require = false, - }, - } -< - -If you don’t want to use a Nerd Font, you can replace the icons with Unicode symbols. ~ - ->lua - { - ui = { - icons = { - cmd = "⌘", - config = "🛠", - event = "📅", - ft = "📂", - init = "⚙", - keys = "🗝", - plugin = "🔌", - runtime = "💻", - require = "🌙", - source = "📄", - start = "🚀", - task = "📌", - lazy = "💤 ", - }, - }, - } -< - - -🌈 HIGHLIGHT GROUPS *lazy.nvim-⚙️-configuration-🌈-highlight-groups* - - ----------------------------------------------------------------------- - Highlight Group Default Group Description - ----------------------- ----------------------- ----------------------- - LazyButton CursorLine - - LazyButtonActive Visual - - LazyComment Comment - - LazyCommit @variable.builtin commit ref - - LazyCommitIssue Number - - LazyCommitScope Italic conventional commit - scope - - LazyCommitType Title conventional commit - type - - LazyDimmed Conceal property - - LazyDir @markup.link directory - - LazyH1 IncSearch home button - - LazyH2 Bold titles - - LazyLocal Constant - - LazyNoCond DiagnosticWarn unloaded icon for a - plugin where cond() was - false - - LazyNormal NormalFloat - - LazyProgressDone Constant progress bar done - - LazyProgressTodo LineNr progress bar todo - - LazyProp Conceal property - - LazyReasonCmd Operator - - LazyReasonEvent Constant - - LazyReasonFt Character - - LazyReasonImport Identifier - - LazyReasonKeys Statement - - LazyReasonPlugin Special - - LazyReasonRequire @variable.parameter - - LazyReasonRuntime @macro - - LazyReasonSource Character - - LazyReasonStart @variable.member - - LazySpecial @punctuation.special - - LazyTaskError ErrorMsg task errors - - LazyTaskOutput MsgArea task output - - LazyUrl @markup.link url - - LazyValue @string value of a property - ----------------------------------------------------------------------- - -============================================================================== -7. 🚀 Usage *lazy.nvim-🚀-usage* - - -▶️ STARTUP SEQUENCE *lazy.nvim-🚀-usage-▶️-startup-sequence* - -**lazy.nvim** does **NOT** use Neovim packages and even disables plugin loading -completely (`vim.go.loadplugins = false`). It takes over the complete startup -sequence for more flexibility and better performance. - -In practice this means that step 10 of |Neovim Initialization| is done by Lazy: - -1. All the plugins’ `init()` functions are executed -2. All plugins with `lazy=false` are loaded. This includes sourcing `/plugin` and `/ftdetect` files. (`/after` will not be sourced yet) -3. All files from `/plugin` and `/ftdetect` directories in your rtp are sourced (excluding `/after`) -4. All `/after/plugin` files are sourced (this includes `/after` from plugins) - -Files from runtime directories are always sourced in alphabetical order. - - -🚀 COMMANDS *lazy.nvim-🚀-usage-🚀-commands* - -Plugins are managed with the `:Lazy` command. Open the help with `` to see -all the key mappings. - -You can press `` on a plugin to show its details. Most properties can be -hovered with `` to open links, help files, readmes, git commits and git -issues. - -Lazy can automatically check for updates in the background. This feature can be -enabled with `config.checker.enabled = true`. - -Any operation can be started from the UI, with a sub command or an API -function: - - ---------------------------------------------------------------------------------- - Command Lua Description - ------------------------- -------------------------------- ----------------------- - :Lazy build {plugins} require("lazy").build(opts) Rebuild a plugin - - :Lazy check [plugins] require("lazy").check(opts?) Check for updates and - show the log (git - fetch) - - :Lazy clean [plugins] require("lazy").clean(opts?) Clean plugins that are - no longer needed - - :Lazy clear require("lazy").clear() Clear finished tasks - - :Lazy debug require("lazy").debug() Show debug information - - :Lazy health require("lazy").health() Run :checkhealth lazy - - :Lazy help require("lazy").help() Toggle this help page - - :Lazy home require("lazy").home() Go back to plugin list - - :Lazy install [plugins] require("lazy").install(opts?) Install missing plugins - - :Lazy load {plugins} require("lazy").load(opts) Load a plugin that has - not been loaded yet. - Similar to :packadd. - Like - :Lazy load foo.nvim. - Use :Lazy! load to skip - cond checks. - - :Lazy log [plugins] require("lazy").log(opts?) Show recent updates - - :Lazy profile require("lazy").profile() Show detailed profiling - - :Lazy reload {plugins} require("lazy").reload(opts) Reload a plugin - (experimental!!) - - :Lazy restore [plugins] require("lazy").restore(opts?) Updates all plugins to - the state in the - lockfile. For a single - plugin: restore it to - the state in the - lockfile or to a given - commit under the cursor - - :Lazy sync [plugins] require("lazy").sync(opts?) Run install, clean and - update - - :Lazy update [plugins] require("lazy").update(opts?) Update plugins. This - will also update the - lockfile - ---------------------------------------------------------------------------------- -Any command can have a **bang** to make the command wait till it finished. For -example, if you want to sync lazy from the cmdline, you can use: - ->shell - nvim --headless "+Lazy! sync" +qa -< - -`opts` is a table with the following key-values: - -- **wait**: when true, then the call will wait till the operation completed -- **show**: when false, the UI will not be shown -- **plugins**: a list of plugin names to run the operation on -- **concurrency**: limit the `number` of concurrently running tasks - -Stats API (`require("lazy").stats()`): - ->lua - { - -- startuptime in milliseconds till UIEnter - startuptime = 0, - -- when true, startuptime is the accurate cputime for the Neovim process. (Linux & macOS) - -- this is more accurate than `nvim --startuptime`, and as such will be slightly higher - -- when false, startuptime is calculated based on a delta with a timestamp when lazy started. - real_cputime = false, - count = 0, -- total number of plugins - loaded = 0, -- number of loaded plugins - ---@type table - times = {}, - } -< - -**lazy.nvim** provides a statusline component that you can use to show the -number of pending updates. Make sure to enable `config.checker.enabled = true` -to make this work. - -Example of configuring lualine.nvim ~ - ->lua - require("lualine").setup({ - sections = { - lualine_x = { - { - require("lazy.status").updates, - cond = require("lazy.status").has_updates, - color = { fg = "#ff9e64" }, - }, - }, - }, - }) -< - - -📆 USER EVENTS *lazy.nvim-🚀-usage-📆-user-events* - -The following user events will be triggered: - -- **LazyDone**: when lazy has finished starting up and loaded your config -- **LazySync**: after running sync -- **LazyInstall**: after an install -- **LazyUpdate**: after an update -- **LazyClean**: after a clean -- **LazyCheck**: after checking for updates -- **LazyLog**: after running log -- **LazyLoad**: after loading a plugin. The `data` attribute will contain the plugin name. -- **LazySyncPre**: before running sync -- **LazyInstallPre**: before an install -- **LazyUpdatePre**: before an update -- **LazyCleanPre**: before a clean -- **LazyCheckPre**: before checking for updates -- **LazyLogPre**: before running log -- **LazyReload**: triggered by change detection after reloading plugin specs -- **VeryLazy**: triggered after `LazyDone` and processing `VimEnter` auto commands -- **LazyVimStarted**: triggered after `UIEnter` when `require("lazy").stats().startuptime` has been calculated. - Useful to update the startuptime on your dashboard. - - -❌ UNINSTALLING *lazy.nvim-🚀-usage-❌-uninstalling* - -To uninstall **lazy.nvim**, you need to remove the following files and -directories: - -- **data**: `~/.local/share/nvim/lazy` -- **state**: `~/.local/state/nvim/lazy` -- **lockfile**: `~/.config/nvim/lazy-lock.json` - - - Paths can differ if you changed `XDG` environment variables. - -🔒 LOCKFILE *lazy.nvim-🚀-usage-🔒-lockfile* - -After every **update**, the local lockfile (`lazy-lock.json`) is updated with -the installed revisions. It is recommended to have this file under version -control. - -If you use your Neovim config on multiple machines, using the lockfile, you can -ensure that the same version of every plugin is installed. - -If you are on another machine, you can do `:Lazy restore`, to update all your -plugins to the version from the lockfile. - - -📦 MIGRATION GUIDE *lazy.nvim-🚀-usage-📦-migration-guide* - - -PACKER.NVIM ~ - -- `setup` ➡️ `init` -- `requires` ➡️ `dependencies` -- `as` ➡️ `name` -- `opt` ➡️ `lazy` -- `run` ➡️ `build` -- `lock` ➡️ `pin` -- `disable=true` ➡️ `enabled = false` -- `tag='*'` ➡️ `version="*"` -- `after` is **not needed** for most use-cases. Use `dependencies` otherwise. -- `wants` is **not needed** for most use-cases. Use `dependencies` otherwise. -- `config` don’t support string type, use `fun(LazyPlugin)` instead. -- `module` is auto-loaded. No need to specify -- `keys` spec is |lazy.nvim-different| -- `rtp` can be accomplished with: - ->lua - config = function(plugin) - vim.opt.rtp:append(plugin.dir .. "/custom-rtp") - end -< - -With packer `wants`, `requires` and `after` can be used to manage dependencies. -With lazy, this isn’t needed for most of the Lua dependencies. They can be -installed just like normal plugins (even with `lazy=true`) and will be loaded -when other plugins need them. The `dependencies` key can be used to group those -required plugins with the one that requires them. The plugins which are added -as `dependencies` will always be lazy-loaded and loaded when the plugin is -loaded. - - -PAQ-NVIM ~ - -- `as` ➡️ `name` -- `opt` ➡️ `lazy` -- `run` ➡️ `build` - - -⚡ PROFILING & DEBUG *lazy.nvim-🚀-usage-⚡-profiling-&-debug* - -Great care has been taken to make the startup code (`lazy.core`) as efficient -as possible. During startup, all Lua files used before `VimEnter` or -`BufReadPre` are byte-compiled and cached, similar to what impatient.nvim - does. - -My config for example loads in about `11ms` with `93` plugins. I do a lot of -lazy-loading though :) - -**lazy.nvim** comes with an advanced profiler `:Lazy profile` to help you -improve performance. The profiling view shows you why and how long it took to -load your plugins. - - -🐛 DEBUG ~ - -See an overview of active lazy-loading handlers and what’s in the module -cache. - - -📂 STRUCTURING YOUR PLUGINS*lazy.nvim-🚀-usage-📂-structuring-your-plugins* - -Some users may want to split their plugin specs in multiple files. Instead of -passing a spec table to `setup()`, you can use a Lua module. The specs from the -**module** and any top-level **sub-modules** will be merged together in the -final spec, so it is not needed to add `require` calls in your main plugin file -to the other files. - -The benefits of using this approach: - -- Simple to **add** new plugin specs. Just create a new file in your plugins module. -- Allows for **caching** of all your plugin specs. This becomes important if you have a lot of smaller plugin specs. -- Spec changes will automatically be **reloaded** when they’re updated, so the `:Lazy` UI is always up to date. - -Example: - -- `~/.config/nvim/init.lua` - ->lua - require("lazy").setup("plugins") -< - -- `~/.config/nvim/lua/plugins.lua` or `~/.config/nvim/lua/plugins/init.lua` **(this file is optional)** - ->lua - return { - "folke/neodev.nvim", - "folke/which-key.nvim", - { "folke/neoconf.nvim", cmd = "Neoconf" }, - } -< - -- Any lua file in `~/.config/nvim/lua/plugins/*.lua` will be automatically merged in the main plugin spec - -For a real-life example, you can check LazyVim - and more specifically: - -- lazyvim.plugins contains all the plugin specs that will be loaded - - -↩️ IMPORTING SPECS, CONFIG & OPTS - -As part of a spec, you can add `import` statements to import additional plugin -modules. Both of the `setup()` calls are equivalent: - ->lua - require("lazy").setup("plugins") - - -- Same as: - require("lazy").setup({{import = "plugins"}}) -< - -To import multiple modules from a plugin, add additional specs for each import. -For example, to import LazyVim core plugins and an optional plugin: - ->lua - require("lazy").setup({ - spec = { - { "LazyVim/LazyVim", import = "lazyvim.plugins" }, - { import = "lazyvim.plugins.extras.coding.copilot" }, - } - }) -< - -When you import specs, you can override them by simply adding a spec for the -same plugin to your local specs, adding any keys you want to override / merge. - -`opts`, `dependencies`, `cmd`, `event`, `ft` and `keys` are always merged with -the parent spec. Any other property will override the property from the parent -spec. - - -============================================================================== -8. 🔥 Developers *lazy.nvim-🔥-developers* - -To make it easier for users to install your plugin, you can include a package -spec in your repo. - - -BEST PRACTICES *lazy.nvim-🔥-developers-best-practices* - -- If your plugin needs `setup()`, then create a simple `lazy.lua` file like this: - >lua - return { "me/my-plugin", opts = {} } - < -- Plugins that are pure lua libraries should be lazy-loaded with `lazy = true`. - >lua - { "nvim-lua/plenary.nvim", lazy = true } - < -- Always use `opts` instead of `config` when possible. `config` is almost never - needed. -- Only use `dependencies` if a plugin needs the dep to be installed **AND** - loaded. Lua plugins/libraries are automatically loaded when they are - `require()`d, so they don’t need to be in `dependencies`. -- Inside a `build` function or `*.lua` build file, use - `coroutine.yield(msg:string|LazyMsg)` to show progress. -- Don’t change the `cwd` in your build function, since builds run in parallel - and changing the `cwd` will affect other builds. - - -BUILDING *lazy.nvim-🔥-developers-building* - -The spec **build** property can be one of the following: - -- `fun(plugin: LazyPlugin)`: a function that builds the plugin. -- `*.lua`: a Lua file that builds the plugin (like `build.lua`) -- `":Command"`: a Neovim command -- `"rockspec"`: this will run `luarocks make` in the plugin’s directory - This is automatically set by the `rockspec` package source. -- any other **string** will be run as a shell command -- a `list` of any of the above to run multiple build steps -- if no `build` is specified, but a `build.lua` file exists, that will be used instead. - -Build functions and `*.lua` files run asynchronously in a coroutine. Use -`coroutine.yield(msg:string|LazyMsg)` to show progress. - -Yielding will also schedule the next `coroutine.resume()` to run in the next -tick, so you can do long-running tasks without blocking Neovim. - ->lua - ---@class LazyMsg - ---@field msg string - ---@field level? number vim.log.levels.XXX -< - -Use `vim.log.levels.TRACE` to only show the message as a **status** message for -the task. - - - -MINIT (MINIMAL INIT) *lazy.nvim-🔥-developers-minit-(minimal-init)* - -**lazy.nvim** comes with some built-in functionality to help you create a -minimal init for your plugin. - -I mainly use this for testing and for users to create a `repro.lua`. - -When running in **headless** mode, **lazy.nvim** will log any messages to the -terminal. See `opts.headless` for more info. - -**minit** will install/load all your specs and will always run an update as -well. - - -BOOTSTRAP ~ - ->lua - -- setting this env will override all XDG paths - vim.env.LAZY_STDPATH = ".tests" - -- this will install lazy in your stdpath - load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() -< - - -TESTING WITH BUSTED ~ - -This will add `"lunarmodules/busted"`, configure `hererocks` and run `busted`. - -Below is an example of how I use **minit** to run tests with busted - in **LazyVim**. - ->lua - #!/usr/bin/env -S nvim -l - - vim.env.LAZY_STDPATH = ".tests" - load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() - - -- Setup lazy.nvim - require("lazy.minit").busted({ - spec = { - "LazyVim/starter", - "williamboman/mason-lspconfig.nvim", - "williamboman/mason.nvim", - "nvim-treesitter/nvim-treesitter", - }, - }) -< - -To use this, you can run: - ->sh - nvim -l ./tests/busted.lua tests -< - -If you want to inspect the test environment, run: - ->sh - nvim -u ./tests/busted.lua -< - - -REPRO.LUA ~ - ->lua - vim.env.LAZY_STDPATH = ".repro" - load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() - - require("lazy.minit").repro({ - spec = { - "stevearc/conform.nvim", - "nvim-neotest/nvim-nio", - }, - }) - - -- do anything else you need to do to reproduce the issue -< - -Then run it with: - ->sh - nvim -u repro.lua -< - -============================================================================== -9. Links *lazy.nvim-links* +1. Links *lazy.nvim-links* 1. *image*: https://user-images.githubusercontent.com/292349/208301737-68fb279c-ba70-43ef-a369-8c3e8367d6b1.png -2. *image*: https://user-images.githubusercontent.com/292349/208301766-5c400561-83c3-4811-9667-1ec4bb3c43b8.png -3. *image*: https://user-images.githubusercontent.com/292349/208301790-7eedbfa5-d202-4e70-852e-de68aa47233b.png Generated by panvimdoc From 2dfccd7b948beb26d8bcff7f9113a3a5c85cbc4a Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Mon, 8 Jul 2024 07:28:02 +0200 Subject: [PATCH 248/342] fix(ui): don't treat suspended as headless. Closes #1626 --- lua/lazy/core/config.lua | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 083db1c..233b1fc 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -253,9 +253,10 @@ M.mapleader = nil ---@type string M.maplocalleader = nil -local headless = #vim.api.nvim_list_uis() == 0 +M.suspended = false + function M.headless() - return headless + return not M.suspended and #vim.api.nvim_list_uis() == 0 end ---@param opts? LazyConfig @@ -338,6 +339,12 @@ function M.setup(opts) end end, }) + + vim.api.nvim_create_autocmd({ "VimSuspend", "VimResume" }, { + callback = function(ev) + M.suspended = ev.event == "VimSuspend" + end, + }) end, }) end From 0002bfbd9ffba015f65955027799adba2634d220 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 8 Jul 2024 05:28:57 +0000 Subject: [PATCH 249/342] chore(build): auto-generate docs --- doc/lazy.nvim.txt | 1398 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 1352 insertions(+), 46 deletions(-) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index b3fad77..c2c9695 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -1,61 +1,130 @@ -*lazy.nvim.txt* For Neovim Last change: 2024 July 07 +*lazy.nvim.txt* A modern plugin manager for Neovim ============================================================================== Table of Contents *lazy.nvim-table-of-contents* - - Features |lazy.nvim-features| - - Requirements |lazy.nvim-requirements| - - Getting Started |lazy.nvim-getting-started| -1. Links |lazy.nvim-links| -Install -· -Configure -· -Docs - - - - - - - - - - - - - - +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. 📰 What’s new? *lazy.nvim-📰-what’s-new?* +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 . The GitHub `README.md` + has been updated to point to the new website. The `vimdoc` contains all the + information that is available on the website. +- **Spec Resolution & Merging**: the code that resolves a final spec from a + plugin’s fragments has been rewritten. This should be a tiny bit faster, but + more importantly, fixes some issues and is easier to maintain. +- Packages can now specify their dependencies + and configuration using one of: + - **Lazy**: `lazy.lua` file + - **Rockspec**: luarocks `*-scm-1.rockspec` file + - **Packspec**: `pkg.json` (experimental, since the format is not quite there yet) + Related _lazy.nvim_ options: + >lua + { + pkg = { + enabled = true, + cache = vim.fn.stdpath("state") .. "/lazy/pkg-cache.lua", + -- the first package source that is found for a plugin will be used. + sources = { + "lazy", + "rockspec", -- will only be used when rocks.enabled is true + "packspec", + }, + }, + rocks = { + enabled = true, + root = vim.fn.stdpath("data") .. "/lazy-rocks", + server = "https://nvim-neorocks.github.io/rocks-binaries/", + }, + } + < +- Installing neorg is now as simple as: + >lua + { "nvim-neorg/neorg", opts = {} } + < +- Packages are not limited to just Neovim plugins. You can install any + **luarocks** package, like: + >lua + { "https://github.com/lubyk/yaml" } + < + Luarocks packages without a `/lua` directory are never lazy-loaded, since + it’s just a library. +- `build` functions or `*.lua` build files (like `build.lua`) now run + asynchronously. You can use `coroutine.yield(status_msg)` to show progress. + Yielding will also schedule the next `resume` to run in the next tick, so you + can do long-running tasks without blocking Neovim. +============================================================================== +2. 🚀 Getting Started *lazy.nvim-🚀-getting-started* **lazy.nvim** is a modern plugin manager for Neovim. -FEATURES *lazy.nvim-features* +✨ FEATURES *lazy.nvim-🚀-getting-started-✨-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 support -- Statusline component to see the number of pending updates -- Automatically lazy-loads colorschemes +- 📦 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 support +- 📈 Statusline component to see the number of pending updates +- 🎨 Automatically lazy-loads colorschemes -REQUIREMENTS *lazy.nvim-requirements* +⚡️ REQUIREMENTS *lazy.nvim-🚀-getting-started-⚡️-requirements* - Neovim >= **0.8.0** (needs to be built with **LuaJIT**) - Git >= **2.19.0** (for partial clones support) @@ -64,14 +133,1251 @@ REQUIREMENTS *lazy.nvim-requirements* You can remove `rockspec` from `opts.pkg.sources` to disable this feature. -GETTING STARTED *lazy.nvim-getting-started* +============================================================================== +3. 🛠️ Installation *lazy.nvim-🛠️-installation* + +There are multiple ways to install **lazy.nvim**. The **Structured Setup** is +the recommended way, but you can also use the **Single File Setup** if you +prefer to keep everything in your `init.lua`. + +Please refer to the Configuration section for an overview of +all available options. + + + + +STRUCTURED SETUP *lazy.nvim-🛠️-installation-structured-setup* + +>lua + require("config.lazy") +< + +>lua + -- Bootstrap lazy.nvim + local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" + if not (vim.uv or vim.loop).fs_stat(lazypath) then + local lazyrepo = "https://github.com/folke/lazy.nvim.git" + local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) + if vim.v.shell_error ~= 0 then + vim.api.nvim_echo({ + { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, + { out, "WarningMsg" }, + { "\nPress any key to exit..." }, + }, true, {}) + vim.fn.getchar() + os.exit(1) + end + end + vim.opt.rtp:prepend(lazypath) + + -- Make sure to setup `mapleader` and `maplocalleader` before + -- loading lazy.nvim so that mappings are correct. + -- This is also a good place to setup other settings (vim.opt) + vim.g.mapleader = " " + vim.g.maplocalleader = "\\" + + -- Setup lazy.nvim + require("lazy").setup({ + -- highlight-start + spec = { + -- import your plugins + { import = "plugins" }, + }, + -- highlight-end + -- Configure any other settings here. See the documentation for more details. + -- colorscheme that will be used when installing plugins. + install = { colorscheme = { "habamax" } }, + -- automatically check for plugin updates + checker = { enabled = true }, + }) +< + +You can then create your plugin specs in `~/.config/nvim/lua/plugins/`. Each +file should return a table with the plugins you want to install. + +For more info see Structuring Your Plugins + + +SINGLE FILE SETUP *lazy.nvim-🛠️-installation-single-file-setup* + +>lua + -- Bootstrap lazy.nvim + local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" + if not (vim.uv or vim.loop).fs_stat(lazypath) then + local lazyrepo = "https://github.com/folke/lazy.nvim.git" + local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) + if vim.v.shell_error ~= 0 then + vim.api.nvim_echo({ + { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, + { out, "WarningMsg" }, + { "\nPress any key to exit..." }, + }, true, {}) + vim.fn.getchar() + os.exit(1) + end + end + vim.opt.rtp:prepend(lazypath) + + -- Make sure to setup `mapleader` and `maplocalleader` before + -- loading lazy.nvim so that mappings are correct. + -- This is also a good place to setup other settings (vim.opt) + vim.g.mapleader = " " + vim.g.maplocalleader = "\\" + + -- Setup lazy.nvim + require("lazy").setup({ + -- highlight-start + spec = { + -- add your plugins here + }, + -- highlight-end + -- Configure any other settings here. See the documentation for more details. + -- colorscheme that will be used when installing plugins. + install = { colorscheme = { "habamax" } }, + -- automatically check for plugin updates + checker = { enabled = true }, + }) +< -Check the documentation website for more information. ============================================================================== -1. Links *lazy.nvim-links* +4. 🔌 Plugin Spec *lazy.nvim-🔌-plugin-spec* + + +SPEC SOURCE *lazy.nvim-🔌-plugin-spec-spec-source* + + ----------------------------------------------------------------------------------- + Property Type Description + ---------- ---------- ------------------------------------------------------------- + [1] string? Short plugin url. Will be expanded using + config.git.url_format. Can also be a url or dir. + + dir string? A directory pointing to a local plugin + + url string? A custom git url where the plugin is hosted + + name string? A custom name for the plugin used for the local plugin + directory and as the display name + + dev boolean? When true, a local plugin directory will be used instead. See + config.dev + ----------------------------------------------------------------------------------- +A valid spec should define one of `[1]`, `dir` or `url`. + + +SPEC LOADING *lazy.nvim-🔌-plugin-spec-spec-loading* + + -------------------------------------------------------------------------------------------------- + Property Type Description + -------------- ------------------------- --------------------------------------------------------- + dependencies LazySpec[] A list of plugin names or plugin specs that should be + loaded when the plugin loads. Dependencies are always + lazy-loaded unless specified otherwise. When specifying a + name, make sure the plugin spec has been defined + somewhere else. + + enabled boolean? or fun():boolean When false, or if the function returns false, then this + plugin will not be included in the spec + + cond boolean? or Behaves the same as enabled, but won’t uninstall the + fun(LazyPlugin):boolean plugin when the condition is false. Useful to disable + some plugins in vscode, or firenvim for example. + + priority number? Only useful for start plugins (lazy=false) to force + loading certain plugins first. Default priority is 50. + It’s recommended to set this to a high number for + colorschemes. + -------------------------------------------------------------------------------------------------- + +SPEC SETUP *lazy.nvim-🔌-plugin-spec-spec-setup* + + -------------------------------------------------------------------------------------------------- + Property Type Description + ---------- ----------------------------- --------------------------------------------------------- + init fun(LazyPlugin) init functions are always executed during startup. Mostly + useful for setting vim.g.* configuration used by Vim + plugins startup + + opts table or opts should be a table (will be merged with parent + fun(LazyPlugin, opts:table) specs), return a table (replaces parent specs) or should + change a table. The table will be passed to the + Plugin.config() function. Setting this value will imply + Plugin.config() + + config fun(LazyPlugin, opts:table) config is executed when the plugin loads. The default + or true implementation will automatically run + require(MAIN).setup(opts) if opts or config = true is + set. Lazy uses several heuristics to determine the + plugin’s MAIN module automatically based on the plugin’s + name. (opts is the recommended way to configure plugins). + + main string? You can specify the main module to use for config() and + opts(), in case it can not be determined automatically. + See config() + + build fun(LazyPlugin) or string or build is executed when a plugin is installed or updated. + false or a list of build See Building for more information. + commands + -------------------------------------------------------------------------------------------------- +Always use `opts` instead of `config` when possible. `config` is almost never +needed. + + + + +SPEC LAZY LOADING *lazy.nvim-🔌-plugin-spec-spec-lazy-loading* + + -------------------------------------------------------------------------------------------------------------------- + Property Type Description + ---------- ---------------------------------------------------------------- ---------------------------------------- + lazy boolean? When true, the plugin will only be + loaded when needed. Lazy-loaded plugins + are automatically loaded when their Lua + modules are required, or when one of the + lazy-loading handlers triggers + + event string? or string[] or Lazy-load on event. Events can be + fun(self:LazyPlugin, event:string[]):string[] or specified as BufEnter or with a pattern + {event:string[]\|string, pattern?:string[]\|string} like BufEnter *.lua + + cmd string? or string[] or Lazy-load on command + fun(self:LazyPlugin, cmd:string[]):string[] + + ft string? or string[] or Lazy-load on filetype + fun(self:LazyPlugin, ft:string[]):string[] + + keys string? or string[] or LazyKeysSpec[] or Lazy-load on key mapping + fun(self:LazyPlugin, keys:string[]):(string \| LazyKeysSpec)[] + -------------------------------------------------------------------------------------------------------------------- +Refer to the Lazy Loading <./lazy_loading.md> section for more information. + + +SPEC VERSIONING *lazy.nvim-🔌-plugin-spec-spec-versioning* + + ------------------------------------------------------------------------------ + Property Type Description + ------------ -------------------- -------------------------------------------- + branch string? Branch of the repository + + tag string? Tag of the repository + + commit string? Commit of the repository + + version string? or false to Version to use from the repository. Full + override the default Semver ranges are supported + + pin boolean? When true, this plugin will not be included + in updates + + submodules boolean? When false, git submodules will not be + fetched. Defaults to true + ------------------------------------------------------------------------------ +Refer to the Versioning <./versioning.md> section for more information. + + +SPEC ADVANCED *lazy.nvim-🔌-plugin-spec-spec-advanced* + + ---------------------------------------------------------------------------------------- + Property Type Description + ---------- ---------- ------------------------------------------------------------------ + optional boolean? When a spec is tagged optional, it will only be included in the + final spec, when the same plugin has been specified at least once + somewhere else without optional. This is mainly useful for Neovim + distros, to allow setting options on plugins that may/may not be + part of the user’s plugins. + + specs LazySpec A list of plugin specs defined in the scope of the plugin. This is + mainly useful for Neovim distros, to allow setting options on + plugins that may/may not be part of the user’s plugins. When the + plugin is disabled, none of the scoped specs will be included in + the final spec. Similar to dependencies without the automatic + loading of the specs. + + module false? Do not automatically load this Lua module when it’s required + somewhere + + import string? Import the given spec module. + ---------------------------------------------------------------------------------------- + +EXAMPLES *lazy.nvim-🔌-plugin-spec-examples* + +>lua + return { + -- the colorscheme should be available when starting Neovim + { + "folke/tokyonight.nvim", + lazy = false, -- make sure we load this during startup if it is your main colorscheme + priority = 1000, -- make sure to load this before all the other start plugins + config = function() + -- load the colorscheme here + vim.cmd([[colorscheme tokyonight]]) + end, + }, + + -- I have a separate config.mappings file where I require which-key. + -- With lazy the plugin will be automatically loaded when it is required somewhere + { "folke/which-key.nvim", lazy = true }, + + { + "nvim-neorg/neorg", + -- lazy-load on filetype + ft = "norg", + -- options for neorg. This will automatically call `require("neorg").setup(opts)` + opts = { + load = { + ["core.defaults"] = {}, + }, + }, + }, + + { + "dstein64/vim-startuptime", + -- lazy-load on a command + cmd = "StartupTime", + -- init is called during startup. Configuration for vim plugins typically should be set in an init function + init = function() + vim.g.startuptime_tries = 10 + end, + }, + + { + "hrsh7th/nvim-cmp", + -- load cmp on InsertEnter + event = "InsertEnter", + -- these dependencies will only be loaded when cmp loads + -- dependencies are always lazy-loaded unless specified otherwise + dependencies = { + "hrsh7th/cmp-nvim-lsp", + "hrsh7th/cmp-buffer", + }, + config = function() + -- ... + end, + }, + + -- if some code requires a module from an unloaded plugin, it will be automatically loaded. + -- So for api plugins like devicons, we can always set lazy=true + { "nvim-tree/nvim-web-devicons", lazy = true }, + + -- you can use the VeryLazy event for things that can + -- load later and are not important for the initial UI + { "stevearc/dressing.nvim", event = "VeryLazy" }, + + { + "Wansmer/treesj", + keys = { + { "J", "TSJToggle", desc = "Join Toggle" }, + }, + opts = { use_default_keymaps = false, max_join_length = 150 }, + }, + + { + "monaqa/dial.nvim", + -- lazy-load on keys + -- mode is `n` by default. For more advanced options, check the section on key mappings + keys = { "", { "", mode = "n" } }, + }, + + -- local plugins need to be explicitly configured with dir + { dir = "~/projects/secret.nvim" }, + + -- you can use a custom url to fetch a plugin + { url = "git@github.com:folke/noice.nvim.git" }, + + -- local plugins can also be configured with the dev option. + -- This will use {config.dev.path}/noice.nvim/ instead of fetching it from GitHub + -- With the dev option, you can easily switch between the local and installed version of a plugin + { "folke/noice.nvim", dev = true }, + } +< + + +LAZY LOADING *lazy.nvim-🔌-plugin-spec-lazy-loading* + +**lazy.nvim** automagically lazy-loads Lua modules. This means that if you have +a plugin `A` that is lazy-loaded and a plugin `B` that requires a module of +plugin `A`, then plugin `A` will be loaded on demand as expected. + + +Additionally, you can also lazy-load on **events**, **commands**, **file +types** and **key mappings**. + +Plugins will be lazy-loaded when one of the following is `true`: + +- The plugin only exists as a dependency in your spec +- It has an `event`, `cmd`, `ft` or `keys` key +- `config.defaults.lazy == true` + + +🌈 COLORSCHEMES ~ + +Colorscheme plugins can be configured with `lazy=true`. The plugin will +automagically load when doing `colorscheme foobar`. + + + +⌨️ LAZY KEY MAPPINGS ~ + +The `keys` property can be a `string` or `string[]` for simple normal-mode +mappings, or it can be a `LazyKeysSpec` table with the following key-value +pairs: + +- **[1]**: (`string`) lhs **(required)** +- **[2]**: (`string|fun()`) rhs **(optional)** +- **mode**: (`string|string[]`) mode **(optional, defaults to "n")** +- **ft**: (`string|string[]`) `filetype` for buffer-local keymaps **(optional)** +- any other option valid for `vim.keymap.set` + +Key mappings will load the plugin the first time they get executed. + +When `[2]` is `nil`, then the real mapping has to be created by the `config()` +function. + +>lua + -- Example for neo-tree.nvim + { + "nvim-neo-tree/neo-tree.nvim", + keys = { + { "ft", "Neotree toggle", desc = "NeoTree" }, + }, + config = function() + require("neo-tree").setup() + end, + } +< + + +VERSIONING *lazy.nvim-🔌-plugin-spec-versioning* + +If you want to install a specific revision of a plugin, you can use `commit`, +`tag`, `branch`, `version`. + +The `version` property supports Semver ranges. + + + +EXAMPLES ~ + +- `*`: latest stable version (this excludes pre-release versions) +- `1.2.x`: any version that starts with `1.2`, such as `1.2.0`, `1.2.3`, etc. +- `^1.2.3`: any version that is compatible with `1.2.3`, such as `1.3.0`, `1.4.5`, etc., but not `2.0.0`. +- `~1.2.3`: any version that is compatible with `1.2.3`, such as `1.2.4`, `1.2.5`, but not `1.3.0`. +- `>1.2.3`: any version that is greater than `1.2.3`, such as `1.3.0`, `1.4.5`, etc. +- `>=1.2.3`: any version that is greater than or equal to `1.2.3`, such as `1.2.3`, `1.3.0`, `1.4.5`, etc. +- `<1.2.3`: any version that is less than `1.2.3`, such as `1.1.0`, `1.0.5`, etc. +- `<=1.2.3`: any version that is less than or equal to `1.2.3`, such as `1.2.3`, `1.1.0`, `1.0.5`, etc + + +============================================================================== +5. 📦 Packages *lazy.nvim-📦-packages* + +**lazy.nvim** supports three ways for plugins to define their dependencies and +configuration. + +- **Lazy**: `lazy.lua` file +- **Rockspec**: luarocks `*-scm-1.rockspec` file +- **Packspec**: `pkg.json` (experimental, since the format is not quite there yet) + +You can enable/disable package sources with `config.pkg.sources` +. The order of sources is important, as the first source that +finds a package will be used. + + + +LAZY *lazy.nvim-📦-packages-lazy* + +Using a `lazy.lua` file is the recommended way to define your plugin +dependencies and configuration. Syntax is the same as any plugin spec. + + +ROCKSPEC *lazy.nvim-📦-packages-rockspec* + +When a plugin contains a `*-1.rockspec` file, **lazy.nvim** will automatically +build the rock and its dependencies. + +A **rockspec** will only be used if one of the following is true: + +- the package does not have a `/lua` directory +- the package has a complex build step +- the package has dependencies (excluding `lua`) + + +PACKSPEC *lazy.nvim-📦-packages-packspec* + +Supports the pkg.json + format, with +a lazy extension in `lazy`. `lazy` can contain any valid lazy spec fields. They +will be added to the plugin’s spec. + + +============================================================================== +6. ⚙️ Configuration *lazy.nvim-⚙️-configuration* + +**lazy.nvim** comes with the following defaults: + +>lua + { + root = vim.fn.stdpath("data") .. "/lazy", -- directory where plugins will be installed + defaults = { + -- Set this to `true` to have all your plugins lazy-loaded by default. + -- Only do this if you know what you are doing, as it can lead to unexpected behavior. + lazy = false, -- should plugins be lazy-loaded? + -- It's recommended to leave version=false for now, since a lot the plugin that support versioning, + -- have outdated releases, which may break your Neovim install. + version = nil, -- always use the latest git commit + -- version = "*", -- try installing the latest stable version for plugins that support semver + -- default `cond` you can use to globally disable a lot of plugins + -- when running inside vscode for example + cond = nil, ---@type boolean|fun(self:LazyPlugin):boolean|nil + }, + -- leave nil when passing the spec as the first argument to setup() + spec = nil, ---@type LazySpec + local_spec = true, -- load project specific .lazy.lua spec files. They will be added at the end of the spec. + lockfile = vim.fn.stdpath("config") .. "/lazy-lock.json", -- lockfile generated after running update. + ---@type number? limit the maximum amount of concurrent tasks + concurrency = jit.os:find("Windows") and (vim.uv.available_parallelism() * 2) or nil, + git = { + -- defaults for the `Lazy log` command + -- log = { "--since=3 days ago" }, -- show commits from the last 3 days + log = { "-8" }, -- show the last 8 commits + timeout = 120, -- kill processes that take more than 2 minutes + url_format = "https://github.com/%s.git", + -- lazy.nvim requires git >=2.19.0. If you really want to use lazy with an older version, + -- then set the below to false. This should work, but is NOT supported and will + -- increase downloads a lot. + filter = true, + }, + pkg = { + enabled = true, + cache = vim.fn.stdpath("state") .. "/lazy/pkg-cache.lua", + versions = true, -- Honor versions in pkg sources + -- the first package source that is found for a plugin will be used. + sources = { + "lazy", + "rockspec", + "packspec", + }, + }, + rocks = { + root = vim.fn.stdpath("data") .. "/lazy-rocks", + server = "https://nvim-neorocks.github.io/rocks-binaries/", + }, + dev = { + ---@type string | fun(plugin: LazyPlugin): string directory where you store your local plugin projects + path = "~/projects", + ---@type string[] plugins that match these patterns will use your local versions instead of being fetched from GitHub + patterns = {}, -- For example {"folke"} + fallback = false, -- Fallback to git when local plugin doesn't exist + }, + install = { + -- install missing plugins on startup. This doesn't increase startup time. + missing = true, + -- try to load one of these colorschemes when starting an installation during startup + colorscheme = { "habamax" }, + }, + ui = { + -- a number <1 is a percentage., >1 is a fixed size + size = { width = 0.8, height = 0.8 }, + wrap = true, -- wrap the lines in the ui + -- The border to use for the UI window. Accepts same border values as |nvim_open_win()|. + border = "none", + -- The backdrop opacity. 0 is fully opaque, 100 is fully transparent. + backdrop = 60, + title = nil, ---@type string only works when border is not "none" + title_pos = "center", ---@type "center" | "left" | "right" + -- Show pills on top of the Lazy window + pills = true, ---@type boolean + icons = { + cmd = " ", + config = "", + event = " ", + favorite = " ", + ft = " ", + init = " ", + import = " ", + keys = " ", + lazy = "󰒲 ", + loaded = "●", + not_loaded = "○", + plugin = " ", + runtime = " ", + require = "󰢱 ", + source = " ", + start = " ", + task = "✔ ", + list = { + "●", + "➜", + "★", + "‒", + }, + }, + -- leave nil, to automatically select a browser depending on your OS. + -- If you want to use a specific browser, you can define it here + browser = nil, ---@type string? + throttle = 20, -- how frequently should the ui process render events + custom_keys = { + -- You can define custom key maps here. If present, the description will + -- be shown in the help menu. + -- To disable one of the defaults, set it to false. + + ["l"] = { + function(plugin) + require("lazy.util").float_term({ "lazygit", "log" }, { + cwd = plugin.dir, + }) + end, + desc = "Open lazygit log", + }, + + ["t"] = { + function(plugin) + require("lazy.util").float_term(nil, { + cwd = plugin.dir, + }) + end, + desc = "Open terminal in plugin dir", + }, + }, + }, + diff = { + -- diff command can be one of: + -- * browser: opens the github compare view. Note that this is always mapped to as well, + -- so you can have a different command for diff + -- * git: will run git diff and open a buffer with filetype git + -- * terminal_git: will open a pseudo terminal with git diff + -- * diffview.nvim: will open Diffview to show the diff + cmd = "git", + }, + checker = { + -- automatically check for plugin updates + enabled = false, + concurrency = nil, ---@type number? set to 1 to check for updates very slowly + notify = true, -- get a notification when new updates are found + frequency = 3600, -- check for updates every hour + check_pinned = false, -- check for pinned packages that can't be updated + }, + change_detection = { + -- automatically check for config file changes and reload the ui + enabled = true, + notify = true, -- get a notification when changes are found + }, + performance = { + cache = { + enabled = true, + }, + reset_packpath = true, -- reset the package path to improve startup time + rtp = { + reset = true, -- reset the runtime path to $VIMRUNTIME and your config directory + ---@type string[] + paths = {}, -- add any custom paths here that you want to includes in the rtp + ---@type string[] list any plugins you want to disable here + disabled_plugins = { + -- "gzip", + -- "matchit", + -- "matchparen", + -- "netrwPlugin", + -- "tarPlugin", + -- "tohtml", + -- "tutor", + -- "zipPlugin", + }, + }, + }, + -- lazy can generate helptags from the headings in markdown readme files, + -- so :help works even for plugins that don't have vim docs. + -- when the readme opens with :help it will be correctly displayed as markdown + readme = { + enabled = true, + root = vim.fn.stdpath("state") .. "/lazy/readme", + files = { "README.md", "lua/**/README.md" }, + -- only generate markdown helptags for plugins that dont have docs + skip_if_doc_exists = true, + }, + state = vim.fn.stdpath("state") .. "/lazy/state.json", -- state info for checker and other things + -- Enable profiling of lazy.nvim. This will add some overhead, + -- so only enable this when you are debugging lazy.nvim + profiling = { + -- Enables extra stats on the debug tab related to the loader cache. + -- Additionally gathers stats about all package.loaders + loader = false, + -- Track each new require in the Lazy profiling tab + require = false, + }, + } +< + +If you don’t want to use a Nerd Font, you can replace the icons with Unicode symbols. ~ + +>lua + { + ui = { + icons = { + cmd = "⌘", + config = "🛠", + event = "📅", + ft = "📂", + init = "⚙", + keys = "🗝", + plugin = "🔌", + runtime = "💻", + require = "🌙", + source = "📄", + start = "🚀", + task = "📌", + lazy = "💤 ", + }, + }, + } +< + + +🌈 HIGHLIGHT GROUPS *lazy.nvim-⚙️-configuration-🌈-highlight-groups* + + ----------------------------------------------------------------------- + Highlight Group Default Group Description + ----------------------- ----------------------- ----------------------- + LazyButton CursorLine + + LazyButtonActive Visual + + LazyComment Comment + + LazyCommit @variable.builtin commit ref + + LazyCommitIssue Number + + LazyCommitScope Italic conventional commit + scope + + LazyCommitType Title conventional commit + type + + LazyDimmed Conceal property + + LazyDir @markup.link directory + + LazyH1 IncSearch home button + + LazyH2 Bold titles + + LazyLocal Constant + + LazyNoCond DiagnosticWarn unloaded icon for a + plugin where cond() was + false + + LazyNormal NormalFloat + + LazyProgressDone Constant progress bar done + + LazyProgressTodo LineNr progress bar todo + + LazyProp Conceal property + + LazyReasonCmd Operator + + LazyReasonEvent Constant + + LazyReasonFt Character + + LazyReasonImport Identifier + + LazyReasonKeys Statement + + LazyReasonPlugin Special + + LazyReasonRequire @variable.parameter + + LazyReasonRuntime @macro + + LazyReasonSource Character + + LazyReasonStart @variable.member + + LazySpecial @punctuation.special + + LazyTaskError ErrorMsg task errors + + LazyTaskOutput MsgArea task output + + LazyUrl @markup.link url + + LazyValue @string value of a property + ----------------------------------------------------------------------- + +============================================================================== +7. 🚀 Usage *lazy.nvim-🚀-usage* + + +▶️ STARTUP SEQUENCE *lazy.nvim-🚀-usage-▶️-startup-sequence* + +**lazy.nvim** does **NOT** use Neovim packages and even disables plugin loading +completely (`vim.go.loadplugins = false`). It takes over the complete startup +sequence for more flexibility and better performance. + +In practice this means that step 10 of |Neovim Initialization| is done by Lazy: + +1. All the plugins’ `init()` functions are executed +2. All plugins with `lazy=false` are loaded. This includes sourcing `/plugin` and `/ftdetect` files. (`/after` will not be sourced yet) +3. All files from `/plugin` and `/ftdetect` directories in your rtp are sourced (excluding `/after`) +4. All `/after/plugin` files are sourced (this includes `/after` from plugins) + +Files from runtime directories are always sourced in alphabetical order. + + +🚀 COMMANDS *lazy.nvim-🚀-usage-🚀-commands* + +Plugins are managed with the `:Lazy` command. Open the help with `` to see +all the key mappings. + +You can press `` on a plugin to show its details. Most properties can be +hovered with `` to open links, help files, readmes, git commits and git +issues. + +Lazy can automatically check for updates in the background. This feature can be +enabled with `config.checker.enabled = true`. + +Any operation can be started from the UI, with a sub command or an API +function: + + ---------------------------------------------------------------------------------- + Command Lua Description + ------------------------- -------------------------------- ----------------------- + :Lazy build {plugins} require("lazy").build(opts) Rebuild a plugin + + :Lazy check [plugins] require("lazy").check(opts?) Check for updates and + show the log (git + fetch) + + :Lazy clean [plugins] require("lazy").clean(opts?) Clean plugins that are + no longer needed + + :Lazy clear require("lazy").clear() Clear finished tasks + + :Lazy debug require("lazy").debug() Show debug information + + :Lazy health require("lazy").health() Run :checkhealth lazy + + :Lazy help require("lazy").help() Toggle this help page + + :Lazy home require("lazy").home() Go back to plugin list + + :Lazy install [plugins] require("lazy").install(opts?) Install missing plugins + + :Lazy load {plugins} require("lazy").load(opts) Load a plugin that has + not been loaded yet. + Similar to :packadd. + Like + :Lazy load foo.nvim. + Use :Lazy! load to skip + cond checks. + + :Lazy log [plugins] require("lazy").log(opts?) Show recent updates + + :Lazy profile require("lazy").profile() Show detailed profiling + + :Lazy reload {plugins} require("lazy").reload(opts) Reload a plugin + (experimental!!) + + :Lazy restore [plugins] require("lazy").restore(opts?) Updates all plugins to + the state in the + lockfile. For a single + plugin: restore it to + the state in the + lockfile or to a given + commit under the cursor + + :Lazy sync [plugins] require("lazy").sync(opts?) Run install, clean and + update + + :Lazy update [plugins] require("lazy").update(opts?) Update plugins. This + will also update the + lockfile + ---------------------------------------------------------------------------------- +Any command can have a **bang** to make the command wait till it finished. For +example, if you want to sync lazy from the cmdline, you can use: + +>shell + nvim --headless "+Lazy! sync" +qa +< + +`opts` is a table with the following key-values: + +- **wait**: when true, then the call will wait till the operation completed +- **show**: when false, the UI will not be shown +- **plugins**: a list of plugin names to run the operation on +- **concurrency**: limit the `number` of concurrently running tasks + +Stats API (`require("lazy").stats()`): + +>lua + { + -- startuptime in milliseconds till UIEnter + startuptime = 0, + -- when true, startuptime is the accurate cputime for the Neovim process. (Linux & macOS) + -- this is more accurate than `nvim --startuptime`, and as such will be slightly higher + -- when false, startuptime is calculated based on a delta with a timestamp when lazy started. + real_cputime = false, + count = 0, -- total number of plugins + loaded = 0, -- number of loaded plugins + ---@type table + times = {}, + } +< + +**lazy.nvim** provides a statusline component that you can use to show the +number of pending updates. Make sure to enable `config.checker.enabled = true` +to make this work. + +Example of configuring lualine.nvim ~ + +>lua + require("lualine").setup({ + sections = { + lualine_x = { + { + require("lazy.status").updates, + cond = require("lazy.status").has_updates, + color = { fg = "#ff9e64" }, + }, + }, + }, + }) +< + + +📆 USER EVENTS *lazy.nvim-🚀-usage-📆-user-events* + +The following user events will be triggered: + +- **LazyDone**: when lazy has finished starting up and loaded your config +- **LazySync**: after running sync +- **LazyInstall**: after an install +- **LazyUpdate**: after an update +- **LazyClean**: after a clean +- **LazyCheck**: after checking for updates +- **LazyLog**: after running log +- **LazyLoad**: after loading a plugin. The `data` attribute will contain the plugin name. +- **LazySyncPre**: before running sync +- **LazyInstallPre**: before an install +- **LazyUpdatePre**: before an update +- **LazyCleanPre**: before a clean +- **LazyCheckPre**: before checking for updates +- **LazyLogPre**: before running log +- **LazyReload**: triggered by change detection after reloading plugin specs +- **VeryLazy**: triggered after `LazyDone` and processing `VimEnter` auto commands +- **LazyVimStarted**: triggered after `UIEnter` when `require("lazy").stats().startuptime` has been calculated. + Useful to update the startuptime on your dashboard. + + +❌ UNINSTALLING *lazy.nvim-🚀-usage-❌-uninstalling* + +To uninstall **lazy.nvim**, you need to remove the following files and +directories: + +- **data**: `~/.local/share/nvim/lazy` +- **state**: `~/.local/state/nvim/lazy` +- **lockfile**: `~/.config/nvim/lazy-lock.json` + + + Paths can differ if you changed `XDG` environment variables. + +🔒 LOCKFILE *lazy.nvim-🚀-usage-🔒-lockfile* + +After every **update**, the local lockfile (`lazy-lock.json`) is updated with +the installed revisions. It is recommended to have this file under version +control. + +If you use your Neovim config on multiple machines, using the lockfile, you can +ensure that the same version of every plugin is installed. + +If you are on another machine, you can do `:Lazy restore`, to update all your +plugins to the version from the lockfile. + + +📦 MIGRATION GUIDE *lazy.nvim-🚀-usage-📦-migration-guide* + + +PACKER.NVIM ~ + +- `setup` ➡️ `init` +- `requires` ➡️ `dependencies` +- `as` ➡️ `name` +- `opt` ➡️ `lazy` +- `run` ➡️ `build` +- `lock` ➡️ `pin` +- `disable=true` ➡️ `enabled = false` +- `tag='*'` ➡️ `version="*"` +- `after` is **not needed** for most use-cases. Use `dependencies` otherwise. +- `wants` is **not needed** for most use-cases. Use `dependencies` otherwise. +- `config` don’t support string type, use `fun(LazyPlugin)` instead. +- `module` is auto-loaded. No need to specify +- `keys` spec is |lazy.nvim-different| +- `rtp` can be accomplished with: + +>lua + config = function(plugin) + vim.opt.rtp:append(plugin.dir .. "/custom-rtp") + end +< + +With packer `wants`, `requires` and `after` can be used to manage dependencies. +With lazy, this isn’t needed for most of the Lua dependencies. They can be +installed just like normal plugins (even with `lazy=true`) and will be loaded +when other plugins need them. The `dependencies` key can be used to group those +required plugins with the one that requires them. The plugins which are added +as `dependencies` will always be lazy-loaded and loaded when the plugin is +loaded. + + +PAQ-NVIM ~ + +- `as` ➡️ `name` +- `opt` ➡️ `lazy` +- `run` ➡️ `build` + + +⚡ PROFILING & DEBUG *lazy.nvim-🚀-usage-⚡-profiling-&-debug* + +Great care has been taken to make the startup code (`lazy.core`) as efficient +as possible. During startup, all Lua files used before `VimEnter` or +`BufReadPre` are byte-compiled and cached, similar to what impatient.nvim + does. + +My config for example loads in about `11ms` with `93` plugins. I do a lot of +lazy-loading though :) + +**lazy.nvim** comes with an advanced profiler `:Lazy profile` to help you +improve performance. The profiling view shows you why and how long it took to +load your plugins. + + +🐛 DEBUG ~ + +See an overview of active lazy-loading handlers and what’s in the module +cache. + + +📂 STRUCTURING YOUR PLUGINS*lazy.nvim-🚀-usage-📂-structuring-your-plugins* + +Some users may want to split their plugin specs in multiple files. Instead of +passing a spec table to `setup()`, you can use a Lua module. The specs from the +**module** and any top-level **sub-modules** will be merged together in the +final spec, so it is not needed to add `require` calls in your main plugin file +to the other files. + +The benefits of using this approach: + +- Simple to **add** new plugin specs. Just create a new file in your plugins module. +- Allows for **caching** of all your plugin specs. This becomes important if you have a lot of smaller plugin specs. +- Spec changes will automatically be **reloaded** when they’re updated, so the `:Lazy` UI is always up to date. + +Example: + +- `~/.config/nvim/init.lua` + +>lua + require("lazy").setup("plugins") +< + +- `~/.config/nvim/lua/plugins.lua` or `~/.config/nvim/lua/plugins/init.lua` **(this file is optional)** + +>lua + return { + "folke/neodev.nvim", + "folke/which-key.nvim", + { "folke/neoconf.nvim", cmd = "Neoconf" }, + } +< + +- Any lua file in `~/.config/nvim/lua/plugins/*.lua` will be automatically merged in the main plugin spec + +For a real-life example, you can check LazyVim + and more specifically: + +- lazyvim.plugins contains all the plugin specs that will be loaded + + +↩️ IMPORTING SPECS, CONFIG & OPTS + +As part of a spec, you can add `import` statements to import additional plugin +modules. Both of the `setup()` calls are equivalent: + +>lua + require("lazy").setup("plugins") + + -- Same as: + require("lazy").setup({{import = "plugins"}}) +< + +To import multiple modules from a plugin, add additional specs for each import. +For example, to import LazyVim core plugins and an optional plugin: + +>lua + require("lazy").setup({ + spec = { + { "LazyVim/LazyVim", import = "lazyvim.plugins" }, + { import = "lazyvim.plugins.extras.coding.copilot" }, + } + }) +< + +When you import specs, you can override them by simply adding a spec for the +same plugin to your local specs, adding any keys you want to override / merge. + +`opts`, `dependencies`, `cmd`, `event`, `ft` and `keys` are always merged with +the parent spec. Any other property will override the property from the parent +spec. + + +============================================================================== +8. 🔥 Developers *lazy.nvim-🔥-developers* + +To make it easier for users to install your plugin, you can include a package +spec in your repo. + + +BEST PRACTICES *lazy.nvim-🔥-developers-best-practices* + +- If your plugin needs `setup()`, then create a simple `lazy.lua` file like this: + >lua + return { "me/my-plugin", opts = {} } + < +- Plugins that are pure lua libraries should be lazy-loaded with `lazy = true`. + >lua + { "nvim-lua/plenary.nvim", lazy = true } + < +- Always use `opts` instead of `config` when possible. `config` is almost never + needed. +- Only use `dependencies` if a plugin needs the dep to be installed **AND** + loaded. Lua plugins/libraries are automatically loaded when they are + `require()`d, so they don’t need to be in `dependencies`. +- Inside a `build` function or `*.lua` build file, use + `coroutine.yield(msg:string|LazyMsg)` to show progress. +- Don’t change the `cwd` in your build function, since builds run in parallel + and changing the `cwd` will affect other builds. + + +BUILDING *lazy.nvim-🔥-developers-building* + +The spec **build** property can be one of the following: + +- `fun(plugin: LazyPlugin)`: a function that builds the plugin. +- `*.lua`: a Lua file that builds the plugin (like `build.lua`) +- `":Command"`: a Neovim command +- `"rockspec"`: this will run `luarocks make` in the plugin’s directory + This is automatically set by the `rockspec` package source. +- any other **string** will be run as a shell command +- a `list` of any of the above to run multiple build steps +- if no `build` is specified, but a `build.lua` file exists, that will be used instead. + +Build functions and `*.lua` files run asynchronously in a coroutine. Use +`coroutine.yield(msg:string|LazyMsg)` to show progress. + +Yielding will also schedule the next `coroutine.resume()` to run in the next +tick, so you can do long-running tasks without blocking Neovim. + +>lua + ---@class LazyMsg + ---@field msg string + ---@field level? number vim.log.levels.XXX +< + +Use `vim.log.levels.TRACE` to only show the message as a **status** message for +the task. + + + +MINIT (MINIMAL INIT) *lazy.nvim-🔥-developers-minit-(minimal-init)* + +**lazy.nvim** comes with some built-in functionality to help you create a +minimal init for your plugin. + +I mainly use this for testing and for users to create a `repro.lua`. + +When running in **headless** mode, **lazy.nvim** will log any messages to the +terminal. See `opts.headless` for more info. + +**minit** will install/load all your specs and will always run an update as +well. + + +BOOTSTRAP ~ + +>lua + -- setting this env will override all XDG paths + vim.env.LAZY_STDPATH = ".tests" + -- this will install lazy in your stdpath + load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() +< + + +TESTING WITH BUSTED ~ + +This will add `"lunarmodules/busted"`, configure `hererocks` and run `busted`. + +Below is an example of how I use **minit** to run tests with busted + in **LazyVim**. + +>lua + #!/usr/bin/env -S nvim -l + + vim.env.LAZY_STDPATH = ".tests" + load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() + + -- Setup lazy.nvim + require("lazy.minit").busted({ + spec = { + "LazyVim/starter", + "williamboman/mason-lspconfig.nvim", + "williamboman/mason.nvim", + "nvim-treesitter/nvim-treesitter", + }, + }) +< + +To use this, you can run: + +>sh + nvim -l ./tests/busted.lua tests +< + +If you want to inspect the test environment, run: + +>sh + nvim -u ./tests/busted.lua +< + + +REPRO.LUA ~ + +>lua + vim.env.LAZY_STDPATH = ".repro" + load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() + + require("lazy.minit").repro({ + spec = { + "stevearc/conform.nvim", + "nvim-neotest/nvim-nio", + }, + }) + + -- do anything else you need to do to reproduce the issue +< + +Then run it with: + +>sh + nvim -u repro.lua +< + +============================================================================== +9. Links *lazy.nvim-links* 1. *image*: https://user-images.githubusercontent.com/292349/208301737-68fb279c-ba70-43ef-a369-8c3e8367d6b1.png +2. *image*: https://user-images.githubusercontent.com/292349/208301766-5c400561-83c3-4811-9667-1ec4bb3c43b8.png +3. *image*: https://user-images.githubusercontent.com/292349/208301790-7eedbfa5-d202-4e70-852e-de68aa47233b.png Generated by panvimdoc From f0324defdd43be8aa14aaf3a794ff3d5581f36ba Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Mon, 8 Jul 2024 07:45:43 +0200 Subject: [PATCH 250/342] fix(rocks): try building anyway even when prerequisits have not been met. (will likely fail) --- lua/lazy/manage/task/fs.lua | 11 +++++-- lua/lazy/pkg/rockspec.lua | 57 +++++++++++++++++++++---------------- 2 files changed, 41 insertions(+), 27 deletions(-) diff --git a/lua/lazy/manage/task/fs.lua b/lua/lazy/manage/task/fs.lua index 3401c29..41a18a8 100644 --- a/lua/lazy/manage/task/fs.lua +++ b/lua/lazy/manage/task/fs.lua @@ -21,16 +21,23 @@ M.clean = { skip = function(plugin) return plugin._.is_local end, - run = function(self) + ---@param opts? {rocks_only?:boolean} + run = function(self, opts) + opts = opts or {} local dir = self.plugin.dir:gsub("/+$", "") assert(dir:find(Config.options.root, 1, true) == 1, self.plugin.dir .. " should be under packpath!") - rm(dir) local rock_root = Config.options.rocks.root .. "/" .. self.plugin.name if vim.uv.fs_stat(rock_root) then rm(rock_root) end + if opts.rocks_only then + return + end + + rm(dir) + self.plugin._.installed = false end, } diff --git a/lua/lazy/pkg/rockspec.lua b/lua/lazy/pkg/rockspec.lua index e1d2c6e..19d580d 100644 --- a/lua/lazy/pkg/rockspec.lua +++ b/lua/lazy/pkg/rockspec.lua @@ -78,25 +78,23 @@ function M.check(opts) else ok = Health.have(M.python, opts) ok = Health.have(M.hererocks.bin("luarocks")) and ok - ok = Health.have( + Health.have( M.hererocks.bin("lua"), vim.tbl_extend("force", opts, { version = "-v", version_pattern = "5.1", }) - ) and ok + ) end else ok = Health.have("luarocks", opts) - ok = ( - Health.have( - { "lua5.1", "lua", "lua-5.1" }, - vim.tbl_extend("force", opts, { - version = "-v", - version_pattern = "5.1", - }) - ) - ) and ok + Health.have( + { "lua5.1", "lua", "lua-5.1" }, + vim.tbl_extend("force", opts, { + version = "-v", + version_pattern = "5.1", + }) + ) end return ok end @@ -104,17 +102,17 @@ end ---@async ---@param task LazyTask function M.build(task) - if - not M.check({ - error = function(msg) - task:error(msg:gsub("[{}]", "`")) - end, - warn = function(msg) - task:warn(msg) - end, - ok = function(msg) end, - }) - then + M.check({ + error = function(msg) + task:error(msg:gsub("[{}]", "`")) + end, + warn = function(msg) + task:warn(msg) + end, + ok = function(msg) end, + }) + + if task:has_warnings() then task:log({ "", "This plugin requires `luarocks`. Try one of the following:", @@ -123,7 +121,11 @@ function M.build(task) or " - enable `hererocks` with `opts.rocks.hererocks = true`", " - disable `luarocks` support completely with `opts.rocks.enabled = false`", }) - return + task:warn("\nWill try building anyway, but will likely fail...") + + task:warn("\n" .. string.rep("-", 80) .. "\n") + + task:set_level(vim.log.levels.WARN) end if task.plugin.name == "hererocks" then @@ -187,11 +189,13 @@ function M.build(task) return end - task:warn("Failed installing " .. rockspec.package .. " with `luarocks`.\nTrying to build from source.") + task:warn("Failed installing " .. rockspec.package .. " with `luarocks`.") + task:warn("\n" .. string.rep("-", 80) .. "\n") + task:warn("Trying to build from source.") -- install failed, so try building from source task:set_level() -- reset level - task:spawn(luarocks, { + ok = task:spawn(luarocks, { args = { "--tree", root, @@ -206,6 +210,9 @@ function M.build(task) cwd = task.plugin.dir, env = env, }) + if not ok then + require("lazy.manage.task.fs").clean.run(task, { rocks_only = true }) + end end ---@param rockspec RockSpec From a4c473cc2d30717a211f1bef4f99b0b6f9914efa Mon Sep 17 00:00:00 2001 From: folke Date: Mon, 8 Jul 2024 05:46:33 +0000 Subject: [PATCH 251/342] chore(build): auto-generate docs --- doc/lazy.nvim.txt | 1398 ++------------------------------------------- 1 file changed, 46 insertions(+), 1352 deletions(-) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index c2c9695..476bdf7 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -1,130 +1,61 @@ -*lazy.nvim.txt* A modern plugin manager for Neovim +*lazy.nvim.txt* For Neovim Last change: 2024 July 08 ============================================================================== 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. 📰 What’s new? *lazy.nvim-📰-what’s-new?* + - Features |lazy.nvim-features| + - Requirements |lazy.nvim-requirements| + - Getting Started |lazy.nvim-getting-started| +1. Links |lazy.nvim-links| +Install +· +Configure +· +Docs + + + + + + + + + + + + + + -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 . The GitHub `README.md` - has been updated to point to the new website. The `vimdoc` contains all the - information that is available on the website. -- **Spec Resolution & Merging**: the code that resolves a final spec from a - plugin’s fragments has been rewritten. This should be a tiny bit faster, but - more importantly, fixes some issues and is easier to maintain. -- Packages can now specify their dependencies - and configuration using one of: - - **Lazy**: `lazy.lua` file - - **Rockspec**: luarocks `*-scm-1.rockspec` file - - **Packspec**: `pkg.json` (experimental, since the format is not quite there yet) - Related _lazy.nvim_ options: - >lua - { - pkg = { - enabled = true, - cache = vim.fn.stdpath("state") .. "/lazy/pkg-cache.lua", - -- the first package source that is found for a plugin will be used. - sources = { - "lazy", - "rockspec", -- will only be used when rocks.enabled is true - "packspec", - }, - }, - rocks = { - enabled = true, - root = vim.fn.stdpath("data") .. "/lazy-rocks", - server = "https://nvim-neorocks.github.io/rocks-binaries/", - }, - } - < -- Installing neorg is now as simple as: - >lua - { "nvim-neorg/neorg", opts = {} } - < -- Packages are not limited to just Neovim plugins. You can install any - **luarocks** package, like: - >lua - { "https://github.com/lubyk/yaml" } - < - Luarocks packages without a `/lua` directory are never lazy-loaded, since - it’s just a library. -- `build` functions or `*.lua` build files (like `build.lua`) now run - asynchronously. You can use `coroutine.yield(status_msg)` to show progress. - Yielding will also schedule the next `resume` to run in the next tick, so you - can do long-running tasks without blocking Neovim. -============================================================================== -2. 🚀 Getting Started *lazy.nvim-🚀-getting-started* **lazy.nvim** is a modern plugin manager for Neovim. -✨ FEATURES *lazy.nvim-🚀-getting-started-✨-features* +FEATURES *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 support -- 📈 Statusline component to see the number of pending updates -- 🎨 Automatically lazy-loads colorschemes +- 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 support +- Statusline component to see the number of pending updates +- Automatically lazy-loads colorschemes -⚡️ REQUIREMENTS *lazy.nvim-🚀-getting-started-⚡️-requirements* +REQUIREMENTS *lazy.nvim-requirements* - Neovim >= **0.8.0** (needs to be built with **LuaJIT**) - Git >= **2.19.0** (for partial clones support) @@ -133,1251 +64,14 @@ Table of Contents *lazy.nvim-table-of-contents* You can remove `rockspec` from `opts.pkg.sources` to disable this feature. -============================================================================== -3. 🛠️ Installation *lazy.nvim-🛠️-installation* - -There are multiple ways to install **lazy.nvim**. The **Structured Setup** is -the recommended way, but you can also use the **Single File Setup** if you -prefer to keep everything in your `init.lua`. - -Please refer to the Configuration section for an overview of -all available options. - - - - -STRUCTURED SETUP *lazy.nvim-🛠️-installation-structured-setup* - ->lua - require("config.lazy") -< - ->lua - -- Bootstrap lazy.nvim - local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" - if not (vim.uv or vim.loop).fs_stat(lazypath) then - local lazyrepo = "https://github.com/folke/lazy.nvim.git" - local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) - if vim.v.shell_error ~= 0 then - vim.api.nvim_echo({ - { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, - { out, "WarningMsg" }, - { "\nPress any key to exit..." }, - }, true, {}) - vim.fn.getchar() - os.exit(1) - end - end - vim.opt.rtp:prepend(lazypath) - - -- Make sure to setup `mapleader` and `maplocalleader` before - -- loading lazy.nvim so that mappings are correct. - -- This is also a good place to setup other settings (vim.opt) - vim.g.mapleader = " " - vim.g.maplocalleader = "\\" - - -- Setup lazy.nvim - require("lazy").setup({ - -- highlight-start - spec = { - -- import your plugins - { import = "plugins" }, - }, - -- highlight-end - -- Configure any other settings here. See the documentation for more details. - -- colorscheme that will be used when installing plugins. - install = { colorscheme = { "habamax" } }, - -- automatically check for plugin updates - checker = { enabled = true }, - }) -< - -You can then create your plugin specs in `~/.config/nvim/lua/plugins/`. Each -file should return a table with the plugins you want to install. - -For more info see Structuring Your Plugins - - -SINGLE FILE SETUP *lazy.nvim-🛠️-installation-single-file-setup* - ->lua - -- Bootstrap lazy.nvim - local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" - if not (vim.uv or vim.loop).fs_stat(lazypath) then - local lazyrepo = "https://github.com/folke/lazy.nvim.git" - local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) - if vim.v.shell_error ~= 0 then - vim.api.nvim_echo({ - { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, - { out, "WarningMsg" }, - { "\nPress any key to exit..." }, - }, true, {}) - vim.fn.getchar() - os.exit(1) - end - end - vim.opt.rtp:prepend(lazypath) - - -- Make sure to setup `mapleader` and `maplocalleader` before - -- loading lazy.nvim so that mappings are correct. - -- This is also a good place to setup other settings (vim.opt) - vim.g.mapleader = " " - vim.g.maplocalleader = "\\" - - -- Setup lazy.nvim - require("lazy").setup({ - -- highlight-start - spec = { - -- add your plugins here - }, - -- highlight-end - -- Configure any other settings here. See the documentation for more details. - -- colorscheme that will be used when installing plugins. - install = { colorscheme = { "habamax" } }, - -- automatically check for plugin updates - checker = { enabled = true }, - }) -< +GETTING STARTED *lazy.nvim-getting-started* +Check the documentation website for more information. ============================================================================== -4. 🔌 Plugin Spec *lazy.nvim-🔌-plugin-spec* - - -SPEC SOURCE *lazy.nvim-🔌-plugin-spec-spec-source* - - ----------------------------------------------------------------------------------- - Property Type Description - ---------- ---------- ------------------------------------------------------------- - [1] string? Short plugin url. Will be expanded using - config.git.url_format. Can also be a url or dir. - - dir string? A directory pointing to a local plugin - - url string? A custom git url where the plugin is hosted - - name string? A custom name for the plugin used for the local plugin - directory and as the display name - - dev boolean? When true, a local plugin directory will be used instead. See - config.dev - ----------------------------------------------------------------------------------- -A valid spec should define one of `[1]`, `dir` or `url`. - - -SPEC LOADING *lazy.nvim-🔌-plugin-spec-spec-loading* - - -------------------------------------------------------------------------------------------------- - Property Type Description - -------------- ------------------------- --------------------------------------------------------- - dependencies LazySpec[] A list of plugin names or plugin specs that should be - loaded when the plugin loads. Dependencies are always - lazy-loaded unless specified otherwise. When specifying a - name, make sure the plugin spec has been defined - somewhere else. - - enabled boolean? or fun():boolean When false, or if the function returns false, then this - plugin will not be included in the spec - - cond boolean? or Behaves the same as enabled, but won’t uninstall the - fun(LazyPlugin):boolean plugin when the condition is false. Useful to disable - some plugins in vscode, or firenvim for example. - - priority number? Only useful for start plugins (lazy=false) to force - loading certain plugins first. Default priority is 50. - It’s recommended to set this to a high number for - colorschemes. - -------------------------------------------------------------------------------------------------- - -SPEC SETUP *lazy.nvim-🔌-plugin-spec-spec-setup* - - -------------------------------------------------------------------------------------------------- - Property Type Description - ---------- ----------------------------- --------------------------------------------------------- - init fun(LazyPlugin) init functions are always executed during startup. Mostly - useful for setting vim.g.* configuration used by Vim - plugins startup - - opts table or opts should be a table (will be merged with parent - fun(LazyPlugin, opts:table) specs), return a table (replaces parent specs) or should - change a table. The table will be passed to the - Plugin.config() function. Setting this value will imply - Plugin.config() - - config fun(LazyPlugin, opts:table) config is executed when the plugin loads. The default - or true implementation will automatically run - require(MAIN).setup(opts) if opts or config = true is - set. Lazy uses several heuristics to determine the - plugin’s MAIN module automatically based on the plugin’s - name. (opts is the recommended way to configure plugins). - - main string? You can specify the main module to use for config() and - opts(), in case it can not be determined automatically. - See config() - - build fun(LazyPlugin) or string or build is executed when a plugin is installed or updated. - false or a list of build See Building for more information. - commands - -------------------------------------------------------------------------------------------------- -Always use `opts` instead of `config` when possible. `config` is almost never -needed. - - - - -SPEC LAZY LOADING *lazy.nvim-🔌-plugin-spec-spec-lazy-loading* - - -------------------------------------------------------------------------------------------------------------------- - Property Type Description - ---------- ---------------------------------------------------------------- ---------------------------------------- - lazy boolean? When true, the plugin will only be - loaded when needed. Lazy-loaded plugins - are automatically loaded when their Lua - modules are required, or when one of the - lazy-loading handlers triggers - - event string? or string[] or Lazy-load on event. Events can be - fun(self:LazyPlugin, event:string[]):string[] or specified as BufEnter or with a pattern - {event:string[]\|string, pattern?:string[]\|string} like BufEnter *.lua - - cmd string? or string[] or Lazy-load on command - fun(self:LazyPlugin, cmd:string[]):string[] - - ft string? or string[] or Lazy-load on filetype - fun(self:LazyPlugin, ft:string[]):string[] - - keys string? or string[] or LazyKeysSpec[] or Lazy-load on key mapping - fun(self:LazyPlugin, keys:string[]):(string \| LazyKeysSpec)[] - -------------------------------------------------------------------------------------------------------------------- -Refer to the Lazy Loading <./lazy_loading.md> section for more information. - - -SPEC VERSIONING *lazy.nvim-🔌-plugin-spec-spec-versioning* - - ------------------------------------------------------------------------------ - Property Type Description - ------------ -------------------- -------------------------------------------- - branch string? Branch of the repository - - tag string? Tag of the repository - - commit string? Commit of the repository - - version string? or false to Version to use from the repository. Full - override the default Semver ranges are supported - - pin boolean? When true, this plugin will not be included - in updates - - submodules boolean? When false, git submodules will not be - fetched. Defaults to true - ------------------------------------------------------------------------------ -Refer to the Versioning <./versioning.md> section for more information. - - -SPEC ADVANCED *lazy.nvim-🔌-plugin-spec-spec-advanced* - - ---------------------------------------------------------------------------------------- - Property Type Description - ---------- ---------- ------------------------------------------------------------------ - optional boolean? When a spec is tagged optional, it will only be included in the - final spec, when the same plugin has been specified at least once - somewhere else without optional. This is mainly useful for Neovim - distros, to allow setting options on plugins that may/may not be - part of the user’s plugins. - - specs LazySpec A list of plugin specs defined in the scope of the plugin. This is - mainly useful for Neovim distros, to allow setting options on - plugins that may/may not be part of the user’s plugins. When the - plugin is disabled, none of the scoped specs will be included in - the final spec. Similar to dependencies without the automatic - loading of the specs. - - module false? Do not automatically load this Lua module when it’s required - somewhere - - import string? Import the given spec module. - ---------------------------------------------------------------------------------------- - -EXAMPLES *lazy.nvim-🔌-plugin-spec-examples* - ->lua - return { - -- the colorscheme should be available when starting Neovim - { - "folke/tokyonight.nvim", - lazy = false, -- make sure we load this during startup if it is your main colorscheme - priority = 1000, -- make sure to load this before all the other start plugins - config = function() - -- load the colorscheme here - vim.cmd([[colorscheme tokyonight]]) - end, - }, - - -- I have a separate config.mappings file where I require which-key. - -- With lazy the plugin will be automatically loaded when it is required somewhere - { "folke/which-key.nvim", lazy = true }, - - { - "nvim-neorg/neorg", - -- lazy-load on filetype - ft = "norg", - -- options for neorg. This will automatically call `require("neorg").setup(opts)` - opts = { - load = { - ["core.defaults"] = {}, - }, - }, - }, - - { - "dstein64/vim-startuptime", - -- lazy-load on a command - cmd = "StartupTime", - -- init is called during startup. Configuration for vim plugins typically should be set in an init function - init = function() - vim.g.startuptime_tries = 10 - end, - }, - - { - "hrsh7th/nvim-cmp", - -- load cmp on InsertEnter - event = "InsertEnter", - -- these dependencies will only be loaded when cmp loads - -- dependencies are always lazy-loaded unless specified otherwise - dependencies = { - "hrsh7th/cmp-nvim-lsp", - "hrsh7th/cmp-buffer", - }, - config = function() - -- ... - end, - }, - - -- if some code requires a module from an unloaded plugin, it will be automatically loaded. - -- So for api plugins like devicons, we can always set lazy=true - { "nvim-tree/nvim-web-devicons", lazy = true }, - - -- you can use the VeryLazy event for things that can - -- load later and are not important for the initial UI - { "stevearc/dressing.nvim", event = "VeryLazy" }, - - { - "Wansmer/treesj", - keys = { - { "J", "TSJToggle", desc = "Join Toggle" }, - }, - opts = { use_default_keymaps = false, max_join_length = 150 }, - }, - - { - "monaqa/dial.nvim", - -- lazy-load on keys - -- mode is `n` by default. For more advanced options, check the section on key mappings - keys = { "", { "", mode = "n" } }, - }, - - -- local plugins need to be explicitly configured with dir - { dir = "~/projects/secret.nvim" }, - - -- you can use a custom url to fetch a plugin - { url = "git@github.com:folke/noice.nvim.git" }, - - -- local plugins can also be configured with the dev option. - -- This will use {config.dev.path}/noice.nvim/ instead of fetching it from GitHub - -- With the dev option, you can easily switch between the local and installed version of a plugin - { "folke/noice.nvim", dev = true }, - } -< - - -LAZY LOADING *lazy.nvim-🔌-plugin-spec-lazy-loading* - -**lazy.nvim** automagically lazy-loads Lua modules. This means that if you have -a plugin `A` that is lazy-loaded and a plugin `B` that requires a module of -plugin `A`, then plugin `A` will be loaded on demand as expected. - - -Additionally, you can also lazy-load on **events**, **commands**, **file -types** and **key mappings**. - -Plugins will be lazy-loaded when one of the following is `true`: - -- The plugin only exists as a dependency in your spec -- It has an `event`, `cmd`, `ft` or `keys` key -- `config.defaults.lazy == true` - - -🌈 COLORSCHEMES ~ - -Colorscheme plugins can be configured with `lazy=true`. The plugin will -automagically load when doing `colorscheme foobar`. - - - -⌨️ LAZY KEY MAPPINGS ~ - -The `keys` property can be a `string` or `string[]` for simple normal-mode -mappings, or it can be a `LazyKeysSpec` table with the following key-value -pairs: - -- **[1]**: (`string`) lhs **(required)** -- **[2]**: (`string|fun()`) rhs **(optional)** -- **mode**: (`string|string[]`) mode **(optional, defaults to "n")** -- **ft**: (`string|string[]`) `filetype` for buffer-local keymaps **(optional)** -- any other option valid for `vim.keymap.set` - -Key mappings will load the plugin the first time they get executed. - -When `[2]` is `nil`, then the real mapping has to be created by the `config()` -function. - ->lua - -- Example for neo-tree.nvim - { - "nvim-neo-tree/neo-tree.nvim", - keys = { - { "ft", "Neotree toggle", desc = "NeoTree" }, - }, - config = function() - require("neo-tree").setup() - end, - } -< - - -VERSIONING *lazy.nvim-🔌-plugin-spec-versioning* - -If you want to install a specific revision of a plugin, you can use `commit`, -`tag`, `branch`, `version`. - -The `version` property supports Semver ranges. - - - -EXAMPLES ~ - -- `*`: latest stable version (this excludes pre-release versions) -- `1.2.x`: any version that starts with `1.2`, such as `1.2.0`, `1.2.3`, etc. -- `^1.2.3`: any version that is compatible with `1.2.3`, such as `1.3.0`, `1.4.5`, etc., but not `2.0.0`. -- `~1.2.3`: any version that is compatible with `1.2.3`, such as `1.2.4`, `1.2.5`, but not `1.3.0`. -- `>1.2.3`: any version that is greater than `1.2.3`, such as `1.3.0`, `1.4.5`, etc. -- `>=1.2.3`: any version that is greater than or equal to `1.2.3`, such as `1.2.3`, `1.3.0`, `1.4.5`, etc. -- `<1.2.3`: any version that is less than `1.2.3`, such as `1.1.0`, `1.0.5`, etc. -- `<=1.2.3`: any version that is less than or equal to `1.2.3`, such as `1.2.3`, `1.1.0`, `1.0.5`, etc - - -============================================================================== -5. 📦 Packages *lazy.nvim-📦-packages* - -**lazy.nvim** supports three ways for plugins to define their dependencies and -configuration. - -- **Lazy**: `lazy.lua` file -- **Rockspec**: luarocks `*-scm-1.rockspec` file -- **Packspec**: `pkg.json` (experimental, since the format is not quite there yet) - -You can enable/disable package sources with `config.pkg.sources` -. The order of sources is important, as the first source that -finds a package will be used. - - - -LAZY *lazy.nvim-📦-packages-lazy* - -Using a `lazy.lua` file is the recommended way to define your plugin -dependencies and configuration. Syntax is the same as any plugin spec. - - -ROCKSPEC *lazy.nvim-📦-packages-rockspec* - -When a plugin contains a `*-1.rockspec` file, **lazy.nvim** will automatically -build the rock and its dependencies. - -A **rockspec** will only be used if one of the following is true: - -- the package does not have a `/lua` directory -- the package has a complex build step -- the package has dependencies (excluding `lua`) - - -PACKSPEC *lazy.nvim-📦-packages-packspec* - -Supports the pkg.json - format, with -a lazy extension in `lazy`. `lazy` can contain any valid lazy spec fields. They -will be added to the plugin’s spec. - - -============================================================================== -6. ⚙️ Configuration *lazy.nvim-⚙️-configuration* - -**lazy.nvim** comes with the following defaults: - ->lua - { - root = vim.fn.stdpath("data") .. "/lazy", -- directory where plugins will be installed - defaults = { - -- Set this to `true` to have all your plugins lazy-loaded by default. - -- Only do this if you know what you are doing, as it can lead to unexpected behavior. - lazy = false, -- should plugins be lazy-loaded? - -- It's recommended to leave version=false for now, since a lot the plugin that support versioning, - -- have outdated releases, which may break your Neovim install. - version = nil, -- always use the latest git commit - -- version = "*", -- try installing the latest stable version for plugins that support semver - -- default `cond` you can use to globally disable a lot of plugins - -- when running inside vscode for example - cond = nil, ---@type boolean|fun(self:LazyPlugin):boolean|nil - }, - -- leave nil when passing the spec as the first argument to setup() - spec = nil, ---@type LazySpec - local_spec = true, -- load project specific .lazy.lua spec files. They will be added at the end of the spec. - lockfile = vim.fn.stdpath("config") .. "/lazy-lock.json", -- lockfile generated after running update. - ---@type number? limit the maximum amount of concurrent tasks - concurrency = jit.os:find("Windows") and (vim.uv.available_parallelism() * 2) or nil, - git = { - -- defaults for the `Lazy log` command - -- log = { "--since=3 days ago" }, -- show commits from the last 3 days - log = { "-8" }, -- show the last 8 commits - timeout = 120, -- kill processes that take more than 2 minutes - url_format = "https://github.com/%s.git", - -- lazy.nvim requires git >=2.19.0. If you really want to use lazy with an older version, - -- then set the below to false. This should work, but is NOT supported and will - -- increase downloads a lot. - filter = true, - }, - pkg = { - enabled = true, - cache = vim.fn.stdpath("state") .. "/lazy/pkg-cache.lua", - versions = true, -- Honor versions in pkg sources - -- the first package source that is found for a plugin will be used. - sources = { - "lazy", - "rockspec", - "packspec", - }, - }, - rocks = { - root = vim.fn.stdpath("data") .. "/lazy-rocks", - server = "https://nvim-neorocks.github.io/rocks-binaries/", - }, - dev = { - ---@type string | fun(plugin: LazyPlugin): string directory where you store your local plugin projects - path = "~/projects", - ---@type string[] plugins that match these patterns will use your local versions instead of being fetched from GitHub - patterns = {}, -- For example {"folke"} - fallback = false, -- Fallback to git when local plugin doesn't exist - }, - install = { - -- install missing plugins on startup. This doesn't increase startup time. - missing = true, - -- try to load one of these colorschemes when starting an installation during startup - colorscheme = { "habamax" }, - }, - ui = { - -- a number <1 is a percentage., >1 is a fixed size - size = { width = 0.8, height = 0.8 }, - wrap = true, -- wrap the lines in the ui - -- The border to use for the UI window. Accepts same border values as |nvim_open_win()|. - border = "none", - -- The backdrop opacity. 0 is fully opaque, 100 is fully transparent. - backdrop = 60, - title = nil, ---@type string only works when border is not "none" - title_pos = "center", ---@type "center" | "left" | "right" - -- Show pills on top of the Lazy window - pills = true, ---@type boolean - icons = { - cmd = " ", - config = "", - event = " ", - favorite = " ", - ft = " ", - init = " ", - import = " ", - keys = " ", - lazy = "󰒲 ", - loaded = "●", - not_loaded = "○", - plugin = " ", - runtime = " ", - require = "󰢱 ", - source = " ", - start = " ", - task = "✔ ", - list = { - "●", - "➜", - "★", - "‒", - }, - }, - -- leave nil, to automatically select a browser depending on your OS. - -- If you want to use a specific browser, you can define it here - browser = nil, ---@type string? - throttle = 20, -- how frequently should the ui process render events - custom_keys = { - -- You can define custom key maps here. If present, the description will - -- be shown in the help menu. - -- To disable one of the defaults, set it to false. - - ["l"] = { - function(plugin) - require("lazy.util").float_term({ "lazygit", "log" }, { - cwd = plugin.dir, - }) - end, - desc = "Open lazygit log", - }, - - ["t"] = { - function(plugin) - require("lazy.util").float_term(nil, { - cwd = plugin.dir, - }) - end, - desc = "Open terminal in plugin dir", - }, - }, - }, - diff = { - -- diff command can be one of: - -- * browser: opens the github compare view. Note that this is always mapped to as well, - -- so you can have a different command for diff - -- * git: will run git diff and open a buffer with filetype git - -- * terminal_git: will open a pseudo terminal with git diff - -- * diffview.nvim: will open Diffview to show the diff - cmd = "git", - }, - checker = { - -- automatically check for plugin updates - enabled = false, - concurrency = nil, ---@type number? set to 1 to check for updates very slowly - notify = true, -- get a notification when new updates are found - frequency = 3600, -- check for updates every hour - check_pinned = false, -- check for pinned packages that can't be updated - }, - change_detection = { - -- automatically check for config file changes and reload the ui - enabled = true, - notify = true, -- get a notification when changes are found - }, - performance = { - cache = { - enabled = true, - }, - reset_packpath = true, -- reset the package path to improve startup time - rtp = { - reset = true, -- reset the runtime path to $VIMRUNTIME and your config directory - ---@type string[] - paths = {}, -- add any custom paths here that you want to includes in the rtp - ---@type string[] list any plugins you want to disable here - disabled_plugins = { - -- "gzip", - -- "matchit", - -- "matchparen", - -- "netrwPlugin", - -- "tarPlugin", - -- "tohtml", - -- "tutor", - -- "zipPlugin", - }, - }, - }, - -- lazy can generate helptags from the headings in markdown readme files, - -- so :help works even for plugins that don't have vim docs. - -- when the readme opens with :help it will be correctly displayed as markdown - readme = { - enabled = true, - root = vim.fn.stdpath("state") .. "/lazy/readme", - files = { "README.md", "lua/**/README.md" }, - -- only generate markdown helptags for plugins that dont have docs - skip_if_doc_exists = true, - }, - state = vim.fn.stdpath("state") .. "/lazy/state.json", -- state info for checker and other things - -- Enable profiling of lazy.nvim. This will add some overhead, - -- so only enable this when you are debugging lazy.nvim - profiling = { - -- Enables extra stats on the debug tab related to the loader cache. - -- Additionally gathers stats about all package.loaders - loader = false, - -- Track each new require in the Lazy profiling tab - require = false, - }, - } -< - -If you don’t want to use a Nerd Font, you can replace the icons with Unicode symbols. ~ - ->lua - { - ui = { - icons = { - cmd = "⌘", - config = "🛠", - event = "📅", - ft = "📂", - init = "⚙", - keys = "🗝", - plugin = "🔌", - runtime = "💻", - require = "🌙", - source = "📄", - start = "🚀", - task = "📌", - lazy = "💤 ", - }, - }, - } -< - - -🌈 HIGHLIGHT GROUPS *lazy.nvim-⚙️-configuration-🌈-highlight-groups* - - ----------------------------------------------------------------------- - Highlight Group Default Group Description - ----------------------- ----------------------- ----------------------- - LazyButton CursorLine - - LazyButtonActive Visual - - LazyComment Comment - - LazyCommit @variable.builtin commit ref - - LazyCommitIssue Number - - LazyCommitScope Italic conventional commit - scope - - LazyCommitType Title conventional commit - type - - LazyDimmed Conceal property - - LazyDir @markup.link directory - - LazyH1 IncSearch home button - - LazyH2 Bold titles - - LazyLocal Constant - - LazyNoCond DiagnosticWarn unloaded icon for a - plugin where cond() was - false - - LazyNormal NormalFloat - - LazyProgressDone Constant progress bar done - - LazyProgressTodo LineNr progress bar todo - - LazyProp Conceal property - - LazyReasonCmd Operator - - LazyReasonEvent Constant - - LazyReasonFt Character - - LazyReasonImport Identifier - - LazyReasonKeys Statement - - LazyReasonPlugin Special - - LazyReasonRequire @variable.parameter - - LazyReasonRuntime @macro - - LazyReasonSource Character - - LazyReasonStart @variable.member - - LazySpecial @punctuation.special - - LazyTaskError ErrorMsg task errors - - LazyTaskOutput MsgArea task output - - LazyUrl @markup.link url - - LazyValue @string value of a property - ----------------------------------------------------------------------- - -============================================================================== -7. 🚀 Usage *lazy.nvim-🚀-usage* - - -▶️ STARTUP SEQUENCE *lazy.nvim-🚀-usage-▶️-startup-sequence* - -**lazy.nvim** does **NOT** use Neovim packages and even disables plugin loading -completely (`vim.go.loadplugins = false`). It takes over the complete startup -sequence for more flexibility and better performance. - -In practice this means that step 10 of |Neovim Initialization| is done by Lazy: - -1. All the plugins’ `init()` functions are executed -2. All plugins with `lazy=false` are loaded. This includes sourcing `/plugin` and `/ftdetect` files. (`/after` will not be sourced yet) -3. All files from `/plugin` and `/ftdetect` directories in your rtp are sourced (excluding `/after`) -4. All `/after/plugin` files are sourced (this includes `/after` from plugins) - -Files from runtime directories are always sourced in alphabetical order. - - -🚀 COMMANDS *lazy.nvim-🚀-usage-🚀-commands* - -Plugins are managed with the `:Lazy` command. Open the help with `` to see -all the key mappings. - -You can press `` on a plugin to show its details. Most properties can be -hovered with `` to open links, help files, readmes, git commits and git -issues. - -Lazy can automatically check for updates in the background. This feature can be -enabled with `config.checker.enabled = true`. - -Any operation can be started from the UI, with a sub command or an API -function: - - ---------------------------------------------------------------------------------- - Command Lua Description - ------------------------- -------------------------------- ----------------------- - :Lazy build {plugins} require("lazy").build(opts) Rebuild a plugin - - :Lazy check [plugins] require("lazy").check(opts?) Check for updates and - show the log (git - fetch) - - :Lazy clean [plugins] require("lazy").clean(opts?) Clean plugins that are - no longer needed - - :Lazy clear require("lazy").clear() Clear finished tasks - - :Lazy debug require("lazy").debug() Show debug information - - :Lazy health require("lazy").health() Run :checkhealth lazy - - :Lazy help require("lazy").help() Toggle this help page - - :Lazy home require("lazy").home() Go back to plugin list - - :Lazy install [plugins] require("lazy").install(opts?) Install missing plugins - - :Lazy load {plugins} require("lazy").load(opts) Load a plugin that has - not been loaded yet. - Similar to :packadd. - Like - :Lazy load foo.nvim. - Use :Lazy! load to skip - cond checks. - - :Lazy log [plugins] require("lazy").log(opts?) Show recent updates - - :Lazy profile require("lazy").profile() Show detailed profiling - - :Lazy reload {plugins} require("lazy").reload(opts) Reload a plugin - (experimental!!) - - :Lazy restore [plugins] require("lazy").restore(opts?) Updates all plugins to - the state in the - lockfile. For a single - plugin: restore it to - the state in the - lockfile or to a given - commit under the cursor - - :Lazy sync [plugins] require("lazy").sync(opts?) Run install, clean and - update - - :Lazy update [plugins] require("lazy").update(opts?) Update plugins. This - will also update the - lockfile - ---------------------------------------------------------------------------------- -Any command can have a **bang** to make the command wait till it finished. For -example, if you want to sync lazy from the cmdline, you can use: - ->shell - nvim --headless "+Lazy! sync" +qa -< - -`opts` is a table with the following key-values: - -- **wait**: when true, then the call will wait till the operation completed -- **show**: when false, the UI will not be shown -- **plugins**: a list of plugin names to run the operation on -- **concurrency**: limit the `number` of concurrently running tasks - -Stats API (`require("lazy").stats()`): - ->lua - { - -- startuptime in milliseconds till UIEnter - startuptime = 0, - -- when true, startuptime is the accurate cputime for the Neovim process. (Linux & macOS) - -- this is more accurate than `nvim --startuptime`, and as such will be slightly higher - -- when false, startuptime is calculated based on a delta with a timestamp when lazy started. - real_cputime = false, - count = 0, -- total number of plugins - loaded = 0, -- number of loaded plugins - ---@type table - times = {}, - } -< - -**lazy.nvim** provides a statusline component that you can use to show the -number of pending updates. Make sure to enable `config.checker.enabled = true` -to make this work. - -Example of configuring lualine.nvim ~ - ->lua - require("lualine").setup({ - sections = { - lualine_x = { - { - require("lazy.status").updates, - cond = require("lazy.status").has_updates, - color = { fg = "#ff9e64" }, - }, - }, - }, - }) -< - - -📆 USER EVENTS *lazy.nvim-🚀-usage-📆-user-events* - -The following user events will be triggered: - -- **LazyDone**: when lazy has finished starting up and loaded your config -- **LazySync**: after running sync -- **LazyInstall**: after an install -- **LazyUpdate**: after an update -- **LazyClean**: after a clean -- **LazyCheck**: after checking for updates -- **LazyLog**: after running log -- **LazyLoad**: after loading a plugin. The `data` attribute will contain the plugin name. -- **LazySyncPre**: before running sync -- **LazyInstallPre**: before an install -- **LazyUpdatePre**: before an update -- **LazyCleanPre**: before a clean -- **LazyCheckPre**: before checking for updates -- **LazyLogPre**: before running log -- **LazyReload**: triggered by change detection after reloading plugin specs -- **VeryLazy**: triggered after `LazyDone` and processing `VimEnter` auto commands -- **LazyVimStarted**: triggered after `UIEnter` when `require("lazy").stats().startuptime` has been calculated. - Useful to update the startuptime on your dashboard. - - -❌ UNINSTALLING *lazy.nvim-🚀-usage-❌-uninstalling* - -To uninstall **lazy.nvim**, you need to remove the following files and -directories: - -- **data**: `~/.local/share/nvim/lazy` -- **state**: `~/.local/state/nvim/lazy` -- **lockfile**: `~/.config/nvim/lazy-lock.json` - - - Paths can differ if you changed `XDG` environment variables. - -🔒 LOCKFILE *lazy.nvim-🚀-usage-🔒-lockfile* - -After every **update**, the local lockfile (`lazy-lock.json`) is updated with -the installed revisions. It is recommended to have this file under version -control. - -If you use your Neovim config on multiple machines, using the lockfile, you can -ensure that the same version of every plugin is installed. - -If you are on another machine, you can do `:Lazy restore`, to update all your -plugins to the version from the lockfile. - - -📦 MIGRATION GUIDE *lazy.nvim-🚀-usage-📦-migration-guide* - - -PACKER.NVIM ~ - -- `setup` ➡️ `init` -- `requires` ➡️ `dependencies` -- `as` ➡️ `name` -- `opt` ➡️ `lazy` -- `run` ➡️ `build` -- `lock` ➡️ `pin` -- `disable=true` ➡️ `enabled = false` -- `tag='*'` ➡️ `version="*"` -- `after` is **not needed** for most use-cases. Use `dependencies` otherwise. -- `wants` is **not needed** for most use-cases. Use `dependencies` otherwise. -- `config` don’t support string type, use `fun(LazyPlugin)` instead. -- `module` is auto-loaded. No need to specify -- `keys` spec is |lazy.nvim-different| -- `rtp` can be accomplished with: - ->lua - config = function(plugin) - vim.opt.rtp:append(plugin.dir .. "/custom-rtp") - end -< - -With packer `wants`, `requires` and `after` can be used to manage dependencies. -With lazy, this isn’t needed for most of the Lua dependencies. They can be -installed just like normal plugins (even with `lazy=true`) and will be loaded -when other plugins need them. The `dependencies` key can be used to group those -required plugins with the one that requires them. The plugins which are added -as `dependencies` will always be lazy-loaded and loaded when the plugin is -loaded. - - -PAQ-NVIM ~ - -- `as` ➡️ `name` -- `opt` ➡️ `lazy` -- `run` ➡️ `build` - - -⚡ PROFILING & DEBUG *lazy.nvim-🚀-usage-⚡-profiling-&-debug* - -Great care has been taken to make the startup code (`lazy.core`) as efficient -as possible. During startup, all Lua files used before `VimEnter` or -`BufReadPre` are byte-compiled and cached, similar to what impatient.nvim - does. - -My config for example loads in about `11ms` with `93` plugins. I do a lot of -lazy-loading though :) - -**lazy.nvim** comes with an advanced profiler `:Lazy profile` to help you -improve performance. The profiling view shows you why and how long it took to -load your plugins. - - -🐛 DEBUG ~ - -See an overview of active lazy-loading handlers and what’s in the module -cache. - - -📂 STRUCTURING YOUR PLUGINS*lazy.nvim-🚀-usage-📂-structuring-your-plugins* - -Some users may want to split their plugin specs in multiple files. Instead of -passing a spec table to `setup()`, you can use a Lua module. The specs from the -**module** and any top-level **sub-modules** will be merged together in the -final spec, so it is not needed to add `require` calls in your main plugin file -to the other files. - -The benefits of using this approach: - -- Simple to **add** new plugin specs. Just create a new file in your plugins module. -- Allows for **caching** of all your plugin specs. This becomes important if you have a lot of smaller plugin specs. -- Spec changes will automatically be **reloaded** when they’re updated, so the `:Lazy` UI is always up to date. - -Example: - -- `~/.config/nvim/init.lua` - ->lua - require("lazy").setup("plugins") -< - -- `~/.config/nvim/lua/plugins.lua` or `~/.config/nvim/lua/plugins/init.lua` **(this file is optional)** - ->lua - return { - "folke/neodev.nvim", - "folke/which-key.nvim", - { "folke/neoconf.nvim", cmd = "Neoconf" }, - } -< - -- Any lua file in `~/.config/nvim/lua/plugins/*.lua` will be automatically merged in the main plugin spec - -For a real-life example, you can check LazyVim - and more specifically: - -- lazyvim.plugins contains all the plugin specs that will be loaded - - -↩️ IMPORTING SPECS, CONFIG & OPTS - -As part of a spec, you can add `import` statements to import additional plugin -modules. Both of the `setup()` calls are equivalent: - ->lua - require("lazy").setup("plugins") - - -- Same as: - require("lazy").setup({{import = "plugins"}}) -< - -To import multiple modules from a plugin, add additional specs for each import. -For example, to import LazyVim core plugins and an optional plugin: - ->lua - require("lazy").setup({ - spec = { - { "LazyVim/LazyVim", import = "lazyvim.plugins" }, - { import = "lazyvim.plugins.extras.coding.copilot" }, - } - }) -< - -When you import specs, you can override them by simply adding a spec for the -same plugin to your local specs, adding any keys you want to override / merge. - -`opts`, `dependencies`, `cmd`, `event`, `ft` and `keys` are always merged with -the parent spec. Any other property will override the property from the parent -spec. - - -============================================================================== -8. 🔥 Developers *lazy.nvim-🔥-developers* - -To make it easier for users to install your plugin, you can include a package -spec in your repo. - - -BEST PRACTICES *lazy.nvim-🔥-developers-best-practices* - -- If your plugin needs `setup()`, then create a simple `lazy.lua` file like this: - >lua - return { "me/my-plugin", opts = {} } - < -- Plugins that are pure lua libraries should be lazy-loaded with `lazy = true`. - >lua - { "nvim-lua/plenary.nvim", lazy = true } - < -- Always use `opts` instead of `config` when possible. `config` is almost never - needed. -- Only use `dependencies` if a plugin needs the dep to be installed **AND** - loaded. Lua plugins/libraries are automatically loaded when they are - `require()`d, so they don’t need to be in `dependencies`. -- Inside a `build` function or `*.lua` build file, use - `coroutine.yield(msg:string|LazyMsg)` to show progress. -- Don’t change the `cwd` in your build function, since builds run in parallel - and changing the `cwd` will affect other builds. - - -BUILDING *lazy.nvim-🔥-developers-building* - -The spec **build** property can be one of the following: - -- `fun(plugin: LazyPlugin)`: a function that builds the plugin. -- `*.lua`: a Lua file that builds the plugin (like `build.lua`) -- `":Command"`: a Neovim command -- `"rockspec"`: this will run `luarocks make` in the plugin’s directory - This is automatically set by the `rockspec` package source. -- any other **string** will be run as a shell command -- a `list` of any of the above to run multiple build steps -- if no `build` is specified, but a `build.lua` file exists, that will be used instead. - -Build functions and `*.lua` files run asynchronously in a coroutine. Use -`coroutine.yield(msg:string|LazyMsg)` to show progress. - -Yielding will also schedule the next `coroutine.resume()` to run in the next -tick, so you can do long-running tasks without blocking Neovim. - ->lua - ---@class LazyMsg - ---@field msg string - ---@field level? number vim.log.levels.XXX -< - -Use `vim.log.levels.TRACE` to only show the message as a **status** message for -the task. - - - -MINIT (MINIMAL INIT) *lazy.nvim-🔥-developers-minit-(minimal-init)* - -**lazy.nvim** comes with some built-in functionality to help you create a -minimal init for your plugin. - -I mainly use this for testing and for users to create a `repro.lua`. - -When running in **headless** mode, **lazy.nvim** will log any messages to the -terminal. See `opts.headless` for more info. - -**minit** will install/load all your specs and will always run an update as -well. - - -BOOTSTRAP ~ - ->lua - -- setting this env will override all XDG paths - vim.env.LAZY_STDPATH = ".tests" - -- this will install lazy in your stdpath - load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() -< - - -TESTING WITH BUSTED ~ - -This will add `"lunarmodules/busted"`, configure `hererocks` and run `busted`. - -Below is an example of how I use **minit** to run tests with busted - in **LazyVim**. - ->lua - #!/usr/bin/env -S nvim -l - - vim.env.LAZY_STDPATH = ".tests" - load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() - - -- Setup lazy.nvim - require("lazy.minit").busted({ - spec = { - "LazyVim/starter", - "williamboman/mason-lspconfig.nvim", - "williamboman/mason.nvim", - "nvim-treesitter/nvim-treesitter", - }, - }) -< - -To use this, you can run: - ->sh - nvim -l ./tests/busted.lua tests -< - -If you want to inspect the test environment, run: - ->sh - nvim -u ./tests/busted.lua -< - - -REPRO.LUA ~ - ->lua - vim.env.LAZY_STDPATH = ".repro" - load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() - - require("lazy.minit").repro({ - spec = { - "stevearc/conform.nvim", - "nvim-neotest/nvim-nio", - }, - }) - - -- do anything else you need to do to reproduce the issue -< - -Then run it with: - ->sh - nvim -u repro.lua -< - -============================================================================== -9. Links *lazy.nvim-links* +1. Links *lazy.nvim-links* 1. *image*: https://user-images.githubusercontent.com/292349/208301737-68fb279c-ba70-43ef-a369-8c3e8367d6b1.png -2. *image*: https://user-images.githubusercontent.com/292349/208301766-5c400561-83c3-4811-9667-1ec4bb3c43b8.png -3. *image*: https://user-images.githubusercontent.com/292349/208301790-7eedbfa5-d202-4e70-852e-de68aa47233b.png Generated by panvimdoc From f918318d21956b0874a65ab35ce3d94d9057aabf Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 8 Jul 2024 07:52:50 +0200 Subject: [PATCH 252/342] chore(main): release 11.10.4 (#1628) :robot: I have created a release *beep* *boop* --- ## [11.10.4](https://github.com/folke/lazy.nvim/compare/v11.10.3...v11.10.4) (2024-07-08) ### Bug Fixes * **rocks:** try building anyway even when prerequisits have not been met. (will likely fail) ([f0324de](https://github.com/folke/lazy.nvim/commit/f0324defdd43be8aa14aaf3a794ff3d5581f36ba)) * **ui:** don't treat suspended as headless. Closes [#1626](https://github.com/folke/lazy.nvim/issues/1626) ([2dfccd7](https://github.com/folke/lazy.nvim/commit/2dfccd7b948beb26d8bcff7f9113a3a5c85cbc4a)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 8 ++++++++ lua/lazy/core/config.lua | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index 5d18bbe..a2f63d1 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "11.10.3" + ".": "11.10.4" } diff --git a/CHANGELOG.md b/CHANGELOG.md index b09ee5d..3ed551f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## [11.10.4](https://github.com/folke/lazy.nvim/compare/v11.10.3...v11.10.4) (2024-07-08) + + +### Bug Fixes + +* **rocks:** try building anyway even when prerequisits have not been met. (will likely fail) ([f0324de](https://github.com/folke/lazy.nvim/commit/f0324defdd43be8aa14aaf3a794ff3d5581f36ba)) +* **ui:** don't treat suspended as headless. Closes [#1626](https://github.com/folke/lazy.nvim/issues/1626) ([2dfccd7](https://github.com/folke/lazy.nvim/commit/2dfccd7b948beb26d8bcff7f9113a3a5c85cbc4a)) + ## [11.10.3](https://github.com/folke/lazy.nvim/compare/v11.10.2...v11.10.3) (2024-07-07) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 233b1fc..c50b9c5 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -228,7 +228,7 @@ function M.hererocks() return M.options.rocks.hererocks end -M.version = "11.10.3" -- x-release-please-version +M.version = "11.10.4" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 1870238cf9c579c5d7eb8ea8b296f10b81978d34 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 8 Jul 2024 05:53:40 +0000 Subject: [PATCH 253/342] chore(build): auto-generate docs --- doc/lazy.nvim.txt | 1398 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 1352 insertions(+), 46 deletions(-) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index 476bdf7..c2c9695 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -1,61 +1,130 @@ -*lazy.nvim.txt* For Neovim Last change: 2024 July 08 +*lazy.nvim.txt* A modern plugin manager for Neovim ============================================================================== Table of Contents *lazy.nvim-table-of-contents* - - Features |lazy.nvim-features| - - Requirements |lazy.nvim-requirements| - - Getting Started |lazy.nvim-getting-started| -1. Links |lazy.nvim-links| -Install -· -Configure -· -Docs - - - - - - - - - - - - - - +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. 📰 What’s new? *lazy.nvim-📰-what’s-new?* +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 . The GitHub `README.md` + has been updated to point to the new website. The `vimdoc` contains all the + information that is available on the website. +- **Spec Resolution & Merging**: the code that resolves a final spec from a + plugin’s fragments has been rewritten. This should be a tiny bit faster, but + more importantly, fixes some issues and is easier to maintain. +- Packages can now specify their dependencies + and configuration using one of: + - **Lazy**: `lazy.lua` file + - **Rockspec**: luarocks `*-scm-1.rockspec` file + - **Packspec**: `pkg.json` (experimental, since the format is not quite there yet) + Related _lazy.nvim_ options: + >lua + { + pkg = { + enabled = true, + cache = vim.fn.stdpath("state") .. "/lazy/pkg-cache.lua", + -- the first package source that is found for a plugin will be used. + sources = { + "lazy", + "rockspec", -- will only be used when rocks.enabled is true + "packspec", + }, + }, + rocks = { + enabled = true, + root = vim.fn.stdpath("data") .. "/lazy-rocks", + server = "https://nvim-neorocks.github.io/rocks-binaries/", + }, + } + < +- Installing neorg is now as simple as: + >lua + { "nvim-neorg/neorg", opts = {} } + < +- Packages are not limited to just Neovim plugins. You can install any + **luarocks** package, like: + >lua + { "https://github.com/lubyk/yaml" } + < + Luarocks packages without a `/lua` directory are never lazy-loaded, since + it’s just a library. +- `build` functions or `*.lua` build files (like `build.lua`) now run + asynchronously. You can use `coroutine.yield(status_msg)` to show progress. + Yielding will also schedule the next `resume` to run in the next tick, so you + can do long-running tasks without blocking Neovim. +============================================================================== +2. 🚀 Getting Started *lazy.nvim-🚀-getting-started* **lazy.nvim** is a modern plugin manager for Neovim. -FEATURES *lazy.nvim-features* +✨ FEATURES *lazy.nvim-🚀-getting-started-✨-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 support -- Statusline component to see the number of pending updates -- Automatically lazy-loads colorschemes +- 📦 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 support +- 📈 Statusline component to see the number of pending updates +- 🎨 Automatically lazy-loads colorschemes -REQUIREMENTS *lazy.nvim-requirements* +⚡️ REQUIREMENTS *lazy.nvim-🚀-getting-started-⚡️-requirements* - Neovim >= **0.8.0** (needs to be built with **LuaJIT**) - Git >= **2.19.0** (for partial clones support) @@ -64,14 +133,1251 @@ REQUIREMENTS *lazy.nvim-requirements* You can remove `rockspec` from `opts.pkg.sources` to disable this feature. -GETTING STARTED *lazy.nvim-getting-started* +============================================================================== +3. 🛠️ Installation *lazy.nvim-🛠️-installation* + +There are multiple ways to install **lazy.nvim**. The **Structured Setup** is +the recommended way, but you can also use the **Single File Setup** if you +prefer to keep everything in your `init.lua`. + +Please refer to the Configuration section for an overview of +all available options. + + + + +STRUCTURED SETUP *lazy.nvim-🛠️-installation-structured-setup* + +>lua + require("config.lazy") +< + +>lua + -- Bootstrap lazy.nvim + local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" + if not (vim.uv or vim.loop).fs_stat(lazypath) then + local lazyrepo = "https://github.com/folke/lazy.nvim.git" + local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) + if vim.v.shell_error ~= 0 then + vim.api.nvim_echo({ + { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, + { out, "WarningMsg" }, + { "\nPress any key to exit..." }, + }, true, {}) + vim.fn.getchar() + os.exit(1) + end + end + vim.opt.rtp:prepend(lazypath) + + -- Make sure to setup `mapleader` and `maplocalleader` before + -- loading lazy.nvim so that mappings are correct. + -- This is also a good place to setup other settings (vim.opt) + vim.g.mapleader = " " + vim.g.maplocalleader = "\\" + + -- Setup lazy.nvim + require("lazy").setup({ + -- highlight-start + spec = { + -- import your plugins + { import = "plugins" }, + }, + -- highlight-end + -- Configure any other settings here. See the documentation for more details. + -- colorscheme that will be used when installing plugins. + install = { colorscheme = { "habamax" } }, + -- automatically check for plugin updates + checker = { enabled = true }, + }) +< + +You can then create your plugin specs in `~/.config/nvim/lua/plugins/`. Each +file should return a table with the plugins you want to install. + +For more info see Structuring Your Plugins + + +SINGLE FILE SETUP *lazy.nvim-🛠️-installation-single-file-setup* + +>lua + -- Bootstrap lazy.nvim + local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" + if not (vim.uv or vim.loop).fs_stat(lazypath) then + local lazyrepo = "https://github.com/folke/lazy.nvim.git" + local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) + if vim.v.shell_error ~= 0 then + vim.api.nvim_echo({ + { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, + { out, "WarningMsg" }, + { "\nPress any key to exit..." }, + }, true, {}) + vim.fn.getchar() + os.exit(1) + end + end + vim.opt.rtp:prepend(lazypath) + + -- Make sure to setup `mapleader` and `maplocalleader` before + -- loading lazy.nvim so that mappings are correct. + -- This is also a good place to setup other settings (vim.opt) + vim.g.mapleader = " " + vim.g.maplocalleader = "\\" + + -- Setup lazy.nvim + require("lazy").setup({ + -- highlight-start + spec = { + -- add your plugins here + }, + -- highlight-end + -- Configure any other settings here. See the documentation for more details. + -- colorscheme that will be used when installing plugins. + install = { colorscheme = { "habamax" } }, + -- automatically check for plugin updates + checker = { enabled = true }, + }) +< -Check the documentation website for more information. ============================================================================== -1. Links *lazy.nvim-links* +4. 🔌 Plugin Spec *lazy.nvim-🔌-plugin-spec* + + +SPEC SOURCE *lazy.nvim-🔌-plugin-spec-spec-source* + + ----------------------------------------------------------------------------------- + Property Type Description + ---------- ---------- ------------------------------------------------------------- + [1] string? Short plugin url. Will be expanded using + config.git.url_format. Can also be a url or dir. + + dir string? A directory pointing to a local plugin + + url string? A custom git url where the plugin is hosted + + name string? A custom name for the plugin used for the local plugin + directory and as the display name + + dev boolean? When true, a local plugin directory will be used instead. See + config.dev + ----------------------------------------------------------------------------------- +A valid spec should define one of `[1]`, `dir` or `url`. + + +SPEC LOADING *lazy.nvim-🔌-plugin-spec-spec-loading* + + -------------------------------------------------------------------------------------------------- + Property Type Description + -------------- ------------------------- --------------------------------------------------------- + dependencies LazySpec[] A list of plugin names or plugin specs that should be + loaded when the plugin loads. Dependencies are always + lazy-loaded unless specified otherwise. When specifying a + name, make sure the plugin spec has been defined + somewhere else. + + enabled boolean? or fun():boolean When false, or if the function returns false, then this + plugin will not be included in the spec + + cond boolean? or Behaves the same as enabled, but won’t uninstall the + fun(LazyPlugin):boolean plugin when the condition is false. Useful to disable + some plugins in vscode, or firenvim for example. + + priority number? Only useful for start plugins (lazy=false) to force + loading certain plugins first. Default priority is 50. + It’s recommended to set this to a high number for + colorschemes. + -------------------------------------------------------------------------------------------------- + +SPEC SETUP *lazy.nvim-🔌-plugin-spec-spec-setup* + + -------------------------------------------------------------------------------------------------- + Property Type Description + ---------- ----------------------------- --------------------------------------------------------- + init fun(LazyPlugin) init functions are always executed during startup. Mostly + useful for setting vim.g.* configuration used by Vim + plugins startup + + opts table or opts should be a table (will be merged with parent + fun(LazyPlugin, opts:table) specs), return a table (replaces parent specs) or should + change a table. The table will be passed to the + Plugin.config() function. Setting this value will imply + Plugin.config() + + config fun(LazyPlugin, opts:table) config is executed when the plugin loads. The default + or true implementation will automatically run + require(MAIN).setup(opts) if opts or config = true is + set. Lazy uses several heuristics to determine the + plugin’s MAIN module automatically based on the plugin’s + name. (opts is the recommended way to configure plugins). + + main string? You can specify the main module to use for config() and + opts(), in case it can not be determined automatically. + See config() + + build fun(LazyPlugin) or string or build is executed when a plugin is installed or updated. + false or a list of build See Building for more information. + commands + -------------------------------------------------------------------------------------------------- +Always use `opts` instead of `config` when possible. `config` is almost never +needed. + + + + +SPEC LAZY LOADING *lazy.nvim-🔌-plugin-spec-spec-lazy-loading* + + -------------------------------------------------------------------------------------------------------------------- + Property Type Description + ---------- ---------------------------------------------------------------- ---------------------------------------- + lazy boolean? When true, the plugin will only be + loaded when needed. Lazy-loaded plugins + are automatically loaded when their Lua + modules are required, or when one of the + lazy-loading handlers triggers + + event string? or string[] or Lazy-load on event. Events can be + fun(self:LazyPlugin, event:string[]):string[] or specified as BufEnter or with a pattern + {event:string[]\|string, pattern?:string[]\|string} like BufEnter *.lua + + cmd string? or string[] or Lazy-load on command + fun(self:LazyPlugin, cmd:string[]):string[] + + ft string? or string[] or Lazy-load on filetype + fun(self:LazyPlugin, ft:string[]):string[] + + keys string? or string[] or LazyKeysSpec[] or Lazy-load on key mapping + fun(self:LazyPlugin, keys:string[]):(string \| LazyKeysSpec)[] + -------------------------------------------------------------------------------------------------------------------- +Refer to the Lazy Loading <./lazy_loading.md> section for more information. + + +SPEC VERSIONING *lazy.nvim-🔌-plugin-spec-spec-versioning* + + ------------------------------------------------------------------------------ + Property Type Description + ------------ -------------------- -------------------------------------------- + branch string? Branch of the repository + + tag string? Tag of the repository + + commit string? Commit of the repository + + version string? or false to Version to use from the repository. Full + override the default Semver ranges are supported + + pin boolean? When true, this plugin will not be included + in updates + + submodules boolean? When false, git submodules will not be + fetched. Defaults to true + ------------------------------------------------------------------------------ +Refer to the Versioning <./versioning.md> section for more information. + + +SPEC ADVANCED *lazy.nvim-🔌-plugin-spec-spec-advanced* + + ---------------------------------------------------------------------------------------- + Property Type Description + ---------- ---------- ------------------------------------------------------------------ + optional boolean? When a spec is tagged optional, it will only be included in the + final spec, when the same plugin has been specified at least once + somewhere else without optional. This is mainly useful for Neovim + distros, to allow setting options on plugins that may/may not be + part of the user’s plugins. + + specs LazySpec A list of plugin specs defined in the scope of the plugin. This is + mainly useful for Neovim distros, to allow setting options on + plugins that may/may not be part of the user’s plugins. When the + plugin is disabled, none of the scoped specs will be included in + the final spec. Similar to dependencies without the automatic + loading of the specs. + + module false? Do not automatically load this Lua module when it’s required + somewhere + + import string? Import the given spec module. + ---------------------------------------------------------------------------------------- + +EXAMPLES *lazy.nvim-🔌-plugin-spec-examples* + +>lua + return { + -- the colorscheme should be available when starting Neovim + { + "folke/tokyonight.nvim", + lazy = false, -- make sure we load this during startup if it is your main colorscheme + priority = 1000, -- make sure to load this before all the other start plugins + config = function() + -- load the colorscheme here + vim.cmd([[colorscheme tokyonight]]) + end, + }, + + -- I have a separate config.mappings file where I require which-key. + -- With lazy the plugin will be automatically loaded when it is required somewhere + { "folke/which-key.nvim", lazy = true }, + + { + "nvim-neorg/neorg", + -- lazy-load on filetype + ft = "norg", + -- options for neorg. This will automatically call `require("neorg").setup(opts)` + opts = { + load = { + ["core.defaults"] = {}, + }, + }, + }, + + { + "dstein64/vim-startuptime", + -- lazy-load on a command + cmd = "StartupTime", + -- init is called during startup. Configuration for vim plugins typically should be set in an init function + init = function() + vim.g.startuptime_tries = 10 + end, + }, + + { + "hrsh7th/nvim-cmp", + -- load cmp on InsertEnter + event = "InsertEnter", + -- these dependencies will only be loaded when cmp loads + -- dependencies are always lazy-loaded unless specified otherwise + dependencies = { + "hrsh7th/cmp-nvim-lsp", + "hrsh7th/cmp-buffer", + }, + config = function() + -- ... + end, + }, + + -- if some code requires a module from an unloaded plugin, it will be automatically loaded. + -- So for api plugins like devicons, we can always set lazy=true + { "nvim-tree/nvim-web-devicons", lazy = true }, + + -- you can use the VeryLazy event for things that can + -- load later and are not important for the initial UI + { "stevearc/dressing.nvim", event = "VeryLazy" }, + + { + "Wansmer/treesj", + keys = { + { "J", "TSJToggle", desc = "Join Toggle" }, + }, + opts = { use_default_keymaps = false, max_join_length = 150 }, + }, + + { + "monaqa/dial.nvim", + -- lazy-load on keys + -- mode is `n` by default. For more advanced options, check the section on key mappings + keys = { "", { "", mode = "n" } }, + }, + + -- local plugins need to be explicitly configured with dir + { dir = "~/projects/secret.nvim" }, + + -- you can use a custom url to fetch a plugin + { url = "git@github.com:folke/noice.nvim.git" }, + + -- local plugins can also be configured with the dev option. + -- This will use {config.dev.path}/noice.nvim/ instead of fetching it from GitHub + -- With the dev option, you can easily switch between the local and installed version of a plugin + { "folke/noice.nvim", dev = true }, + } +< + + +LAZY LOADING *lazy.nvim-🔌-plugin-spec-lazy-loading* + +**lazy.nvim** automagically lazy-loads Lua modules. This means that if you have +a plugin `A` that is lazy-loaded and a plugin `B` that requires a module of +plugin `A`, then plugin `A` will be loaded on demand as expected. + + +Additionally, you can also lazy-load on **events**, **commands**, **file +types** and **key mappings**. + +Plugins will be lazy-loaded when one of the following is `true`: + +- The plugin only exists as a dependency in your spec +- It has an `event`, `cmd`, `ft` or `keys` key +- `config.defaults.lazy == true` + + +🌈 COLORSCHEMES ~ + +Colorscheme plugins can be configured with `lazy=true`. The plugin will +automagically load when doing `colorscheme foobar`. + + + +⌨️ LAZY KEY MAPPINGS ~ + +The `keys` property can be a `string` or `string[]` for simple normal-mode +mappings, or it can be a `LazyKeysSpec` table with the following key-value +pairs: + +- **[1]**: (`string`) lhs **(required)** +- **[2]**: (`string|fun()`) rhs **(optional)** +- **mode**: (`string|string[]`) mode **(optional, defaults to "n")** +- **ft**: (`string|string[]`) `filetype` for buffer-local keymaps **(optional)** +- any other option valid for `vim.keymap.set` + +Key mappings will load the plugin the first time they get executed. + +When `[2]` is `nil`, then the real mapping has to be created by the `config()` +function. + +>lua + -- Example for neo-tree.nvim + { + "nvim-neo-tree/neo-tree.nvim", + keys = { + { "ft", "Neotree toggle", desc = "NeoTree" }, + }, + config = function() + require("neo-tree").setup() + end, + } +< + + +VERSIONING *lazy.nvim-🔌-plugin-spec-versioning* + +If you want to install a specific revision of a plugin, you can use `commit`, +`tag`, `branch`, `version`. + +The `version` property supports Semver ranges. + + + +EXAMPLES ~ + +- `*`: latest stable version (this excludes pre-release versions) +- `1.2.x`: any version that starts with `1.2`, such as `1.2.0`, `1.2.3`, etc. +- `^1.2.3`: any version that is compatible with `1.2.3`, such as `1.3.0`, `1.4.5`, etc., but not `2.0.0`. +- `~1.2.3`: any version that is compatible with `1.2.3`, such as `1.2.4`, `1.2.5`, but not `1.3.0`. +- `>1.2.3`: any version that is greater than `1.2.3`, such as `1.3.0`, `1.4.5`, etc. +- `>=1.2.3`: any version that is greater than or equal to `1.2.3`, such as `1.2.3`, `1.3.0`, `1.4.5`, etc. +- `<1.2.3`: any version that is less than `1.2.3`, such as `1.1.0`, `1.0.5`, etc. +- `<=1.2.3`: any version that is less than or equal to `1.2.3`, such as `1.2.3`, `1.1.0`, `1.0.5`, etc + + +============================================================================== +5. 📦 Packages *lazy.nvim-📦-packages* + +**lazy.nvim** supports three ways for plugins to define their dependencies and +configuration. + +- **Lazy**: `lazy.lua` file +- **Rockspec**: luarocks `*-scm-1.rockspec` file +- **Packspec**: `pkg.json` (experimental, since the format is not quite there yet) + +You can enable/disable package sources with `config.pkg.sources` +. The order of sources is important, as the first source that +finds a package will be used. + + + +LAZY *lazy.nvim-📦-packages-lazy* + +Using a `lazy.lua` file is the recommended way to define your plugin +dependencies and configuration. Syntax is the same as any plugin spec. + + +ROCKSPEC *lazy.nvim-📦-packages-rockspec* + +When a plugin contains a `*-1.rockspec` file, **lazy.nvim** will automatically +build the rock and its dependencies. + +A **rockspec** will only be used if one of the following is true: + +- the package does not have a `/lua` directory +- the package has a complex build step +- the package has dependencies (excluding `lua`) + + +PACKSPEC *lazy.nvim-📦-packages-packspec* + +Supports the pkg.json + format, with +a lazy extension in `lazy`. `lazy` can contain any valid lazy spec fields. They +will be added to the plugin’s spec. + + +============================================================================== +6. ⚙️ Configuration *lazy.nvim-⚙️-configuration* + +**lazy.nvim** comes with the following defaults: + +>lua + { + root = vim.fn.stdpath("data") .. "/lazy", -- directory where plugins will be installed + defaults = { + -- Set this to `true` to have all your plugins lazy-loaded by default. + -- Only do this if you know what you are doing, as it can lead to unexpected behavior. + lazy = false, -- should plugins be lazy-loaded? + -- It's recommended to leave version=false for now, since a lot the plugin that support versioning, + -- have outdated releases, which may break your Neovim install. + version = nil, -- always use the latest git commit + -- version = "*", -- try installing the latest stable version for plugins that support semver + -- default `cond` you can use to globally disable a lot of plugins + -- when running inside vscode for example + cond = nil, ---@type boolean|fun(self:LazyPlugin):boolean|nil + }, + -- leave nil when passing the spec as the first argument to setup() + spec = nil, ---@type LazySpec + local_spec = true, -- load project specific .lazy.lua spec files. They will be added at the end of the spec. + lockfile = vim.fn.stdpath("config") .. "/lazy-lock.json", -- lockfile generated after running update. + ---@type number? limit the maximum amount of concurrent tasks + concurrency = jit.os:find("Windows") and (vim.uv.available_parallelism() * 2) or nil, + git = { + -- defaults for the `Lazy log` command + -- log = { "--since=3 days ago" }, -- show commits from the last 3 days + log = { "-8" }, -- show the last 8 commits + timeout = 120, -- kill processes that take more than 2 minutes + url_format = "https://github.com/%s.git", + -- lazy.nvim requires git >=2.19.0. If you really want to use lazy with an older version, + -- then set the below to false. This should work, but is NOT supported and will + -- increase downloads a lot. + filter = true, + }, + pkg = { + enabled = true, + cache = vim.fn.stdpath("state") .. "/lazy/pkg-cache.lua", + versions = true, -- Honor versions in pkg sources + -- the first package source that is found for a plugin will be used. + sources = { + "lazy", + "rockspec", + "packspec", + }, + }, + rocks = { + root = vim.fn.stdpath("data") .. "/lazy-rocks", + server = "https://nvim-neorocks.github.io/rocks-binaries/", + }, + dev = { + ---@type string | fun(plugin: LazyPlugin): string directory where you store your local plugin projects + path = "~/projects", + ---@type string[] plugins that match these patterns will use your local versions instead of being fetched from GitHub + patterns = {}, -- For example {"folke"} + fallback = false, -- Fallback to git when local plugin doesn't exist + }, + install = { + -- install missing plugins on startup. This doesn't increase startup time. + missing = true, + -- try to load one of these colorschemes when starting an installation during startup + colorscheme = { "habamax" }, + }, + ui = { + -- a number <1 is a percentage., >1 is a fixed size + size = { width = 0.8, height = 0.8 }, + wrap = true, -- wrap the lines in the ui + -- The border to use for the UI window. Accepts same border values as |nvim_open_win()|. + border = "none", + -- The backdrop opacity. 0 is fully opaque, 100 is fully transparent. + backdrop = 60, + title = nil, ---@type string only works when border is not "none" + title_pos = "center", ---@type "center" | "left" | "right" + -- Show pills on top of the Lazy window + pills = true, ---@type boolean + icons = { + cmd = " ", + config = "", + event = " ", + favorite = " ", + ft = " ", + init = " ", + import = " ", + keys = " ", + lazy = "󰒲 ", + loaded = "●", + not_loaded = "○", + plugin = " ", + runtime = " ", + require = "󰢱 ", + source = " ", + start = " ", + task = "✔ ", + list = { + "●", + "➜", + "★", + "‒", + }, + }, + -- leave nil, to automatically select a browser depending on your OS. + -- If you want to use a specific browser, you can define it here + browser = nil, ---@type string? + throttle = 20, -- how frequently should the ui process render events + custom_keys = { + -- You can define custom key maps here. If present, the description will + -- be shown in the help menu. + -- To disable one of the defaults, set it to false. + + ["l"] = { + function(plugin) + require("lazy.util").float_term({ "lazygit", "log" }, { + cwd = plugin.dir, + }) + end, + desc = "Open lazygit log", + }, + + ["t"] = { + function(plugin) + require("lazy.util").float_term(nil, { + cwd = plugin.dir, + }) + end, + desc = "Open terminal in plugin dir", + }, + }, + }, + diff = { + -- diff command can be one of: + -- * browser: opens the github compare view. Note that this is always mapped to as well, + -- so you can have a different command for diff + -- * git: will run git diff and open a buffer with filetype git + -- * terminal_git: will open a pseudo terminal with git diff + -- * diffview.nvim: will open Diffview to show the diff + cmd = "git", + }, + checker = { + -- automatically check for plugin updates + enabled = false, + concurrency = nil, ---@type number? set to 1 to check for updates very slowly + notify = true, -- get a notification when new updates are found + frequency = 3600, -- check for updates every hour + check_pinned = false, -- check for pinned packages that can't be updated + }, + change_detection = { + -- automatically check for config file changes and reload the ui + enabled = true, + notify = true, -- get a notification when changes are found + }, + performance = { + cache = { + enabled = true, + }, + reset_packpath = true, -- reset the package path to improve startup time + rtp = { + reset = true, -- reset the runtime path to $VIMRUNTIME and your config directory + ---@type string[] + paths = {}, -- add any custom paths here that you want to includes in the rtp + ---@type string[] list any plugins you want to disable here + disabled_plugins = { + -- "gzip", + -- "matchit", + -- "matchparen", + -- "netrwPlugin", + -- "tarPlugin", + -- "tohtml", + -- "tutor", + -- "zipPlugin", + }, + }, + }, + -- lazy can generate helptags from the headings in markdown readme files, + -- so :help works even for plugins that don't have vim docs. + -- when the readme opens with :help it will be correctly displayed as markdown + readme = { + enabled = true, + root = vim.fn.stdpath("state") .. "/lazy/readme", + files = { "README.md", "lua/**/README.md" }, + -- only generate markdown helptags for plugins that dont have docs + skip_if_doc_exists = true, + }, + state = vim.fn.stdpath("state") .. "/lazy/state.json", -- state info for checker and other things + -- Enable profiling of lazy.nvim. This will add some overhead, + -- so only enable this when you are debugging lazy.nvim + profiling = { + -- Enables extra stats on the debug tab related to the loader cache. + -- Additionally gathers stats about all package.loaders + loader = false, + -- Track each new require in the Lazy profiling tab + require = false, + }, + } +< + +If you don’t want to use a Nerd Font, you can replace the icons with Unicode symbols. ~ + +>lua + { + ui = { + icons = { + cmd = "⌘", + config = "🛠", + event = "📅", + ft = "📂", + init = "⚙", + keys = "🗝", + plugin = "🔌", + runtime = "💻", + require = "🌙", + source = "📄", + start = "🚀", + task = "📌", + lazy = "💤 ", + }, + }, + } +< + + +🌈 HIGHLIGHT GROUPS *lazy.nvim-⚙️-configuration-🌈-highlight-groups* + + ----------------------------------------------------------------------- + Highlight Group Default Group Description + ----------------------- ----------------------- ----------------------- + LazyButton CursorLine + + LazyButtonActive Visual + + LazyComment Comment + + LazyCommit @variable.builtin commit ref + + LazyCommitIssue Number + + LazyCommitScope Italic conventional commit + scope + + LazyCommitType Title conventional commit + type + + LazyDimmed Conceal property + + LazyDir @markup.link directory + + LazyH1 IncSearch home button + + LazyH2 Bold titles + + LazyLocal Constant + + LazyNoCond DiagnosticWarn unloaded icon for a + plugin where cond() was + false + + LazyNormal NormalFloat + + LazyProgressDone Constant progress bar done + + LazyProgressTodo LineNr progress bar todo + + LazyProp Conceal property + + LazyReasonCmd Operator + + LazyReasonEvent Constant + + LazyReasonFt Character + + LazyReasonImport Identifier + + LazyReasonKeys Statement + + LazyReasonPlugin Special + + LazyReasonRequire @variable.parameter + + LazyReasonRuntime @macro + + LazyReasonSource Character + + LazyReasonStart @variable.member + + LazySpecial @punctuation.special + + LazyTaskError ErrorMsg task errors + + LazyTaskOutput MsgArea task output + + LazyUrl @markup.link url + + LazyValue @string value of a property + ----------------------------------------------------------------------- + +============================================================================== +7. 🚀 Usage *lazy.nvim-🚀-usage* + + +▶️ STARTUP SEQUENCE *lazy.nvim-🚀-usage-▶️-startup-sequence* + +**lazy.nvim** does **NOT** use Neovim packages and even disables plugin loading +completely (`vim.go.loadplugins = false`). It takes over the complete startup +sequence for more flexibility and better performance. + +In practice this means that step 10 of |Neovim Initialization| is done by Lazy: + +1. All the plugins’ `init()` functions are executed +2. All plugins with `lazy=false` are loaded. This includes sourcing `/plugin` and `/ftdetect` files. (`/after` will not be sourced yet) +3. All files from `/plugin` and `/ftdetect` directories in your rtp are sourced (excluding `/after`) +4. All `/after/plugin` files are sourced (this includes `/after` from plugins) + +Files from runtime directories are always sourced in alphabetical order. + + +🚀 COMMANDS *lazy.nvim-🚀-usage-🚀-commands* + +Plugins are managed with the `:Lazy` command. Open the help with `` to see +all the key mappings. + +You can press `` on a plugin to show its details. Most properties can be +hovered with `` to open links, help files, readmes, git commits and git +issues. + +Lazy can automatically check for updates in the background. This feature can be +enabled with `config.checker.enabled = true`. + +Any operation can be started from the UI, with a sub command or an API +function: + + ---------------------------------------------------------------------------------- + Command Lua Description + ------------------------- -------------------------------- ----------------------- + :Lazy build {plugins} require("lazy").build(opts) Rebuild a plugin + + :Lazy check [plugins] require("lazy").check(opts?) Check for updates and + show the log (git + fetch) + + :Lazy clean [plugins] require("lazy").clean(opts?) Clean plugins that are + no longer needed + + :Lazy clear require("lazy").clear() Clear finished tasks + + :Lazy debug require("lazy").debug() Show debug information + + :Lazy health require("lazy").health() Run :checkhealth lazy + + :Lazy help require("lazy").help() Toggle this help page + + :Lazy home require("lazy").home() Go back to plugin list + + :Lazy install [plugins] require("lazy").install(opts?) Install missing plugins + + :Lazy load {plugins} require("lazy").load(opts) Load a plugin that has + not been loaded yet. + Similar to :packadd. + Like + :Lazy load foo.nvim. + Use :Lazy! load to skip + cond checks. + + :Lazy log [plugins] require("lazy").log(opts?) Show recent updates + + :Lazy profile require("lazy").profile() Show detailed profiling + + :Lazy reload {plugins} require("lazy").reload(opts) Reload a plugin + (experimental!!) + + :Lazy restore [plugins] require("lazy").restore(opts?) Updates all plugins to + the state in the + lockfile. For a single + plugin: restore it to + the state in the + lockfile or to a given + commit under the cursor + + :Lazy sync [plugins] require("lazy").sync(opts?) Run install, clean and + update + + :Lazy update [plugins] require("lazy").update(opts?) Update plugins. This + will also update the + lockfile + ---------------------------------------------------------------------------------- +Any command can have a **bang** to make the command wait till it finished. For +example, if you want to sync lazy from the cmdline, you can use: + +>shell + nvim --headless "+Lazy! sync" +qa +< + +`opts` is a table with the following key-values: + +- **wait**: when true, then the call will wait till the operation completed +- **show**: when false, the UI will not be shown +- **plugins**: a list of plugin names to run the operation on +- **concurrency**: limit the `number` of concurrently running tasks + +Stats API (`require("lazy").stats()`): + +>lua + { + -- startuptime in milliseconds till UIEnter + startuptime = 0, + -- when true, startuptime is the accurate cputime for the Neovim process. (Linux & macOS) + -- this is more accurate than `nvim --startuptime`, and as such will be slightly higher + -- when false, startuptime is calculated based on a delta with a timestamp when lazy started. + real_cputime = false, + count = 0, -- total number of plugins + loaded = 0, -- number of loaded plugins + ---@type table + times = {}, + } +< + +**lazy.nvim** provides a statusline component that you can use to show the +number of pending updates. Make sure to enable `config.checker.enabled = true` +to make this work. + +Example of configuring lualine.nvim ~ + +>lua + require("lualine").setup({ + sections = { + lualine_x = { + { + require("lazy.status").updates, + cond = require("lazy.status").has_updates, + color = { fg = "#ff9e64" }, + }, + }, + }, + }) +< + + +📆 USER EVENTS *lazy.nvim-🚀-usage-📆-user-events* + +The following user events will be triggered: + +- **LazyDone**: when lazy has finished starting up and loaded your config +- **LazySync**: after running sync +- **LazyInstall**: after an install +- **LazyUpdate**: after an update +- **LazyClean**: after a clean +- **LazyCheck**: after checking for updates +- **LazyLog**: after running log +- **LazyLoad**: after loading a plugin. The `data` attribute will contain the plugin name. +- **LazySyncPre**: before running sync +- **LazyInstallPre**: before an install +- **LazyUpdatePre**: before an update +- **LazyCleanPre**: before a clean +- **LazyCheckPre**: before checking for updates +- **LazyLogPre**: before running log +- **LazyReload**: triggered by change detection after reloading plugin specs +- **VeryLazy**: triggered after `LazyDone` and processing `VimEnter` auto commands +- **LazyVimStarted**: triggered after `UIEnter` when `require("lazy").stats().startuptime` has been calculated. + Useful to update the startuptime on your dashboard. + + +❌ UNINSTALLING *lazy.nvim-🚀-usage-❌-uninstalling* + +To uninstall **lazy.nvim**, you need to remove the following files and +directories: + +- **data**: `~/.local/share/nvim/lazy` +- **state**: `~/.local/state/nvim/lazy` +- **lockfile**: `~/.config/nvim/lazy-lock.json` + + + Paths can differ if you changed `XDG` environment variables. + +🔒 LOCKFILE *lazy.nvim-🚀-usage-🔒-lockfile* + +After every **update**, the local lockfile (`lazy-lock.json`) is updated with +the installed revisions. It is recommended to have this file under version +control. + +If you use your Neovim config on multiple machines, using the lockfile, you can +ensure that the same version of every plugin is installed. + +If you are on another machine, you can do `:Lazy restore`, to update all your +plugins to the version from the lockfile. + + +📦 MIGRATION GUIDE *lazy.nvim-🚀-usage-📦-migration-guide* + + +PACKER.NVIM ~ + +- `setup` ➡️ `init` +- `requires` ➡️ `dependencies` +- `as` ➡️ `name` +- `opt` ➡️ `lazy` +- `run` ➡️ `build` +- `lock` ➡️ `pin` +- `disable=true` ➡️ `enabled = false` +- `tag='*'` ➡️ `version="*"` +- `after` is **not needed** for most use-cases. Use `dependencies` otherwise. +- `wants` is **not needed** for most use-cases. Use `dependencies` otherwise. +- `config` don’t support string type, use `fun(LazyPlugin)` instead. +- `module` is auto-loaded. No need to specify +- `keys` spec is |lazy.nvim-different| +- `rtp` can be accomplished with: + +>lua + config = function(plugin) + vim.opt.rtp:append(plugin.dir .. "/custom-rtp") + end +< + +With packer `wants`, `requires` and `after` can be used to manage dependencies. +With lazy, this isn’t needed for most of the Lua dependencies. They can be +installed just like normal plugins (even with `lazy=true`) and will be loaded +when other plugins need them. The `dependencies` key can be used to group those +required plugins with the one that requires them. The plugins which are added +as `dependencies` will always be lazy-loaded and loaded when the plugin is +loaded. + + +PAQ-NVIM ~ + +- `as` ➡️ `name` +- `opt` ➡️ `lazy` +- `run` ➡️ `build` + + +⚡ PROFILING & DEBUG *lazy.nvim-🚀-usage-⚡-profiling-&-debug* + +Great care has been taken to make the startup code (`lazy.core`) as efficient +as possible. During startup, all Lua files used before `VimEnter` or +`BufReadPre` are byte-compiled and cached, similar to what impatient.nvim + does. + +My config for example loads in about `11ms` with `93` plugins. I do a lot of +lazy-loading though :) + +**lazy.nvim** comes with an advanced profiler `:Lazy profile` to help you +improve performance. The profiling view shows you why and how long it took to +load your plugins. + + +🐛 DEBUG ~ + +See an overview of active lazy-loading handlers and what’s in the module +cache. + + +📂 STRUCTURING YOUR PLUGINS*lazy.nvim-🚀-usage-📂-structuring-your-plugins* + +Some users may want to split their plugin specs in multiple files. Instead of +passing a spec table to `setup()`, you can use a Lua module. The specs from the +**module** and any top-level **sub-modules** will be merged together in the +final spec, so it is not needed to add `require` calls in your main plugin file +to the other files. + +The benefits of using this approach: + +- Simple to **add** new plugin specs. Just create a new file in your plugins module. +- Allows for **caching** of all your plugin specs. This becomes important if you have a lot of smaller plugin specs. +- Spec changes will automatically be **reloaded** when they’re updated, so the `:Lazy` UI is always up to date. + +Example: + +- `~/.config/nvim/init.lua` + +>lua + require("lazy").setup("plugins") +< + +- `~/.config/nvim/lua/plugins.lua` or `~/.config/nvim/lua/plugins/init.lua` **(this file is optional)** + +>lua + return { + "folke/neodev.nvim", + "folke/which-key.nvim", + { "folke/neoconf.nvim", cmd = "Neoconf" }, + } +< + +- Any lua file in `~/.config/nvim/lua/plugins/*.lua` will be automatically merged in the main plugin spec + +For a real-life example, you can check LazyVim + and more specifically: + +- lazyvim.plugins contains all the plugin specs that will be loaded + + +↩️ IMPORTING SPECS, CONFIG & OPTS + +As part of a spec, you can add `import` statements to import additional plugin +modules. Both of the `setup()` calls are equivalent: + +>lua + require("lazy").setup("plugins") + + -- Same as: + require("lazy").setup({{import = "plugins"}}) +< + +To import multiple modules from a plugin, add additional specs for each import. +For example, to import LazyVim core plugins and an optional plugin: + +>lua + require("lazy").setup({ + spec = { + { "LazyVim/LazyVim", import = "lazyvim.plugins" }, + { import = "lazyvim.plugins.extras.coding.copilot" }, + } + }) +< + +When you import specs, you can override them by simply adding a spec for the +same plugin to your local specs, adding any keys you want to override / merge. + +`opts`, `dependencies`, `cmd`, `event`, `ft` and `keys` are always merged with +the parent spec. Any other property will override the property from the parent +spec. + + +============================================================================== +8. 🔥 Developers *lazy.nvim-🔥-developers* + +To make it easier for users to install your plugin, you can include a package +spec in your repo. + + +BEST PRACTICES *lazy.nvim-🔥-developers-best-practices* + +- If your plugin needs `setup()`, then create a simple `lazy.lua` file like this: + >lua + return { "me/my-plugin", opts = {} } + < +- Plugins that are pure lua libraries should be lazy-loaded with `lazy = true`. + >lua + { "nvim-lua/plenary.nvim", lazy = true } + < +- Always use `opts` instead of `config` when possible. `config` is almost never + needed. +- Only use `dependencies` if a plugin needs the dep to be installed **AND** + loaded. Lua plugins/libraries are automatically loaded when they are + `require()`d, so they don’t need to be in `dependencies`. +- Inside a `build` function or `*.lua` build file, use + `coroutine.yield(msg:string|LazyMsg)` to show progress. +- Don’t change the `cwd` in your build function, since builds run in parallel + and changing the `cwd` will affect other builds. + + +BUILDING *lazy.nvim-🔥-developers-building* + +The spec **build** property can be one of the following: + +- `fun(plugin: LazyPlugin)`: a function that builds the plugin. +- `*.lua`: a Lua file that builds the plugin (like `build.lua`) +- `":Command"`: a Neovim command +- `"rockspec"`: this will run `luarocks make` in the plugin’s directory + This is automatically set by the `rockspec` package source. +- any other **string** will be run as a shell command +- a `list` of any of the above to run multiple build steps +- if no `build` is specified, but a `build.lua` file exists, that will be used instead. + +Build functions and `*.lua` files run asynchronously in a coroutine. Use +`coroutine.yield(msg:string|LazyMsg)` to show progress. + +Yielding will also schedule the next `coroutine.resume()` to run in the next +tick, so you can do long-running tasks without blocking Neovim. + +>lua + ---@class LazyMsg + ---@field msg string + ---@field level? number vim.log.levels.XXX +< + +Use `vim.log.levels.TRACE` to only show the message as a **status** message for +the task. + + + +MINIT (MINIMAL INIT) *lazy.nvim-🔥-developers-minit-(minimal-init)* + +**lazy.nvim** comes with some built-in functionality to help you create a +minimal init for your plugin. + +I mainly use this for testing and for users to create a `repro.lua`. + +When running in **headless** mode, **lazy.nvim** will log any messages to the +terminal. See `opts.headless` for more info. + +**minit** will install/load all your specs and will always run an update as +well. + + +BOOTSTRAP ~ + +>lua + -- setting this env will override all XDG paths + vim.env.LAZY_STDPATH = ".tests" + -- this will install lazy in your stdpath + load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() +< + + +TESTING WITH BUSTED ~ + +This will add `"lunarmodules/busted"`, configure `hererocks` and run `busted`. + +Below is an example of how I use **minit** to run tests with busted + in **LazyVim**. + +>lua + #!/usr/bin/env -S nvim -l + + vim.env.LAZY_STDPATH = ".tests" + load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() + + -- Setup lazy.nvim + require("lazy.minit").busted({ + spec = { + "LazyVim/starter", + "williamboman/mason-lspconfig.nvim", + "williamboman/mason.nvim", + "nvim-treesitter/nvim-treesitter", + }, + }) +< + +To use this, you can run: + +>sh + nvim -l ./tests/busted.lua tests +< + +If you want to inspect the test environment, run: + +>sh + nvim -u ./tests/busted.lua +< + + +REPRO.LUA ~ + +>lua + vim.env.LAZY_STDPATH = ".repro" + load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() + + require("lazy.minit").repro({ + spec = { + "stevearc/conform.nvim", + "nvim-neotest/nvim-nio", + }, + }) + + -- do anything else you need to do to reproduce the issue +< + +Then run it with: + +>sh + nvim -u repro.lua +< + +============================================================================== +9. Links *lazy.nvim-links* 1. *image*: https://user-images.githubusercontent.com/292349/208301737-68fb279c-ba70-43ef-a369-8c3e8367d6b1.png +2. *image*: https://user-images.githubusercontent.com/292349/208301766-5c400561-83c3-4811-9667-1ec4bb3c43b8.png +3. *image*: https://user-images.githubusercontent.com/292349/208301790-7eedbfa5-d202-4e70-852e-de68aa47233b.png Generated by panvimdoc From fadebdc76b71a1d3658a88a025c6c8fb4749e0f8 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Tue, 9 Jul 2024 15:02:18 +0200 Subject: [PATCH 254/342] fix(minit): add tests to package.path when running busted (helpers.lua etc) --- lua/lazy/minit.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/lua/lazy/minit.lua b/lua/lazy/minit.lua index 838ac36..6300730 100644 --- a/lua/lazy/minit.lua +++ b/lua/lazy/minit.lua @@ -99,6 +99,7 @@ function M.busted.run() if not require("lazy.core.config").headless() then return vim.notify("busted can only run in headless mode. Please run with `nvim -l`", vim.log.levels.WARN) end + package.path = package.path .. ";" .. vim.uv.cwd() .. "/tests/?.lua" -- run busted return pcall(require("busted.runner"), { standalone = false, From 159036c5762a97246689299e61311fc88523a8fa Mon Sep 17 00:00:00 2001 From: folke Date: Tue, 9 Jul 2024 13:03:11 +0000 Subject: [PATCH 255/342] chore(build): auto-generate docs --- doc/lazy.nvim.txt | 1398 ++------------------------------------------- 1 file changed, 46 insertions(+), 1352 deletions(-) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index c2c9695..f2ef56a 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -1,130 +1,61 @@ -*lazy.nvim.txt* A modern plugin manager for Neovim +*lazy.nvim.txt* For Neovim Last change: 2024 July 09 ============================================================================== 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. 📰 What’s new? *lazy.nvim-📰-what’s-new?* + - Features |lazy.nvim-features| + - Requirements |lazy.nvim-requirements| + - Getting Started |lazy.nvim-getting-started| +1. Links |lazy.nvim-links| +Install +· +Configure +· +Docs + + + + + + + + + + + + + + -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 . The GitHub `README.md` - has been updated to point to the new website. The `vimdoc` contains all the - information that is available on the website. -- **Spec Resolution & Merging**: the code that resolves a final spec from a - plugin’s fragments has been rewritten. This should be a tiny bit faster, but - more importantly, fixes some issues and is easier to maintain. -- Packages can now specify their dependencies - and configuration using one of: - - **Lazy**: `lazy.lua` file - - **Rockspec**: luarocks `*-scm-1.rockspec` file - - **Packspec**: `pkg.json` (experimental, since the format is not quite there yet) - Related _lazy.nvim_ options: - >lua - { - pkg = { - enabled = true, - cache = vim.fn.stdpath("state") .. "/lazy/pkg-cache.lua", - -- the first package source that is found for a plugin will be used. - sources = { - "lazy", - "rockspec", -- will only be used when rocks.enabled is true - "packspec", - }, - }, - rocks = { - enabled = true, - root = vim.fn.stdpath("data") .. "/lazy-rocks", - server = "https://nvim-neorocks.github.io/rocks-binaries/", - }, - } - < -- Installing neorg is now as simple as: - >lua - { "nvim-neorg/neorg", opts = {} } - < -- Packages are not limited to just Neovim plugins. You can install any - **luarocks** package, like: - >lua - { "https://github.com/lubyk/yaml" } - < - Luarocks packages without a `/lua` directory are never lazy-loaded, since - it’s just a library. -- `build` functions or `*.lua` build files (like `build.lua`) now run - asynchronously. You can use `coroutine.yield(status_msg)` to show progress. - Yielding will also schedule the next `resume` to run in the next tick, so you - can do long-running tasks without blocking Neovim. -============================================================================== -2. 🚀 Getting Started *lazy.nvim-🚀-getting-started* **lazy.nvim** is a modern plugin manager for Neovim. -✨ FEATURES *lazy.nvim-🚀-getting-started-✨-features* +FEATURES *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 support -- 📈 Statusline component to see the number of pending updates -- 🎨 Automatically lazy-loads colorschemes +- 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 support +- Statusline component to see the number of pending updates +- Automatically lazy-loads colorschemes -⚡️ REQUIREMENTS *lazy.nvim-🚀-getting-started-⚡️-requirements* +REQUIREMENTS *lazy.nvim-requirements* - Neovim >= **0.8.0** (needs to be built with **LuaJIT**) - Git >= **2.19.0** (for partial clones support) @@ -133,1251 +64,14 @@ Table of Contents *lazy.nvim-table-of-contents* You can remove `rockspec` from `opts.pkg.sources` to disable this feature. -============================================================================== -3. 🛠️ Installation *lazy.nvim-🛠️-installation* - -There are multiple ways to install **lazy.nvim**. The **Structured Setup** is -the recommended way, but you can also use the **Single File Setup** if you -prefer to keep everything in your `init.lua`. - -Please refer to the Configuration section for an overview of -all available options. - - - - -STRUCTURED SETUP *lazy.nvim-🛠️-installation-structured-setup* - ->lua - require("config.lazy") -< - ->lua - -- Bootstrap lazy.nvim - local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" - if not (vim.uv or vim.loop).fs_stat(lazypath) then - local lazyrepo = "https://github.com/folke/lazy.nvim.git" - local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) - if vim.v.shell_error ~= 0 then - vim.api.nvim_echo({ - { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, - { out, "WarningMsg" }, - { "\nPress any key to exit..." }, - }, true, {}) - vim.fn.getchar() - os.exit(1) - end - end - vim.opt.rtp:prepend(lazypath) - - -- Make sure to setup `mapleader` and `maplocalleader` before - -- loading lazy.nvim so that mappings are correct. - -- This is also a good place to setup other settings (vim.opt) - vim.g.mapleader = " " - vim.g.maplocalleader = "\\" - - -- Setup lazy.nvim - require("lazy").setup({ - -- highlight-start - spec = { - -- import your plugins - { import = "plugins" }, - }, - -- highlight-end - -- Configure any other settings here. See the documentation for more details. - -- colorscheme that will be used when installing plugins. - install = { colorscheme = { "habamax" } }, - -- automatically check for plugin updates - checker = { enabled = true }, - }) -< - -You can then create your plugin specs in `~/.config/nvim/lua/plugins/`. Each -file should return a table with the plugins you want to install. - -For more info see Structuring Your Plugins - - -SINGLE FILE SETUP *lazy.nvim-🛠️-installation-single-file-setup* - ->lua - -- Bootstrap lazy.nvim - local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" - if not (vim.uv or vim.loop).fs_stat(lazypath) then - local lazyrepo = "https://github.com/folke/lazy.nvim.git" - local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) - if vim.v.shell_error ~= 0 then - vim.api.nvim_echo({ - { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, - { out, "WarningMsg" }, - { "\nPress any key to exit..." }, - }, true, {}) - vim.fn.getchar() - os.exit(1) - end - end - vim.opt.rtp:prepend(lazypath) - - -- Make sure to setup `mapleader` and `maplocalleader` before - -- loading lazy.nvim so that mappings are correct. - -- This is also a good place to setup other settings (vim.opt) - vim.g.mapleader = " " - vim.g.maplocalleader = "\\" - - -- Setup lazy.nvim - require("lazy").setup({ - -- highlight-start - spec = { - -- add your plugins here - }, - -- highlight-end - -- Configure any other settings here. See the documentation for more details. - -- colorscheme that will be used when installing plugins. - install = { colorscheme = { "habamax" } }, - -- automatically check for plugin updates - checker = { enabled = true }, - }) -< +GETTING STARTED *lazy.nvim-getting-started* +Check the documentation website for more information. ============================================================================== -4. 🔌 Plugin Spec *lazy.nvim-🔌-plugin-spec* - - -SPEC SOURCE *lazy.nvim-🔌-plugin-spec-spec-source* - - ----------------------------------------------------------------------------------- - Property Type Description - ---------- ---------- ------------------------------------------------------------- - [1] string? Short plugin url. Will be expanded using - config.git.url_format. Can also be a url or dir. - - dir string? A directory pointing to a local plugin - - url string? A custom git url where the plugin is hosted - - name string? A custom name for the plugin used for the local plugin - directory and as the display name - - dev boolean? When true, a local plugin directory will be used instead. See - config.dev - ----------------------------------------------------------------------------------- -A valid spec should define one of `[1]`, `dir` or `url`. - - -SPEC LOADING *lazy.nvim-🔌-plugin-spec-spec-loading* - - -------------------------------------------------------------------------------------------------- - Property Type Description - -------------- ------------------------- --------------------------------------------------------- - dependencies LazySpec[] A list of plugin names or plugin specs that should be - loaded when the plugin loads. Dependencies are always - lazy-loaded unless specified otherwise. When specifying a - name, make sure the plugin spec has been defined - somewhere else. - - enabled boolean? or fun():boolean When false, or if the function returns false, then this - plugin will not be included in the spec - - cond boolean? or Behaves the same as enabled, but won’t uninstall the - fun(LazyPlugin):boolean plugin when the condition is false. Useful to disable - some plugins in vscode, or firenvim for example. - - priority number? Only useful for start plugins (lazy=false) to force - loading certain plugins first. Default priority is 50. - It’s recommended to set this to a high number for - colorschemes. - -------------------------------------------------------------------------------------------------- - -SPEC SETUP *lazy.nvim-🔌-plugin-spec-spec-setup* - - -------------------------------------------------------------------------------------------------- - Property Type Description - ---------- ----------------------------- --------------------------------------------------------- - init fun(LazyPlugin) init functions are always executed during startup. Mostly - useful for setting vim.g.* configuration used by Vim - plugins startup - - opts table or opts should be a table (will be merged with parent - fun(LazyPlugin, opts:table) specs), return a table (replaces parent specs) or should - change a table. The table will be passed to the - Plugin.config() function. Setting this value will imply - Plugin.config() - - config fun(LazyPlugin, opts:table) config is executed when the plugin loads. The default - or true implementation will automatically run - require(MAIN).setup(opts) if opts or config = true is - set. Lazy uses several heuristics to determine the - plugin’s MAIN module automatically based on the plugin’s - name. (opts is the recommended way to configure plugins). - - main string? You can specify the main module to use for config() and - opts(), in case it can not be determined automatically. - See config() - - build fun(LazyPlugin) or string or build is executed when a plugin is installed or updated. - false or a list of build See Building for more information. - commands - -------------------------------------------------------------------------------------------------- -Always use `opts` instead of `config` when possible. `config` is almost never -needed. - - - - -SPEC LAZY LOADING *lazy.nvim-🔌-plugin-spec-spec-lazy-loading* - - -------------------------------------------------------------------------------------------------------------------- - Property Type Description - ---------- ---------------------------------------------------------------- ---------------------------------------- - lazy boolean? When true, the plugin will only be - loaded when needed. Lazy-loaded plugins - are automatically loaded when their Lua - modules are required, or when one of the - lazy-loading handlers triggers - - event string? or string[] or Lazy-load on event. Events can be - fun(self:LazyPlugin, event:string[]):string[] or specified as BufEnter or with a pattern - {event:string[]\|string, pattern?:string[]\|string} like BufEnter *.lua - - cmd string? or string[] or Lazy-load on command - fun(self:LazyPlugin, cmd:string[]):string[] - - ft string? or string[] or Lazy-load on filetype - fun(self:LazyPlugin, ft:string[]):string[] - - keys string? or string[] or LazyKeysSpec[] or Lazy-load on key mapping - fun(self:LazyPlugin, keys:string[]):(string \| LazyKeysSpec)[] - -------------------------------------------------------------------------------------------------------------------- -Refer to the Lazy Loading <./lazy_loading.md> section for more information. - - -SPEC VERSIONING *lazy.nvim-🔌-plugin-spec-spec-versioning* - - ------------------------------------------------------------------------------ - Property Type Description - ------------ -------------------- -------------------------------------------- - branch string? Branch of the repository - - tag string? Tag of the repository - - commit string? Commit of the repository - - version string? or false to Version to use from the repository. Full - override the default Semver ranges are supported - - pin boolean? When true, this plugin will not be included - in updates - - submodules boolean? When false, git submodules will not be - fetched. Defaults to true - ------------------------------------------------------------------------------ -Refer to the Versioning <./versioning.md> section for more information. - - -SPEC ADVANCED *lazy.nvim-🔌-plugin-spec-spec-advanced* - - ---------------------------------------------------------------------------------------- - Property Type Description - ---------- ---------- ------------------------------------------------------------------ - optional boolean? When a spec is tagged optional, it will only be included in the - final spec, when the same plugin has been specified at least once - somewhere else without optional. This is mainly useful for Neovim - distros, to allow setting options on plugins that may/may not be - part of the user’s plugins. - - specs LazySpec A list of plugin specs defined in the scope of the plugin. This is - mainly useful for Neovim distros, to allow setting options on - plugins that may/may not be part of the user’s plugins. When the - plugin is disabled, none of the scoped specs will be included in - the final spec. Similar to dependencies without the automatic - loading of the specs. - - module false? Do not automatically load this Lua module when it’s required - somewhere - - import string? Import the given spec module. - ---------------------------------------------------------------------------------------- - -EXAMPLES *lazy.nvim-🔌-plugin-spec-examples* - ->lua - return { - -- the colorscheme should be available when starting Neovim - { - "folke/tokyonight.nvim", - lazy = false, -- make sure we load this during startup if it is your main colorscheme - priority = 1000, -- make sure to load this before all the other start plugins - config = function() - -- load the colorscheme here - vim.cmd([[colorscheme tokyonight]]) - end, - }, - - -- I have a separate config.mappings file where I require which-key. - -- With lazy the plugin will be automatically loaded when it is required somewhere - { "folke/which-key.nvim", lazy = true }, - - { - "nvim-neorg/neorg", - -- lazy-load on filetype - ft = "norg", - -- options for neorg. This will automatically call `require("neorg").setup(opts)` - opts = { - load = { - ["core.defaults"] = {}, - }, - }, - }, - - { - "dstein64/vim-startuptime", - -- lazy-load on a command - cmd = "StartupTime", - -- init is called during startup. Configuration for vim plugins typically should be set in an init function - init = function() - vim.g.startuptime_tries = 10 - end, - }, - - { - "hrsh7th/nvim-cmp", - -- load cmp on InsertEnter - event = "InsertEnter", - -- these dependencies will only be loaded when cmp loads - -- dependencies are always lazy-loaded unless specified otherwise - dependencies = { - "hrsh7th/cmp-nvim-lsp", - "hrsh7th/cmp-buffer", - }, - config = function() - -- ... - end, - }, - - -- if some code requires a module from an unloaded plugin, it will be automatically loaded. - -- So for api plugins like devicons, we can always set lazy=true - { "nvim-tree/nvim-web-devicons", lazy = true }, - - -- you can use the VeryLazy event for things that can - -- load later and are not important for the initial UI - { "stevearc/dressing.nvim", event = "VeryLazy" }, - - { - "Wansmer/treesj", - keys = { - { "J", "TSJToggle", desc = "Join Toggle" }, - }, - opts = { use_default_keymaps = false, max_join_length = 150 }, - }, - - { - "monaqa/dial.nvim", - -- lazy-load on keys - -- mode is `n` by default. For more advanced options, check the section on key mappings - keys = { "", { "", mode = "n" } }, - }, - - -- local plugins need to be explicitly configured with dir - { dir = "~/projects/secret.nvim" }, - - -- you can use a custom url to fetch a plugin - { url = "git@github.com:folke/noice.nvim.git" }, - - -- local plugins can also be configured with the dev option. - -- This will use {config.dev.path}/noice.nvim/ instead of fetching it from GitHub - -- With the dev option, you can easily switch between the local and installed version of a plugin - { "folke/noice.nvim", dev = true }, - } -< - - -LAZY LOADING *lazy.nvim-🔌-plugin-spec-lazy-loading* - -**lazy.nvim** automagically lazy-loads Lua modules. This means that if you have -a plugin `A` that is lazy-loaded and a plugin `B` that requires a module of -plugin `A`, then plugin `A` will be loaded on demand as expected. - - -Additionally, you can also lazy-load on **events**, **commands**, **file -types** and **key mappings**. - -Plugins will be lazy-loaded when one of the following is `true`: - -- The plugin only exists as a dependency in your spec -- It has an `event`, `cmd`, `ft` or `keys` key -- `config.defaults.lazy == true` - - -🌈 COLORSCHEMES ~ - -Colorscheme plugins can be configured with `lazy=true`. The plugin will -automagically load when doing `colorscheme foobar`. - - - -⌨️ LAZY KEY MAPPINGS ~ - -The `keys` property can be a `string` or `string[]` for simple normal-mode -mappings, or it can be a `LazyKeysSpec` table with the following key-value -pairs: - -- **[1]**: (`string`) lhs **(required)** -- **[2]**: (`string|fun()`) rhs **(optional)** -- **mode**: (`string|string[]`) mode **(optional, defaults to "n")** -- **ft**: (`string|string[]`) `filetype` for buffer-local keymaps **(optional)** -- any other option valid for `vim.keymap.set` - -Key mappings will load the plugin the first time they get executed. - -When `[2]` is `nil`, then the real mapping has to be created by the `config()` -function. - ->lua - -- Example for neo-tree.nvim - { - "nvim-neo-tree/neo-tree.nvim", - keys = { - { "ft", "Neotree toggle", desc = "NeoTree" }, - }, - config = function() - require("neo-tree").setup() - end, - } -< - - -VERSIONING *lazy.nvim-🔌-plugin-spec-versioning* - -If you want to install a specific revision of a plugin, you can use `commit`, -`tag`, `branch`, `version`. - -The `version` property supports Semver ranges. - - - -EXAMPLES ~ - -- `*`: latest stable version (this excludes pre-release versions) -- `1.2.x`: any version that starts with `1.2`, such as `1.2.0`, `1.2.3`, etc. -- `^1.2.3`: any version that is compatible with `1.2.3`, such as `1.3.0`, `1.4.5`, etc., but not `2.0.0`. -- `~1.2.3`: any version that is compatible with `1.2.3`, such as `1.2.4`, `1.2.5`, but not `1.3.0`. -- `>1.2.3`: any version that is greater than `1.2.3`, such as `1.3.0`, `1.4.5`, etc. -- `>=1.2.3`: any version that is greater than or equal to `1.2.3`, such as `1.2.3`, `1.3.0`, `1.4.5`, etc. -- `<1.2.3`: any version that is less than `1.2.3`, such as `1.1.0`, `1.0.5`, etc. -- `<=1.2.3`: any version that is less than or equal to `1.2.3`, such as `1.2.3`, `1.1.0`, `1.0.5`, etc - - -============================================================================== -5. 📦 Packages *lazy.nvim-📦-packages* - -**lazy.nvim** supports three ways for plugins to define their dependencies and -configuration. - -- **Lazy**: `lazy.lua` file -- **Rockspec**: luarocks `*-scm-1.rockspec` file -- **Packspec**: `pkg.json` (experimental, since the format is not quite there yet) - -You can enable/disable package sources with `config.pkg.sources` -. The order of sources is important, as the first source that -finds a package will be used. - - - -LAZY *lazy.nvim-📦-packages-lazy* - -Using a `lazy.lua` file is the recommended way to define your plugin -dependencies and configuration. Syntax is the same as any plugin spec. - - -ROCKSPEC *lazy.nvim-📦-packages-rockspec* - -When a plugin contains a `*-1.rockspec` file, **lazy.nvim** will automatically -build the rock and its dependencies. - -A **rockspec** will only be used if one of the following is true: - -- the package does not have a `/lua` directory -- the package has a complex build step -- the package has dependencies (excluding `lua`) - - -PACKSPEC *lazy.nvim-📦-packages-packspec* - -Supports the pkg.json - format, with -a lazy extension in `lazy`. `lazy` can contain any valid lazy spec fields. They -will be added to the plugin’s spec. - - -============================================================================== -6. ⚙️ Configuration *lazy.nvim-⚙️-configuration* - -**lazy.nvim** comes with the following defaults: - ->lua - { - root = vim.fn.stdpath("data") .. "/lazy", -- directory where plugins will be installed - defaults = { - -- Set this to `true` to have all your plugins lazy-loaded by default. - -- Only do this if you know what you are doing, as it can lead to unexpected behavior. - lazy = false, -- should plugins be lazy-loaded? - -- It's recommended to leave version=false for now, since a lot the plugin that support versioning, - -- have outdated releases, which may break your Neovim install. - version = nil, -- always use the latest git commit - -- version = "*", -- try installing the latest stable version for plugins that support semver - -- default `cond` you can use to globally disable a lot of plugins - -- when running inside vscode for example - cond = nil, ---@type boolean|fun(self:LazyPlugin):boolean|nil - }, - -- leave nil when passing the spec as the first argument to setup() - spec = nil, ---@type LazySpec - local_spec = true, -- load project specific .lazy.lua spec files. They will be added at the end of the spec. - lockfile = vim.fn.stdpath("config") .. "/lazy-lock.json", -- lockfile generated after running update. - ---@type number? limit the maximum amount of concurrent tasks - concurrency = jit.os:find("Windows") and (vim.uv.available_parallelism() * 2) or nil, - git = { - -- defaults for the `Lazy log` command - -- log = { "--since=3 days ago" }, -- show commits from the last 3 days - log = { "-8" }, -- show the last 8 commits - timeout = 120, -- kill processes that take more than 2 minutes - url_format = "https://github.com/%s.git", - -- lazy.nvim requires git >=2.19.0. If you really want to use lazy with an older version, - -- then set the below to false. This should work, but is NOT supported and will - -- increase downloads a lot. - filter = true, - }, - pkg = { - enabled = true, - cache = vim.fn.stdpath("state") .. "/lazy/pkg-cache.lua", - versions = true, -- Honor versions in pkg sources - -- the first package source that is found for a plugin will be used. - sources = { - "lazy", - "rockspec", - "packspec", - }, - }, - rocks = { - root = vim.fn.stdpath("data") .. "/lazy-rocks", - server = "https://nvim-neorocks.github.io/rocks-binaries/", - }, - dev = { - ---@type string | fun(plugin: LazyPlugin): string directory where you store your local plugin projects - path = "~/projects", - ---@type string[] plugins that match these patterns will use your local versions instead of being fetched from GitHub - patterns = {}, -- For example {"folke"} - fallback = false, -- Fallback to git when local plugin doesn't exist - }, - install = { - -- install missing plugins on startup. This doesn't increase startup time. - missing = true, - -- try to load one of these colorschemes when starting an installation during startup - colorscheme = { "habamax" }, - }, - ui = { - -- a number <1 is a percentage., >1 is a fixed size - size = { width = 0.8, height = 0.8 }, - wrap = true, -- wrap the lines in the ui - -- The border to use for the UI window. Accepts same border values as |nvim_open_win()|. - border = "none", - -- The backdrop opacity. 0 is fully opaque, 100 is fully transparent. - backdrop = 60, - title = nil, ---@type string only works when border is not "none" - title_pos = "center", ---@type "center" | "left" | "right" - -- Show pills on top of the Lazy window - pills = true, ---@type boolean - icons = { - cmd = " ", - config = "", - event = " ", - favorite = " ", - ft = " ", - init = " ", - import = " ", - keys = " ", - lazy = "󰒲 ", - loaded = "●", - not_loaded = "○", - plugin = " ", - runtime = " ", - require = "󰢱 ", - source = " ", - start = " ", - task = "✔ ", - list = { - "●", - "➜", - "★", - "‒", - }, - }, - -- leave nil, to automatically select a browser depending on your OS. - -- If you want to use a specific browser, you can define it here - browser = nil, ---@type string? - throttle = 20, -- how frequently should the ui process render events - custom_keys = { - -- You can define custom key maps here. If present, the description will - -- be shown in the help menu. - -- To disable one of the defaults, set it to false. - - ["l"] = { - function(plugin) - require("lazy.util").float_term({ "lazygit", "log" }, { - cwd = plugin.dir, - }) - end, - desc = "Open lazygit log", - }, - - ["t"] = { - function(plugin) - require("lazy.util").float_term(nil, { - cwd = plugin.dir, - }) - end, - desc = "Open terminal in plugin dir", - }, - }, - }, - diff = { - -- diff command can be one of: - -- * browser: opens the github compare view. Note that this is always mapped to as well, - -- so you can have a different command for diff - -- * git: will run git diff and open a buffer with filetype git - -- * terminal_git: will open a pseudo terminal with git diff - -- * diffview.nvim: will open Diffview to show the diff - cmd = "git", - }, - checker = { - -- automatically check for plugin updates - enabled = false, - concurrency = nil, ---@type number? set to 1 to check for updates very slowly - notify = true, -- get a notification when new updates are found - frequency = 3600, -- check for updates every hour - check_pinned = false, -- check for pinned packages that can't be updated - }, - change_detection = { - -- automatically check for config file changes and reload the ui - enabled = true, - notify = true, -- get a notification when changes are found - }, - performance = { - cache = { - enabled = true, - }, - reset_packpath = true, -- reset the package path to improve startup time - rtp = { - reset = true, -- reset the runtime path to $VIMRUNTIME and your config directory - ---@type string[] - paths = {}, -- add any custom paths here that you want to includes in the rtp - ---@type string[] list any plugins you want to disable here - disabled_plugins = { - -- "gzip", - -- "matchit", - -- "matchparen", - -- "netrwPlugin", - -- "tarPlugin", - -- "tohtml", - -- "tutor", - -- "zipPlugin", - }, - }, - }, - -- lazy can generate helptags from the headings in markdown readme files, - -- so :help works even for plugins that don't have vim docs. - -- when the readme opens with :help it will be correctly displayed as markdown - readme = { - enabled = true, - root = vim.fn.stdpath("state") .. "/lazy/readme", - files = { "README.md", "lua/**/README.md" }, - -- only generate markdown helptags for plugins that dont have docs - skip_if_doc_exists = true, - }, - state = vim.fn.stdpath("state") .. "/lazy/state.json", -- state info for checker and other things - -- Enable profiling of lazy.nvim. This will add some overhead, - -- so only enable this when you are debugging lazy.nvim - profiling = { - -- Enables extra stats on the debug tab related to the loader cache. - -- Additionally gathers stats about all package.loaders - loader = false, - -- Track each new require in the Lazy profiling tab - require = false, - }, - } -< - -If you don’t want to use a Nerd Font, you can replace the icons with Unicode symbols. ~ - ->lua - { - ui = { - icons = { - cmd = "⌘", - config = "🛠", - event = "📅", - ft = "📂", - init = "⚙", - keys = "🗝", - plugin = "🔌", - runtime = "💻", - require = "🌙", - source = "📄", - start = "🚀", - task = "📌", - lazy = "💤 ", - }, - }, - } -< - - -🌈 HIGHLIGHT GROUPS *lazy.nvim-⚙️-configuration-🌈-highlight-groups* - - ----------------------------------------------------------------------- - Highlight Group Default Group Description - ----------------------- ----------------------- ----------------------- - LazyButton CursorLine - - LazyButtonActive Visual - - LazyComment Comment - - LazyCommit @variable.builtin commit ref - - LazyCommitIssue Number - - LazyCommitScope Italic conventional commit - scope - - LazyCommitType Title conventional commit - type - - LazyDimmed Conceal property - - LazyDir @markup.link directory - - LazyH1 IncSearch home button - - LazyH2 Bold titles - - LazyLocal Constant - - LazyNoCond DiagnosticWarn unloaded icon for a - plugin where cond() was - false - - LazyNormal NormalFloat - - LazyProgressDone Constant progress bar done - - LazyProgressTodo LineNr progress bar todo - - LazyProp Conceal property - - LazyReasonCmd Operator - - LazyReasonEvent Constant - - LazyReasonFt Character - - LazyReasonImport Identifier - - LazyReasonKeys Statement - - LazyReasonPlugin Special - - LazyReasonRequire @variable.parameter - - LazyReasonRuntime @macro - - LazyReasonSource Character - - LazyReasonStart @variable.member - - LazySpecial @punctuation.special - - LazyTaskError ErrorMsg task errors - - LazyTaskOutput MsgArea task output - - LazyUrl @markup.link url - - LazyValue @string value of a property - ----------------------------------------------------------------------- - -============================================================================== -7. 🚀 Usage *lazy.nvim-🚀-usage* - - -▶️ STARTUP SEQUENCE *lazy.nvim-🚀-usage-▶️-startup-sequence* - -**lazy.nvim** does **NOT** use Neovim packages and even disables plugin loading -completely (`vim.go.loadplugins = false`). It takes over the complete startup -sequence for more flexibility and better performance. - -In practice this means that step 10 of |Neovim Initialization| is done by Lazy: - -1. All the plugins’ `init()` functions are executed -2. All plugins with `lazy=false` are loaded. This includes sourcing `/plugin` and `/ftdetect` files. (`/after` will not be sourced yet) -3. All files from `/plugin` and `/ftdetect` directories in your rtp are sourced (excluding `/after`) -4. All `/after/plugin` files are sourced (this includes `/after` from plugins) - -Files from runtime directories are always sourced in alphabetical order. - - -🚀 COMMANDS *lazy.nvim-🚀-usage-🚀-commands* - -Plugins are managed with the `:Lazy` command. Open the help with `` to see -all the key mappings. - -You can press `` on a plugin to show its details. Most properties can be -hovered with `` to open links, help files, readmes, git commits and git -issues. - -Lazy can automatically check for updates in the background. This feature can be -enabled with `config.checker.enabled = true`. - -Any operation can be started from the UI, with a sub command or an API -function: - - ---------------------------------------------------------------------------------- - Command Lua Description - ------------------------- -------------------------------- ----------------------- - :Lazy build {plugins} require("lazy").build(opts) Rebuild a plugin - - :Lazy check [plugins] require("lazy").check(opts?) Check for updates and - show the log (git - fetch) - - :Lazy clean [plugins] require("lazy").clean(opts?) Clean plugins that are - no longer needed - - :Lazy clear require("lazy").clear() Clear finished tasks - - :Lazy debug require("lazy").debug() Show debug information - - :Lazy health require("lazy").health() Run :checkhealth lazy - - :Lazy help require("lazy").help() Toggle this help page - - :Lazy home require("lazy").home() Go back to plugin list - - :Lazy install [plugins] require("lazy").install(opts?) Install missing plugins - - :Lazy load {plugins} require("lazy").load(opts) Load a plugin that has - not been loaded yet. - Similar to :packadd. - Like - :Lazy load foo.nvim. - Use :Lazy! load to skip - cond checks. - - :Lazy log [plugins] require("lazy").log(opts?) Show recent updates - - :Lazy profile require("lazy").profile() Show detailed profiling - - :Lazy reload {plugins} require("lazy").reload(opts) Reload a plugin - (experimental!!) - - :Lazy restore [plugins] require("lazy").restore(opts?) Updates all plugins to - the state in the - lockfile. For a single - plugin: restore it to - the state in the - lockfile or to a given - commit under the cursor - - :Lazy sync [plugins] require("lazy").sync(opts?) Run install, clean and - update - - :Lazy update [plugins] require("lazy").update(opts?) Update plugins. This - will also update the - lockfile - ---------------------------------------------------------------------------------- -Any command can have a **bang** to make the command wait till it finished. For -example, if you want to sync lazy from the cmdline, you can use: - ->shell - nvim --headless "+Lazy! sync" +qa -< - -`opts` is a table with the following key-values: - -- **wait**: when true, then the call will wait till the operation completed -- **show**: when false, the UI will not be shown -- **plugins**: a list of plugin names to run the operation on -- **concurrency**: limit the `number` of concurrently running tasks - -Stats API (`require("lazy").stats()`): - ->lua - { - -- startuptime in milliseconds till UIEnter - startuptime = 0, - -- when true, startuptime is the accurate cputime for the Neovim process. (Linux & macOS) - -- this is more accurate than `nvim --startuptime`, and as such will be slightly higher - -- when false, startuptime is calculated based on a delta with a timestamp when lazy started. - real_cputime = false, - count = 0, -- total number of plugins - loaded = 0, -- number of loaded plugins - ---@type table - times = {}, - } -< - -**lazy.nvim** provides a statusline component that you can use to show the -number of pending updates. Make sure to enable `config.checker.enabled = true` -to make this work. - -Example of configuring lualine.nvim ~ - ->lua - require("lualine").setup({ - sections = { - lualine_x = { - { - require("lazy.status").updates, - cond = require("lazy.status").has_updates, - color = { fg = "#ff9e64" }, - }, - }, - }, - }) -< - - -📆 USER EVENTS *lazy.nvim-🚀-usage-📆-user-events* - -The following user events will be triggered: - -- **LazyDone**: when lazy has finished starting up and loaded your config -- **LazySync**: after running sync -- **LazyInstall**: after an install -- **LazyUpdate**: after an update -- **LazyClean**: after a clean -- **LazyCheck**: after checking for updates -- **LazyLog**: after running log -- **LazyLoad**: after loading a plugin. The `data` attribute will contain the plugin name. -- **LazySyncPre**: before running sync -- **LazyInstallPre**: before an install -- **LazyUpdatePre**: before an update -- **LazyCleanPre**: before a clean -- **LazyCheckPre**: before checking for updates -- **LazyLogPre**: before running log -- **LazyReload**: triggered by change detection after reloading plugin specs -- **VeryLazy**: triggered after `LazyDone` and processing `VimEnter` auto commands -- **LazyVimStarted**: triggered after `UIEnter` when `require("lazy").stats().startuptime` has been calculated. - Useful to update the startuptime on your dashboard. - - -❌ UNINSTALLING *lazy.nvim-🚀-usage-❌-uninstalling* - -To uninstall **lazy.nvim**, you need to remove the following files and -directories: - -- **data**: `~/.local/share/nvim/lazy` -- **state**: `~/.local/state/nvim/lazy` -- **lockfile**: `~/.config/nvim/lazy-lock.json` - - - Paths can differ if you changed `XDG` environment variables. - -🔒 LOCKFILE *lazy.nvim-🚀-usage-🔒-lockfile* - -After every **update**, the local lockfile (`lazy-lock.json`) is updated with -the installed revisions. It is recommended to have this file under version -control. - -If you use your Neovim config on multiple machines, using the lockfile, you can -ensure that the same version of every plugin is installed. - -If you are on another machine, you can do `:Lazy restore`, to update all your -plugins to the version from the lockfile. - - -📦 MIGRATION GUIDE *lazy.nvim-🚀-usage-📦-migration-guide* - - -PACKER.NVIM ~ - -- `setup` ➡️ `init` -- `requires` ➡️ `dependencies` -- `as` ➡️ `name` -- `opt` ➡️ `lazy` -- `run` ➡️ `build` -- `lock` ➡️ `pin` -- `disable=true` ➡️ `enabled = false` -- `tag='*'` ➡️ `version="*"` -- `after` is **not needed** for most use-cases. Use `dependencies` otherwise. -- `wants` is **not needed** for most use-cases. Use `dependencies` otherwise. -- `config` don’t support string type, use `fun(LazyPlugin)` instead. -- `module` is auto-loaded. No need to specify -- `keys` spec is |lazy.nvim-different| -- `rtp` can be accomplished with: - ->lua - config = function(plugin) - vim.opt.rtp:append(plugin.dir .. "/custom-rtp") - end -< - -With packer `wants`, `requires` and `after` can be used to manage dependencies. -With lazy, this isn’t needed for most of the Lua dependencies. They can be -installed just like normal plugins (even with `lazy=true`) and will be loaded -when other plugins need them. The `dependencies` key can be used to group those -required plugins with the one that requires them. The plugins which are added -as `dependencies` will always be lazy-loaded and loaded when the plugin is -loaded. - - -PAQ-NVIM ~ - -- `as` ➡️ `name` -- `opt` ➡️ `lazy` -- `run` ➡️ `build` - - -⚡ PROFILING & DEBUG *lazy.nvim-🚀-usage-⚡-profiling-&-debug* - -Great care has been taken to make the startup code (`lazy.core`) as efficient -as possible. During startup, all Lua files used before `VimEnter` or -`BufReadPre` are byte-compiled and cached, similar to what impatient.nvim - does. - -My config for example loads in about `11ms` with `93` plugins. I do a lot of -lazy-loading though :) - -**lazy.nvim** comes with an advanced profiler `:Lazy profile` to help you -improve performance. The profiling view shows you why and how long it took to -load your plugins. - - -🐛 DEBUG ~ - -See an overview of active lazy-loading handlers and what’s in the module -cache. - - -📂 STRUCTURING YOUR PLUGINS*lazy.nvim-🚀-usage-📂-structuring-your-plugins* - -Some users may want to split their plugin specs in multiple files. Instead of -passing a spec table to `setup()`, you can use a Lua module. The specs from the -**module** and any top-level **sub-modules** will be merged together in the -final spec, so it is not needed to add `require` calls in your main plugin file -to the other files. - -The benefits of using this approach: - -- Simple to **add** new plugin specs. Just create a new file in your plugins module. -- Allows for **caching** of all your plugin specs. This becomes important if you have a lot of smaller plugin specs. -- Spec changes will automatically be **reloaded** when they’re updated, so the `:Lazy` UI is always up to date. - -Example: - -- `~/.config/nvim/init.lua` - ->lua - require("lazy").setup("plugins") -< - -- `~/.config/nvim/lua/plugins.lua` or `~/.config/nvim/lua/plugins/init.lua` **(this file is optional)** - ->lua - return { - "folke/neodev.nvim", - "folke/which-key.nvim", - { "folke/neoconf.nvim", cmd = "Neoconf" }, - } -< - -- Any lua file in `~/.config/nvim/lua/plugins/*.lua` will be automatically merged in the main plugin spec - -For a real-life example, you can check LazyVim - and more specifically: - -- lazyvim.plugins contains all the plugin specs that will be loaded - - -↩️ IMPORTING SPECS, CONFIG & OPTS - -As part of a spec, you can add `import` statements to import additional plugin -modules. Both of the `setup()` calls are equivalent: - ->lua - require("lazy").setup("plugins") - - -- Same as: - require("lazy").setup({{import = "plugins"}}) -< - -To import multiple modules from a plugin, add additional specs for each import. -For example, to import LazyVim core plugins and an optional plugin: - ->lua - require("lazy").setup({ - spec = { - { "LazyVim/LazyVim", import = "lazyvim.plugins" }, - { import = "lazyvim.plugins.extras.coding.copilot" }, - } - }) -< - -When you import specs, you can override them by simply adding a spec for the -same plugin to your local specs, adding any keys you want to override / merge. - -`opts`, `dependencies`, `cmd`, `event`, `ft` and `keys` are always merged with -the parent spec. Any other property will override the property from the parent -spec. - - -============================================================================== -8. 🔥 Developers *lazy.nvim-🔥-developers* - -To make it easier for users to install your plugin, you can include a package -spec in your repo. - - -BEST PRACTICES *lazy.nvim-🔥-developers-best-practices* - -- If your plugin needs `setup()`, then create a simple `lazy.lua` file like this: - >lua - return { "me/my-plugin", opts = {} } - < -- Plugins that are pure lua libraries should be lazy-loaded with `lazy = true`. - >lua - { "nvim-lua/plenary.nvim", lazy = true } - < -- Always use `opts` instead of `config` when possible. `config` is almost never - needed. -- Only use `dependencies` if a plugin needs the dep to be installed **AND** - loaded. Lua plugins/libraries are automatically loaded when they are - `require()`d, so they don’t need to be in `dependencies`. -- Inside a `build` function or `*.lua` build file, use - `coroutine.yield(msg:string|LazyMsg)` to show progress. -- Don’t change the `cwd` in your build function, since builds run in parallel - and changing the `cwd` will affect other builds. - - -BUILDING *lazy.nvim-🔥-developers-building* - -The spec **build** property can be one of the following: - -- `fun(plugin: LazyPlugin)`: a function that builds the plugin. -- `*.lua`: a Lua file that builds the plugin (like `build.lua`) -- `":Command"`: a Neovim command -- `"rockspec"`: this will run `luarocks make` in the plugin’s directory - This is automatically set by the `rockspec` package source. -- any other **string** will be run as a shell command -- a `list` of any of the above to run multiple build steps -- if no `build` is specified, but a `build.lua` file exists, that will be used instead. - -Build functions and `*.lua` files run asynchronously in a coroutine. Use -`coroutine.yield(msg:string|LazyMsg)` to show progress. - -Yielding will also schedule the next `coroutine.resume()` to run in the next -tick, so you can do long-running tasks without blocking Neovim. - ->lua - ---@class LazyMsg - ---@field msg string - ---@field level? number vim.log.levels.XXX -< - -Use `vim.log.levels.TRACE` to only show the message as a **status** message for -the task. - - - -MINIT (MINIMAL INIT) *lazy.nvim-🔥-developers-minit-(minimal-init)* - -**lazy.nvim** comes with some built-in functionality to help you create a -minimal init for your plugin. - -I mainly use this for testing and for users to create a `repro.lua`. - -When running in **headless** mode, **lazy.nvim** will log any messages to the -terminal. See `opts.headless` for more info. - -**minit** will install/load all your specs and will always run an update as -well. - - -BOOTSTRAP ~ - ->lua - -- setting this env will override all XDG paths - vim.env.LAZY_STDPATH = ".tests" - -- this will install lazy in your stdpath - load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() -< - - -TESTING WITH BUSTED ~ - -This will add `"lunarmodules/busted"`, configure `hererocks` and run `busted`. - -Below is an example of how I use **minit** to run tests with busted - in **LazyVim**. - ->lua - #!/usr/bin/env -S nvim -l - - vim.env.LAZY_STDPATH = ".tests" - load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() - - -- Setup lazy.nvim - require("lazy.minit").busted({ - spec = { - "LazyVim/starter", - "williamboman/mason-lspconfig.nvim", - "williamboman/mason.nvim", - "nvim-treesitter/nvim-treesitter", - }, - }) -< - -To use this, you can run: - ->sh - nvim -l ./tests/busted.lua tests -< - -If you want to inspect the test environment, run: - ->sh - nvim -u ./tests/busted.lua -< - - -REPRO.LUA ~ - ->lua - vim.env.LAZY_STDPATH = ".repro" - load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() - - require("lazy.minit").repro({ - spec = { - "stevearc/conform.nvim", - "nvim-neotest/nvim-nio", - }, - }) - - -- do anything else you need to do to reproduce the issue -< - -Then run it with: - ->sh - nvim -u repro.lua -< - -============================================================================== -9. Links *lazy.nvim-links* +1. Links *lazy.nvim-links* 1. *image*: https://user-images.githubusercontent.com/292349/208301737-68fb279c-ba70-43ef-a369-8c3e8367d6b1.png -2. *image*: https://user-images.githubusercontent.com/292349/208301766-5c400561-83c3-4811-9667-1ec4bb3c43b8.png -3. *image*: https://user-images.githubusercontent.com/292349/208301790-7eedbfa5-d202-4e70-852e-de68aa47233b.png Generated by panvimdoc From 2cb8af1eb14184442d718d6418e26ccd5adf535c Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Tue, 9 Jul 2024 17:25:39 +0200 Subject: [PATCH 256/342] ci: skip docs on main --- .github/workflows/ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 60f92cf..95c1e6f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,3 +12,4 @@ jobs: with: plugin: lazy.nvim repo: folke/lazy.nvim + docs: false From d1de92dffab5a862332fdd1892889d362369c12f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 9 Jul 2024 15:26:28 +0000 Subject: [PATCH 257/342] chore(build): auto-generate docs --- doc/lazy.nvim.txt | 1398 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 1352 insertions(+), 46 deletions(-) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index f2ef56a..c2c9695 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -1,61 +1,130 @@ -*lazy.nvim.txt* For Neovim Last change: 2024 July 09 +*lazy.nvim.txt* A modern plugin manager for Neovim ============================================================================== Table of Contents *lazy.nvim-table-of-contents* - - Features |lazy.nvim-features| - - Requirements |lazy.nvim-requirements| - - Getting Started |lazy.nvim-getting-started| -1. Links |lazy.nvim-links| -Install -· -Configure -· -Docs - - - - - - - - - - - - - - +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. 📰 What’s new? *lazy.nvim-📰-what’s-new?* +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 . The GitHub `README.md` + has been updated to point to the new website. The `vimdoc` contains all the + information that is available on the website. +- **Spec Resolution & Merging**: the code that resolves a final spec from a + plugin’s fragments has been rewritten. This should be a tiny bit faster, but + more importantly, fixes some issues and is easier to maintain. +- Packages can now specify their dependencies + and configuration using one of: + - **Lazy**: `lazy.lua` file + - **Rockspec**: luarocks `*-scm-1.rockspec` file + - **Packspec**: `pkg.json` (experimental, since the format is not quite there yet) + Related _lazy.nvim_ options: + >lua + { + pkg = { + enabled = true, + cache = vim.fn.stdpath("state") .. "/lazy/pkg-cache.lua", + -- the first package source that is found for a plugin will be used. + sources = { + "lazy", + "rockspec", -- will only be used when rocks.enabled is true + "packspec", + }, + }, + rocks = { + enabled = true, + root = vim.fn.stdpath("data") .. "/lazy-rocks", + server = "https://nvim-neorocks.github.io/rocks-binaries/", + }, + } + < +- Installing neorg is now as simple as: + >lua + { "nvim-neorg/neorg", opts = {} } + < +- Packages are not limited to just Neovim plugins. You can install any + **luarocks** package, like: + >lua + { "https://github.com/lubyk/yaml" } + < + Luarocks packages without a `/lua` directory are never lazy-loaded, since + it’s just a library. +- `build` functions or `*.lua` build files (like `build.lua`) now run + asynchronously. You can use `coroutine.yield(status_msg)` to show progress. + Yielding will also schedule the next `resume` to run in the next tick, so you + can do long-running tasks without blocking Neovim. +============================================================================== +2. 🚀 Getting Started *lazy.nvim-🚀-getting-started* **lazy.nvim** is a modern plugin manager for Neovim. -FEATURES *lazy.nvim-features* +✨ FEATURES *lazy.nvim-🚀-getting-started-✨-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 support -- Statusline component to see the number of pending updates -- Automatically lazy-loads colorschemes +- 📦 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 support +- 📈 Statusline component to see the number of pending updates +- 🎨 Automatically lazy-loads colorschemes -REQUIREMENTS *lazy.nvim-requirements* +⚡️ REQUIREMENTS *lazy.nvim-🚀-getting-started-⚡️-requirements* - Neovim >= **0.8.0** (needs to be built with **LuaJIT**) - Git >= **2.19.0** (for partial clones support) @@ -64,14 +133,1251 @@ REQUIREMENTS *lazy.nvim-requirements* You can remove `rockspec` from `opts.pkg.sources` to disable this feature. -GETTING STARTED *lazy.nvim-getting-started* +============================================================================== +3. 🛠️ Installation *lazy.nvim-🛠️-installation* + +There are multiple ways to install **lazy.nvim**. The **Structured Setup** is +the recommended way, but you can also use the **Single File Setup** if you +prefer to keep everything in your `init.lua`. + +Please refer to the Configuration section for an overview of +all available options. + + + + +STRUCTURED SETUP *lazy.nvim-🛠️-installation-structured-setup* + +>lua + require("config.lazy") +< + +>lua + -- Bootstrap lazy.nvim + local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" + if not (vim.uv or vim.loop).fs_stat(lazypath) then + local lazyrepo = "https://github.com/folke/lazy.nvim.git" + local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) + if vim.v.shell_error ~= 0 then + vim.api.nvim_echo({ + { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, + { out, "WarningMsg" }, + { "\nPress any key to exit..." }, + }, true, {}) + vim.fn.getchar() + os.exit(1) + end + end + vim.opt.rtp:prepend(lazypath) + + -- Make sure to setup `mapleader` and `maplocalleader` before + -- loading lazy.nvim so that mappings are correct. + -- This is also a good place to setup other settings (vim.opt) + vim.g.mapleader = " " + vim.g.maplocalleader = "\\" + + -- Setup lazy.nvim + require("lazy").setup({ + -- highlight-start + spec = { + -- import your plugins + { import = "plugins" }, + }, + -- highlight-end + -- Configure any other settings here. See the documentation for more details. + -- colorscheme that will be used when installing plugins. + install = { colorscheme = { "habamax" } }, + -- automatically check for plugin updates + checker = { enabled = true }, + }) +< + +You can then create your plugin specs in `~/.config/nvim/lua/plugins/`. Each +file should return a table with the plugins you want to install. + +For more info see Structuring Your Plugins + + +SINGLE FILE SETUP *lazy.nvim-🛠️-installation-single-file-setup* + +>lua + -- Bootstrap lazy.nvim + local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" + if not (vim.uv or vim.loop).fs_stat(lazypath) then + local lazyrepo = "https://github.com/folke/lazy.nvim.git" + local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) + if vim.v.shell_error ~= 0 then + vim.api.nvim_echo({ + { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, + { out, "WarningMsg" }, + { "\nPress any key to exit..." }, + }, true, {}) + vim.fn.getchar() + os.exit(1) + end + end + vim.opt.rtp:prepend(lazypath) + + -- Make sure to setup `mapleader` and `maplocalleader` before + -- loading lazy.nvim so that mappings are correct. + -- This is also a good place to setup other settings (vim.opt) + vim.g.mapleader = " " + vim.g.maplocalleader = "\\" + + -- Setup lazy.nvim + require("lazy").setup({ + -- highlight-start + spec = { + -- add your plugins here + }, + -- highlight-end + -- Configure any other settings here. See the documentation for more details. + -- colorscheme that will be used when installing plugins. + install = { colorscheme = { "habamax" } }, + -- automatically check for plugin updates + checker = { enabled = true }, + }) +< -Check the documentation website for more information. ============================================================================== -1. Links *lazy.nvim-links* +4. 🔌 Plugin Spec *lazy.nvim-🔌-plugin-spec* + + +SPEC SOURCE *lazy.nvim-🔌-plugin-spec-spec-source* + + ----------------------------------------------------------------------------------- + Property Type Description + ---------- ---------- ------------------------------------------------------------- + [1] string? Short plugin url. Will be expanded using + config.git.url_format. Can also be a url or dir. + + dir string? A directory pointing to a local plugin + + url string? A custom git url where the plugin is hosted + + name string? A custom name for the plugin used for the local plugin + directory and as the display name + + dev boolean? When true, a local plugin directory will be used instead. See + config.dev + ----------------------------------------------------------------------------------- +A valid spec should define one of `[1]`, `dir` or `url`. + + +SPEC LOADING *lazy.nvim-🔌-plugin-spec-spec-loading* + + -------------------------------------------------------------------------------------------------- + Property Type Description + -------------- ------------------------- --------------------------------------------------------- + dependencies LazySpec[] A list of plugin names or plugin specs that should be + loaded when the plugin loads. Dependencies are always + lazy-loaded unless specified otherwise. When specifying a + name, make sure the plugin spec has been defined + somewhere else. + + enabled boolean? or fun():boolean When false, or if the function returns false, then this + plugin will not be included in the spec + + cond boolean? or Behaves the same as enabled, but won’t uninstall the + fun(LazyPlugin):boolean plugin when the condition is false. Useful to disable + some plugins in vscode, or firenvim for example. + + priority number? Only useful for start plugins (lazy=false) to force + loading certain plugins first. Default priority is 50. + It’s recommended to set this to a high number for + colorschemes. + -------------------------------------------------------------------------------------------------- + +SPEC SETUP *lazy.nvim-🔌-plugin-spec-spec-setup* + + -------------------------------------------------------------------------------------------------- + Property Type Description + ---------- ----------------------------- --------------------------------------------------------- + init fun(LazyPlugin) init functions are always executed during startup. Mostly + useful for setting vim.g.* configuration used by Vim + plugins startup + + opts table or opts should be a table (will be merged with parent + fun(LazyPlugin, opts:table) specs), return a table (replaces parent specs) or should + change a table. The table will be passed to the + Plugin.config() function. Setting this value will imply + Plugin.config() + + config fun(LazyPlugin, opts:table) config is executed when the plugin loads. The default + or true implementation will automatically run + require(MAIN).setup(opts) if opts or config = true is + set. Lazy uses several heuristics to determine the + plugin’s MAIN module automatically based on the plugin’s + name. (opts is the recommended way to configure plugins). + + main string? You can specify the main module to use for config() and + opts(), in case it can not be determined automatically. + See config() + + build fun(LazyPlugin) or string or build is executed when a plugin is installed or updated. + false or a list of build See Building for more information. + commands + -------------------------------------------------------------------------------------------------- +Always use `opts` instead of `config` when possible. `config` is almost never +needed. + + + + +SPEC LAZY LOADING *lazy.nvim-🔌-plugin-spec-spec-lazy-loading* + + -------------------------------------------------------------------------------------------------------------------- + Property Type Description + ---------- ---------------------------------------------------------------- ---------------------------------------- + lazy boolean? When true, the plugin will only be + loaded when needed. Lazy-loaded plugins + are automatically loaded when their Lua + modules are required, or when one of the + lazy-loading handlers triggers + + event string? or string[] or Lazy-load on event. Events can be + fun(self:LazyPlugin, event:string[]):string[] or specified as BufEnter or with a pattern + {event:string[]\|string, pattern?:string[]\|string} like BufEnter *.lua + + cmd string? or string[] or Lazy-load on command + fun(self:LazyPlugin, cmd:string[]):string[] + + ft string? or string[] or Lazy-load on filetype + fun(self:LazyPlugin, ft:string[]):string[] + + keys string? or string[] or LazyKeysSpec[] or Lazy-load on key mapping + fun(self:LazyPlugin, keys:string[]):(string \| LazyKeysSpec)[] + -------------------------------------------------------------------------------------------------------------------- +Refer to the Lazy Loading <./lazy_loading.md> section for more information. + + +SPEC VERSIONING *lazy.nvim-🔌-plugin-spec-spec-versioning* + + ------------------------------------------------------------------------------ + Property Type Description + ------------ -------------------- -------------------------------------------- + branch string? Branch of the repository + + tag string? Tag of the repository + + commit string? Commit of the repository + + version string? or false to Version to use from the repository. Full + override the default Semver ranges are supported + + pin boolean? When true, this plugin will not be included + in updates + + submodules boolean? When false, git submodules will not be + fetched. Defaults to true + ------------------------------------------------------------------------------ +Refer to the Versioning <./versioning.md> section for more information. + + +SPEC ADVANCED *lazy.nvim-🔌-plugin-spec-spec-advanced* + + ---------------------------------------------------------------------------------------- + Property Type Description + ---------- ---------- ------------------------------------------------------------------ + optional boolean? When a spec is tagged optional, it will only be included in the + final spec, when the same plugin has been specified at least once + somewhere else without optional. This is mainly useful for Neovim + distros, to allow setting options on plugins that may/may not be + part of the user’s plugins. + + specs LazySpec A list of plugin specs defined in the scope of the plugin. This is + mainly useful for Neovim distros, to allow setting options on + plugins that may/may not be part of the user’s plugins. When the + plugin is disabled, none of the scoped specs will be included in + the final spec. Similar to dependencies without the automatic + loading of the specs. + + module false? Do not automatically load this Lua module when it’s required + somewhere + + import string? Import the given spec module. + ---------------------------------------------------------------------------------------- + +EXAMPLES *lazy.nvim-🔌-plugin-spec-examples* + +>lua + return { + -- the colorscheme should be available when starting Neovim + { + "folke/tokyonight.nvim", + lazy = false, -- make sure we load this during startup if it is your main colorscheme + priority = 1000, -- make sure to load this before all the other start plugins + config = function() + -- load the colorscheme here + vim.cmd([[colorscheme tokyonight]]) + end, + }, + + -- I have a separate config.mappings file where I require which-key. + -- With lazy the plugin will be automatically loaded when it is required somewhere + { "folke/which-key.nvim", lazy = true }, + + { + "nvim-neorg/neorg", + -- lazy-load on filetype + ft = "norg", + -- options for neorg. This will automatically call `require("neorg").setup(opts)` + opts = { + load = { + ["core.defaults"] = {}, + }, + }, + }, + + { + "dstein64/vim-startuptime", + -- lazy-load on a command + cmd = "StartupTime", + -- init is called during startup. Configuration for vim plugins typically should be set in an init function + init = function() + vim.g.startuptime_tries = 10 + end, + }, + + { + "hrsh7th/nvim-cmp", + -- load cmp on InsertEnter + event = "InsertEnter", + -- these dependencies will only be loaded when cmp loads + -- dependencies are always lazy-loaded unless specified otherwise + dependencies = { + "hrsh7th/cmp-nvim-lsp", + "hrsh7th/cmp-buffer", + }, + config = function() + -- ... + end, + }, + + -- if some code requires a module from an unloaded plugin, it will be automatically loaded. + -- So for api plugins like devicons, we can always set lazy=true + { "nvim-tree/nvim-web-devicons", lazy = true }, + + -- you can use the VeryLazy event for things that can + -- load later and are not important for the initial UI + { "stevearc/dressing.nvim", event = "VeryLazy" }, + + { + "Wansmer/treesj", + keys = { + { "J", "TSJToggle", desc = "Join Toggle" }, + }, + opts = { use_default_keymaps = false, max_join_length = 150 }, + }, + + { + "monaqa/dial.nvim", + -- lazy-load on keys + -- mode is `n` by default. For more advanced options, check the section on key mappings + keys = { "", { "", mode = "n" } }, + }, + + -- local plugins need to be explicitly configured with dir + { dir = "~/projects/secret.nvim" }, + + -- you can use a custom url to fetch a plugin + { url = "git@github.com:folke/noice.nvim.git" }, + + -- local plugins can also be configured with the dev option. + -- This will use {config.dev.path}/noice.nvim/ instead of fetching it from GitHub + -- With the dev option, you can easily switch between the local and installed version of a plugin + { "folke/noice.nvim", dev = true }, + } +< + + +LAZY LOADING *lazy.nvim-🔌-plugin-spec-lazy-loading* + +**lazy.nvim** automagically lazy-loads Lua modules. This means that if you have +a plugin `A` that is lazy-loaded and a plugin `B` that requires a module of +plugin `A`, then plugin `A` will be loaded on demand as expected. + + +Additionally, you can also lazy-load on **events**, **commands**, **file +types** and **key mappings**. + +Plugins will be lazy-loaded when one of the following is `true`: + +- The plugin only exists as a dependency in your spec +- It has an `event`, `cmd`, `ft` or `keys` key +- `config.defaults.lazy == true` + + +🌈 COLORSCHEMES ~ + +Colorscheme plugins can be configured with `lazy=true`. The plugin will +automagically load when doing `colorscheme foobar`. + + + +⌨️ LAZY KEY MAPPINGS ~ + +The `keys` property can be a `string` or `string[]` for simple normal-mode +mappings, or it can be a `LazyKeysSpec` table with the following key-value +pairs: + +- **[1]**: (`string`) lhs **(required)** +- **[2]**: (`string|fun()`) rhs **(optional)** +- **mode**: (`string|string[]`) mode **(optional, defaults to "n")** +- **ft**: (`string|string[]`) `filetype` for buffer-local keymaps **(optional)** +- any other option valid for `vim.keymap.set` + +Key mappings will load the plugin the first time they get executed. + +When `[2]` is `nil`, then the real mapping has to be created by the `config()` +function. + +>lua + -- Example for neo-tree.nvim + { + "nvim-neo-tree/neo-tree.nvim", + keys = { + { "ft", "Neotree toggle", desc = "NeoTree" }, + }, + config = function() + require("neo-tree").setup() + end, + } +< + + +VERSIONING *lazy.nvim-🔌-plugin-spec-versioning* + +If you want to install a specific revision of a plugin, you can use `commit`, +`tag`, `branch`, `version`. + +The `version` property supports Semver ranges. + + + +EXAMPLES ~ + +- `*`: latest stable version (this excludes pre-release versions) +- `1.2.x`: any version that starts with `1.2`, such as `1.2.0`, `1.2.3`, etc. +- `^1.2.3`: any version that is compatible with `1.2.3`, such as `1.3.0`, `1.4.5`, etc., but not `2.0.0`. +- `~1.2.3`: any version that is compatible with `1.2.3`, such as `1.2.4`, `1.2.5`, but not `1.3.0`. +- `>1.2.3`: any version that is greater than `1.2.3`, such as `1.3.0`, `1.4.5`, etc. +- `>=1.2.3`: any version that is greater than or equal to `1.2.3`, such as `1.2.3`, `1.3.0`, `1.4.5`, etc. +- `<1.2.3`: any version that is less than `1.2.3`, such as `1.1.0`, `1.0.5`, etc. +- `<=1.2.3`: any version that is less than or equal to `1.2.3`, such as `1.2.3`, `1.1.0`, `1.0.5`, etc + + +============================================================================== +5. 📦 Packages *lazy.nvim-📦-packages* + +**lazy.nvim** supports three ways for plugins to define their dependencies and +configuration. + +- **Lazy**: `lazy.lua` file +- **Rockspec**: luarocks `*-scm-1.rockspec` file +- **Packspec**: `pkg.json` (experimental, since the format is not quite there yet) + +You can enable/disable package sources with `config.pkg.sources` +. The order of sources is important, as the first source that +finds a package will be used. + + + +LAZY *lazy.nvim-📦-packages-lazy* + +Using a `lazy.lua` file is the recommended way to define your plugin +dependencies and configuration. Syntax is the same as any plugin spec. + + +ROCKSPEC *lazy.nvim-📦-packages-rockspec* + +When a plugin contains a `*-1.rockspec` file, **lazy.nvim** will automatically +build the rock and its dependencies. + +A **rockspec** will only be used if one of the following is true: + +- the package does not have a `/lua` directory +- the package has a complex build step +- the package has dependencies (excluding `lua`) + + +PACKSPEC *lazy.nvim-📦-packages-packspec* + +Supports the pkg.json + format, with +a lazy extension in `lazy`. `lazy` can contain any valid lazy spec fields. They +will be added to the plugin’s spec. + + +============================================================================== +6. ⚙️ Configuration *lazy.nvim-⚙️-configuration* + +**lazy.nvim** comes with the following defaults: + +>lua + { + root = vim.fn.stdpath("data") .. "/lazy", -- directory where plugins will be installed + defaults = { + -- Set this to `true` to have all your plugins lazy-loaded by default. + -- Only do this if you know what you are doing, as it can lead to unexpected behavior. + lazy = false, -- should plugins be lazy-loaded? + -- It's recommended to leave version=false for now, since a lot the plugin that support versioning, + -- have outdated releases, which may break your Neovim install. + version = nil, -- always use the latest git commit + -- version = "*", -- try installing the latest stable version for plugins that support semver + -- default `cond` you can use to globally disable a lot of plugins + -- when running inside vscode for example + cond = nil, ---@type boolean|fun(self:LazyPlugin):boolean|nil + }, + -- leave nil when passing the spec as the first argument to setup() + spec = nil, ---@type LazySpec + local_spec = true, -- load project specific .lazy.lua spec files. They will be added at the end of the spec. + lockfile = vim.fn.stdpath("config") .. "/lazy-lock.json", -- lockfile generated after running update. + ---@type number? limit the maximum amount of concurrent tasks + concurrency = jit.os:find("Windows") and (vim.uv.available_parallelism() * 2) or nil, + git = { + -- defaults for the `Lazy log` command + -- log = { "--since=3 days ago" }, -- show commits from the last 3 days + log = { "-8" }, -- show the last 8 commits + timeout = 120, -- kill processes that take more than 2 minutes + url_format = "https://github.com/%s.git", + -- lazy.nvim requires git >=2.19.0. If you really want to use lazy with an older version, + -- then set the below to false. This should work, but is NOT supported and will + -- increase downloads a lot. + filter = true, + }, + pkg = { + enabled = true, + cache = vim.fn.stdpath("state") .. "/lazy/pkg-cache.lua", + versions = true, -- Honor versions in pkg sources + -- the first package source that is found for a plugin will be used. + sources = { + "lazy", + "rockspec", + "packspec", + }, + }, + rocks = { + root = vim.fn.stdpath("data") .. "/lazy-rocks", + server = "https://nvim-neorocks.github.io/rocks-binaries/", + }, + dev = { + ---@type string | fun(plugin: LazyPlugin): string directory where you store your local plugin projects + path = "~/projects", + ---@type string[] plugins that match these patterns will use your local versions instead of being fetched from GitHub + patterns = {}, -- For example {"folke"} + fallback = false, -- Fallback to git when local plugin doesn't exist + }, + install = { + -- install missing plugins on startup. This doesn't increase startup time. + missing = true, + -- try to load one of these colorschemes when starting an installation during startup + colorscheme = { "habamax" }, + }, + ui = { + -- a number <1 is a percentage., >1 is a fixed size + size = { width = 0.8, height = 0.8 }, + wrap = true, -- wrap the lines in the ui + -- The border to use for the UI window. Accepts same border values as |nvim_open_win()|. + border = "none", + -- The backdrop opacity. 0 is fully opaque, 100 is fully transparent. + backdrop = 60, + title = nil, ---@type string only works when border is not "none" + title_pos = "center", ---@type "center" | "left" | "right" + -- Show pills on top of the Lazy window + pills = true, ---@type boolean + icons = { + cmd = " ", + config = "", + event = " ", + favorite = " ", + ft = " ", + init = " ", + import = " ", + keys = " ", + lazy = "󰒲 ", + loaded = "●", + not_loaded = "○", + plugin = " ", + runtime = " ", + require = "󰢱 ", + source = " ", + start = " ", + task = "✔ ", + list = { + "●", + "➜", + "★", + "‒", + }, + }, + -- leave nil, to automatically select a browser depending on your OS. + -- If you want to use a specific browser, you can define it here + browser = nil, ---@type string? + throttle = 20, -- how frequently should the ui process render events + custom_keys = { + -- You can define custom key maps here. If present, the description will + -- be shown in the help menu. + -- To disable one of the defaults, set it to false. + + ["l"] = { + function(plugin) + require("lazy.util").float_term({ "lazygit", "log" }, { + cwd = plugin.dir, + }) + end, + desc = "Open lazygit log", + }, + + ["t"] = { + function(plugin) + require("lazy.util").float_term(nil, { + cwd = plugin.dir, + }) + end, + desc = "Open terminal in plugin dir", + }, + }, + }, + diff = { + -- diff command can be one of: + -- * browser: opens the github compare view. Note that this is always mapped to as well, + -- so you can have a different command for diff + -- * git: will run git diff and open a buffer with filetype git + -- * terminal_git: will open a pseudo terminal with git diff + -- * diffview.nvim: will open Diffview to show the diff + cmd = "git", + }, + checker = { + -- automatically check for plugin updates + enabled = false, + concurrency = nil, ---@type number? set to 1 to check for updates very slowly + notify = true, -- get a notification when new updates are found + frequency = 3600, -- check for updates every hour + check_pinned = false, -- check for pinned packages that can't be updated + }, + change_detection = { + -- automatically check for config file changes and reload the ui + enabled = true, + notify = true, -- get a notification when changes are found + }, + performance = { + cache = { + enabled = true, + }, + reset_packpath = true, -- reset the package path to improve startup time + rtp = { + reset = true, -- reset the runtime path to $VIMRUNTIME and your config directory + ---@type string[] + paths = {}, -- add any custom paths here that you want to includes in the rtp + ---@type string[] list any plugins you want to disable here + disabled_plugins = { + -- "gzip", + -- "matchit", + -- "matchparen", + -- "netrwPlugin", + -- "tarPlugin", + -- "tohtml", + -- "tutor", + -- "zipPlugin", + }, + }, + }, + -- lazy can generate helptags from the headings in markdown readme files, + -- so :help works even for plugins that don't have vim docs. + -- when the readme opens with :help it will be correctly displayed as markdown + readme = { + enabled = true, + root = vim.fn.stdpath("state") .. "/lazy/readme", + files = { "README.md", "lua/**/README.md" }, + -- only generate markdown helptags for plugins that dont have docs + skip_if_doc_exists = true, + }, + state = vim.fn.stdpath("state") .. "/lazy/state.json", -- state info for checker and other things + -- Enable profiling of lazy.nvim. This will add some overhead, + -- so only enable this when you are debugging lazy.nvim + profiling = { + -- Enables extra stats on the debug tab related to the loader cache. + -- Additionally gathers stats about all package.loaders + loader = false, + -- Track each new require in the Lazy profiling tab + require = false, + }, + } +< + +If you don’t want to use a Nerd Font, you can replace the icons with Unicode symbols. ~ + +>lua + { + ui = { + icons = { + cmd = "⌘", + config = "🛠", + event = "📅", + ft = "📂", + init = "⚙", + keys = "🗝", + plugin = "🔌", + runtime = "💻", + require = "🌙", + source = "📄", + start = "🚀", + task = "📌", + lazy = "💤 ", + }, + }, + } +< + + +🌈 HIGHLIGHT GROUPS *lazy.nvim-⚙️-configuration-🌈-highlight-groups* + + ----------------------------------------------------------------------- + Highlight Group Default Group Description + ----------------------- ----------------------- ----------------------- + LazyButton CursorLine + + LazyButtonActive Visual + + LazyComment Comment + + LazyCommit @variable.builtin commit ref + + LazyCommitIssue Number + + LazyCommitScope Italic conventional commit + scope + + LazyCommitType Title conventional commit + type + + LazyDimmed Conceal property + + LazyDir @markup.link directory + + LazyH1 IncSearch home button + + LazyH2 Bold titles + + LazyLocal Constant + + LazyNoCond DiagnosticWarn unloaded icon for a + plugin where cond() was + false + + LazyNormal NormalFloat + + LazyProgressDone Constant progress bar done + + LazyProgressTodo LineNr progress bar todo + + LazyProp Conceal property + + LazyReasonCmd Operator + + LazyReasonEvent Constant + + LazyReasonFt Character + + LazyReasonImport Identifier + + LazyReasonKeys Statement + + LazyReasonPlugin Special + + LazyReasonRequire @variable.parameter + + LazyReasonRuntime @macro + + LazyReasonSource Character + + LazyReasonStart @variable.member + + LazySpecial @punctuation.special + + LazyTaskError ErrorMsg task errors + + LazyTaskOutput MsgArea task output + + LazyUrl @markup.link url + + LazyValue @string value of a property + ----------------------------------------------------------------------- + +============================================================================== +7. 🚀 Usage *lazy.nvim-🚀-usage* + + +▶️ STARTUP SEQUENCE *lazy.nvim-🚀-usage-▶️-startup-sequence* + +**lazy.nvim** does **NOT** use Neovim packages and even disables plugin loading +completely (`vim.go.loadplugins = false`). It takes over the complete startup +sequence for more flexibility and better performance. + +In practice this means that step 10 of |Neovim Initialization| is done by Lazy: + +1. All the plugins’ `init()` functions are executed +2. All plugins with `lazy=false` are loaded. This includes sourcing `/plugin` and `/ftdetect` files. (`/after` will not be sourced yet) +3. All files from `/plugin` and `/ftdetect` directories in your rtp are sourced (excluding `/after`) +4. All `/after/plugin` files are sourced (this includes `/after` from plugins) + +Files from runtime directories are always sourced in alphabetical order. + + +🚀 COMMANDS *lazy.nvim-🚀-usage-🚀-commands* + +Plugins are managed with the `:Lazy` command. Open the help with `` to see +all the key mappings. + +You can press `` on a plugin to show its details. Most properties can be +hovered with `` to open links, help files, readmes, git commits and git +issues. + +Lazy can automatically check for updates in the background. This feature can be +enabled with `config.checker.enabled = true`. + +Any operation can be started from the UI, with a sub command or an API +function: + + ---------------------------------------------------------------------------------- + Command Lua Description + ------------------------- -------------------------------- ----------------------- + :Lazy build {plugins} require("lazy").build(opts) Rebuild a plugin + + :Lazy check [plugins] require("lazy").check(opts?) Check for updates and + show the log (git + fetch) + + :Lazy clean [plugins] require("lazy").clean(opts?) Clean plugins that are + no longer needed + + :Lazy clear require("lazy").clear() Clear finished tasks + + :Lazy debug require("lazy").debug() Show debug information + + :Lazy health require("lazy").health() Run :checkhealth lazy + + :Lazy help require("lazy").help() Toggle this help page + + :Lazy home require("lazy").home() Go back to plugin list + + :Lazy install [plugins] require("lazy").install(opts?) Install missing plugins + + :Lazy load {plugins} require("lazy").load(opts) Load a plugin that has + not been loaded yet. + Similar to :packadd. + Like + :Lazy load foo.nvim. + Use :Lazy! load to skip + cond checks. + + :Lazy log [plugins] require("lazy").log(opts?) Show recent updates + + :Lazy profile require("lazy").profile() Show detailed profiling + + :Lazy reload {plugins} require("lazy").reload(opts) Reload a plugin + (experimental!!) + + :Lazy restore [plugins] require("lazy").restore(opts?) Updates all plugins to + the state in the + lockfile. For a single + plugin: restore it to + the state in the + lockfile or to a given + commit under the cursor + + :Lazy sync [plugins] require("lazy").sync(opts?) Run install, clean and + update + + :Lazy update [plugins] require("lazy").update(opts?) Update plugins. This + will also update the + lockfile + ---------------------------------------------------------------------------------- +Any command can have a **bang** to make the command wait till it finished. For +example, if you want to sync lazy from the cmdline, you can use: + +>shell + nvim --headless "+Lazy! sync" +qa +< + +`opts` is a table with the following key-values: + +- **wait**: when true, then the call will wait till the operation completed +- **show**: when false, the UI will not be shown +- **plugins**: a list of plugin names to run the operation on +- **concurrency**: limit the `number` of concurrently running tasks + +Stats API (`require("lazy").stats()`): + +>lua + { + -- startuptime in milliseconds till UIEnter + startuptime = 0, + -- when true, startuptime is the accurate cputime for the Neovim process. (Linux & macOS) + -- this is more accurate than `nvim --startuptime`, and as such will be slightly higher + -- when false, startuptime is calculated based on a delta with a timestamp when lazy started. + real_cputime = false, + count = 0, -- total number of plugins + loaded = 0, -- number of loaded plugins + ---@type table + times = {}, + } +< + +**lazy.nvim** provides a statusline component that you can use to show the +number of pending updates. Make sure to enable `config.checker.enabled = true` +to make this work. + +Example of configuring lualine.nvim ~ + +>lua + require("lualine").setup({ + sections = { + lualine_x = { + { + require("lazy.status").updates, + cond = require("lazy.status").has_updates, + color = { fg = "#ff9e64" }, + }, + }, + }, + }) +< + + +📆 USER EVENTS *lazy.nvim-🚀-usage-📆-user-events* + +The following user events will be triggered: + +- **LazyDone**: when lazy has finished starting up and loaded your config +- **LazySync**: after running sync +- **LazyInstall**: after an install +- **LazyUpdate**: after an update +- **LazyClean**: after a clean +- **LazyCheck**: after checking for updates +- **LazyLog**: after running log +- **LazyLoad**: after loading a plugin. The `data` attribute will contain the plugin name. +- **LazySyncPre**: before running sync +- **LazyInstallPre**: before an install +- **LazyUpdatePre**: before an update +- **LazyCleanPre**: before a clean +- **LazyCheckPre**: before checking for updates +- **LazyLogPre**: before running log +- **LazyReload**: triggered by change detection after reloading plugin specs +- **VeryLazy**: triggered after `LazyDone` and processing `VimEnter` auto commands +- **LazyVimStarted**: triggered after `UIEnter` when `require("lazy").stats().startuptime` has been calculated. + Useful to update the startuptime on your dashboard. + + +❌ UNINSTALLING *lazy.nvim-🚀-usage-❌-uninstalling* + +To uninstall **lazy.nvim**, you need to remove the following files and +directories: + +- **data**: `~/.local/share/nvim/lazy` +- **state**: `~/.local/state/nvim/lazy` +- **lockfile**: `~/.config/nvim/lazy-lock.json` + + + Paths can differ if you changed `XDG` environment variables. + +🔒 LOCKFILE *lazy.nvim-🚀-usage-🔒-lockfile* + +After every **update**, the local lockfile (`lazy-lock.json`) is updated with +the installed revisions. It is recommended to have this file under version +control. + +If you use your Neovim config on multiple machines, using the lockfile, you can +ensure that the same version of every plugin is installed. + +If you are on another machine, you can do `:Lazy restore`, to update all your +plugins to the version from the lockfile. + + +📦 MIGRATION GUIDE *lazy.nvim-🚀-usage-📦-migration-guide* + + +PACKER.NVIM ~ + +- `setup` ➡️ `init` +- `requires` ➡️ `dependencies` +- `as` ➡️ `name` +- `opt` ➡️ `lazy` +- `run` ➡️ `build` +- `lock` ➡️ `pin` +- `disable=true` ➡️ `enabled = false` +- `tag='*'` ➡️ `version="*"` +- `after` is **not needed** for most use-cases. Use `dependencies` otherwise. +- `wants` is **not needed** for most use-cases. Use `dependencies` otherwise. +- `config` don’t support string type, use `fun(LazyPlugin)` instead. +- `module` is auto-loaded. No need to specify +- `keys` spec is |lazy.nvim-different| +- `rtp` can be accomplished with: + +>lua + config = function(plugin) + vim.opt.rtp:append(plugin.dir .. "/custom-rtp") + end +< + +With packer `wants`, `requires` and `after` can be used to manage dependencies. +With lazy, this isn’t needed for most of the Lua dependencies. They can be +installed just like normal plugins (even with `lazy=true`) and will be loaded +when other plugins need them. The `dependencies` key can be used to group those +required plugins with the one that requires them. The plugins which are added +as `dependencies` will always be lazy-loaded and loaded when the plugin is +loaded. + + +PAQ-NVIM ~ + +- `as` ➡️ `name` +- `opt` ➡️ `lazy` +- `run` ➡️ `build` + + +⚡ PROFILING & DEBUG *lazy.nvim-🚀-usage-⚡-profiling-&-debug* + +Great care has been taken to make the startup code (`lazy.core`) as efficient +as possible. During startup, all Lua files used before `VimEnter` or +`BufReadPre` are byte-compiled and cached, similar to what impatient.nvim + does. + +My config for example loads in about `11ms` with `93` plugins. I do a lot of +lazy-loading though :) + +**lazy.nvim** comes with an advanced profiler `:Lazy profile` to help you +improve performance. The profiling view shows you why and how long it took to +load your plugins. + + +🐛 DEBUG ~ + +See an overview of active lazy-loading handlers and what’s in the module +cache. + + +📂 STRUCTURING YOUR PLUGINS*lazy.nvim-🚀-usage-📂-structuring-your-plugins* + +Some users may want to split their plugin specs in multiple files. Instead of +passing a spec table to `setup()`, you can use a Lua module. The specs from the +**module** and any top-level **sub-modules** will be merged together in the +final spec, so it is not needed to add `require` calls in your main plugin file +to the other files. + +The benefits of using this approach: + +- Simple to **add** new plugin specs. Just create a new file in your plugins module. +- Allows for **caching** of all your plugin specs. This becomes important if you have a lot of smaller plugin specs. +- Spec changes will automatically be **reloaded** when they’re updated, so the `:Lazy` UI is always up to date. + +Example: + +- `~/.config/nvim/init.lua` + +>lua + require("lazy").setup("plugins") +< + +- `~/.config/nvim/lua/plugins.lua` or `~/.config/nvim/lua/plugins/init.lua` **(this file is optional)** + +>lua + return { + "folke/neodev.nvim", + "folke/which-key.nvim", + { "folke/neoconf.nvim", cmd = "Neoconf" }, + } +< + +- Any lua file in `~/.config/nvim/lua/plugins/*.lua` will be automatically merged in the main plugin spec + +For a real-life example, you can check LazyVim + and more specifically: + +- lazyvim.plugins contains all the plugin specs that will be loaded + + +↩️ IMPORTING SPECS, CONFIG & OPTS + +As part of a spec, you can add `import` statements to import additional plugin +modules. Both of the `setup()` calls are equivalent: + +>lua + require("lazy").setup("plugins") + + -- Same as: + require("lazy").setup({{import = "plugins"}}) +< + +To import multiple modules from a plugin, add additional specs for each import. +For example, to import LazyVim core plugins and an optional plugin: + +>lua + require("lazy").setup({ + spec = { + { "LazyVim/LazyVim", import = "lazyvim.plugins" }, + { import = "lazyvim.plugins.extras.coding.copilot" }, + } + }) +< + +When you import specs, you can override them by simply adding a spec for the +same plugin to your local specs, adding any keys you want to override / merge. + +`opts`, `dependencies`, `cmd`, `event`, `ft` and `keys` are always merged with +the parent spec. Any other property will override the property from the parent +spec. + + +============================================================================== +8. 🔥 Developers *lazy.nvim-🔥-developers* + +To make it easier for users to install your plugin, you can include a package +spec in your repo. + + +BEST PRACTICES *lazy.nvim-🔥-developers-best-practices* + +- If your plugin needs `setup()`, then create a simple `lazy.lua` file like this: + >lua + return { "me/my-plugin", opts = {} } + < +- Plugins that are pure lua libraries should be lazy-loaded with `lazy = true`. + >lua + { "nvim-lua/plenary.nvim", lazy = true } + < +- Always use `opts` instead of `config` when possible. `config` is almost never + needed. +- Only use `dependencies` if a plugin needs the dep to be installed **AND** + loaded. Lua plugins/libraries are automatically loaded when they are + `require()`d, so they don’t need to be in `dependencies`. +- Inside a `build` function or `*.lua` build file, use + `coroutine.yield(msg:string|LazyMsg)` to show progress. +- Don’t change the `cwd` in your build function, since builds run in parallel + and changing the `cwd` will affect other builds. + + +BUILDING *lazy.nvim-🔥-developers-building* + +The spec **build** property can be one of the following: + +- `fun(plugin: LazyPlugin)`: a function that builds the plugin. +- `*.lua`: a Lua file that builds the plugin (like `build.lua`) +- `":Command"`: a Neovim command +- `"rockspec"`: this will run `luarocks make` in the plugin’s directory + This is automatically set by the `rockspec` package source. +- any other **string** will be run as a shell command +- a `list` of any of the above to run multiple build steps +- if no `build` is specified, but a `build.lua` file exists, that will be used instead. + +Build functions and `*.lua` files run asynchronously in a coroutine. Use +`coroutine.yield(msg:string|LazyMsg)` to show progress. + +Yielding will also schedule the next `coroutine.resume()` to run in the next +tick, so you can do long-running tasks without blocking Neovim. + +>lua + ---@class LazyMsg + ---@field msg string + ---@field level? number vim.log.levels.XXX +< + +Use `vim.log.levels.TRACE` to only show the message as a **status** message for +the task. + + + +MINIT (MINIMAL INIT) *lazy.nvim-🔥-developers-minit-(minimal-init)* + +**lazy.nvim** comes with some built-in functionality to help you create a +minimal init for your plugin. + +I mainly use this for testing and for users to create a `repro.lua`. + +When running in **headless** mode, **lazy.nvim** will log any messages to the +terminal. See `opts.headless` for more info. + +**minit** will install/load all your specs and will always run an update as +well. + + +BOOTSTRAP ~ + +>lua + -- setting this env will override all XDG paths + vim.env.LAZY_STDPATH = ".tests" + -- this will install lazy in your stdpath + load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() +< + + +TESTING WITH BUSTED ~ + +This will add `"lunarmodules/busted"`, configure `hererocks` and run `busted`. + +Below is an example of how I use **minit** to run tests with busted + in **LazyVim**. + +>lua + #!/usr/bin/env -S nvim -l + + vim.env.LAZY_STDPATH = ".tests" + load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() + + -- Setup lazy.nvim + require("lazy.minit").busted({ + spec = { + "LazyVim/starter", + "williamboman/mason-lspconfig.nvim", + "williamboman/mason.nvim", + "nvim-treesitter/nvim-treesitter", + }, + }) +< + +To use this, you can run: + +>sh + nvim -l ./tests/busted.lua tests +< + +If you want to inspect the test environment, run: + +>sh + nvim -u ./tests/busted.lua +< + + +REPRO.LUA ~ + +>lua + vim.env.LAZY_STDPATH = ".repro" + load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() + + require("lazy.minit").repro({ + spec = { + "stevearc/conform.nvim", + "nvim-neotest/nvim-nio", + }, + }) + + -- do anything else you need to do to reproduce the issue +< + +Then run it with: + +>sh + nvim -u repro.lua +< + +============================================================================== +9. Links *lazy.nvim-links* 1. *image*: https://user-images.githubusercontent.com/292349/208301737-68fb279c-ba70-43ef-a369-8c3e8367d6b1.png +2. *image*: https://user-images.githubusercontent.com/292349/208301766-5c400561-83c3-4811-9667-1ec4bb3c43b8.png +3. *image*: https://user-images.githubusercontent.com/292349/208301790-7eedbfa5-d202-4e70-852e-de68aa47233b.png Generated by panvimdoc From 54b003c650f07b771e61566f7be2629beb2b781f Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Thu, 11 Jul 2024 22:03:53 +0200 Subject: [PATCH 258/342] fix(util): strip `-lua` in normname --- lua/lazy/core/util.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/lazy/core/util.lua b/lua/lazy/core/util.lua index 6d7c3b8..bdd42dd 100644 --- a/lua/lazy/core/util.lua +++ b/lua/lazy/core/util.lua @@ -66,7 +66,7 @@ end ---@param name string ---@return string function M.normname(name) - local ret = name:lower():gsub("^n?vim%-", ""):gsub("%.n?vim$", ""):gsub("%.lua", ""):gsub("[^a-z]+", "") + local ret = name:lower():gsub("^n?vim%-", ""):gsub("%.n?vim$", ""):gsub("[%.%-]lua", ""):gsub("[^a-z]+", "") return ret end From 17473db1d79ea30e06126834be7fd95ca511557b Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Thu, 11 Jul 2024 22:04:06 +0200 Subject: [PATCH 259/342] feat: add plugin name to handlers.managed --- lua/lazy/core/handler/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lua/lazy/core/handler/init.lua b/lua/lazy/core/handler/init.lua index b7ce3e5..22d3252 100644 --- a/lua/lazy/core/handler/init.lua +++ b/lua/lazy/core/handler/init.lua @@ -5,7 +5,7 @@ local Util = require("lazy.core.util") ---@field type LazyHandlerTypes ---@field extends? LazyHandler ---@field active table> ----@field managed table +---@field managed table mapping handler keys to plugin names ---@field super LazyHandler local M = {} @@ -114,7 +114,7 @@ function M:add(plugin) if not self.active[key] then self.active[key] = {} self:_add(value) - self.managed[key] = key + self.managed[key] = plugin.name end self.active[key][plugin.name] = plugin.name end From 1d451b4c2ce957da05e2123ce1a001804fc7ea96 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Thu, 11 Jul 2024 22:32:11 +0200 Subject: [PATCH 260/342] ci: use mini.test instead of busted --- lua/lazy/minit.lua | 62 +++++++++++++++++++++++++++++++++++++++++++++- scripts/test | 2 +- 2 files changed, 62 insertions(+), 2 deletions(-) diff --git a/lua/lazy/minit.lua b/lua/lazy/minit.lua index 6300730..bfe63c4 100644 --- a/lua/lazy/minit.lua +++ b/lua/lazy/minit.lua @@ -29,9 +29,12 @@ function M.setup(opts) local args = {} local is_busted = false + local is_minitest = false for _, a in ipairs(_G.arg) do if a == "--busted" then is_busted = true + elseif a == "--minitest" then + is_minitest = true else table.insert(args, a) end @@ -40,6 +43,8 @@ function M.setup(opts) if is_busted then opts = M.busted.setup(opts) + elseif is_minitest then + opts = M.minitest.setup(opts) end -- set stdpaths to use .tests @@ -49,7 +54,6 @@ function M.setup(opts) vim.env[("XDG_%s_HOME"):format(name:upper())] = root .. "/" .. name end end - vim.o.loadplugins = true require("lazy").setup(opts) if vim.g.colors_name == nil then @@ -68,6 +72,8 @@ function M.setup(opts) if is_busted then M.busted.run() + elseif is_minitest then + M.minitest.run() end end @@ -89,6 +95,60 @@ function M.repro(opts) M.setup(opts) end +M.minitest = {} + +function M.minitest.run() + local Config = require("lazy.core.config") + -- disable termnial output for the tests + Config.options.headless = {} + + if not require("lazy.core.config").headless() then + return vim.notify("busted can only run in headless mode. Please run with `nvim -l`", vim.log.levels.WARN) + end + package.path = package.path .. ";" .. vim.uv.cwd() .. "/tests/?.lua" + local Test = require("mini.test") + local expect = Test.expect + local _assert = assert + local Assert = { + __call = function(_, ...) + return _assert(...) + end, + same = expect.equality, + equal = expect.equality, + are = { + equal = expect.equality, + }, + is_not = { + same = expect.no_equality, + }, + } + Assert.__index = Assert + -- assert = require("luassert") + assert = setmetatable({}, Assert) + require("mini.test").run() +end + +---@param opts LazyConfig +function M.minitest.setup(opts) + return M.extend({ + spec = { + { + "echasnovski/mini.test", + opts = { + collect = { + find_files = function() + return vim.fn.globpath("tests", "**/*_spec.lua", true, true) + end, + }, + -- script_path = "tests/minit.lua", + }, + }, + { dir = vim.uv.cwd() }, + }, + rocks = { hererocks = true }, + }, opts) +end + M.busted = {} function M.busted.run() diff --git a/scripts/test b/scripts/test index 4baf621..2ed43b9 100755 --- a/scripts/test +++ b/scripts/test @@ -1,3 +1,3 @@ #!/bin/env bash -nvim -l tests/minit.lua --busted tests -o utfTerminal "$@" +nvim -l tests/minit.lua --minitest tests -o utfTerminal "$@" From 070418dca1417e7df5c803d7366fd0c7b3e9c612 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 13 Jul 2024 09:25:55 +0200 Subject: [PATCH 261/342] chore(main): release 11.11.0 (#1634) :robot: I have created a release *beep* *boop* --- ## [11.11.0](https://github.com/folke/lazy.nvim/compare/v11.10.4...v11.11.0) (2024-07-11) ### Features * add plugin name to handlers.managed ([17473db](https://github.com/folke/lazy.nvim/commit/17473db1d79ea30e06126834be7fd95ca511557b)) ### Bug Fixes * **minit:** add tests to package.path when running busted (helpers.lua etc) ([fadebdc](https://github.com/folke/lazy.nvim/commit/fadebdc76b71a1d3658a88a025c6c8fb4749e0f8)) * **util:** strip `-lua` in normname ([54b003c](https://github.com/folke/lazy.nvim/commit/54b003c650f07b771e61566f7be2629beb2b781f)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 13 +++++++++++++ lua/lazy/core/config.lua | 2 +- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index a2f63d1..c71760f 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "11.10.4" + ".": "11.11.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 3ed551f..b2051d3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [11.11.0](https://github.com/folke/lazy.nvim/compare/v11.10.4...v11.11.0) (2024-07-11) + + +### Features + +* add plugin name to handlers.managed ([17473db](https://github.com/folke/lazy.nvim/commit/17473db1d79ea30e06126834be7fd95ca511557b)) + + +### Bug Fixes + +* **minit:** add tests to package.path when running busted (helpers.lua etc) ([fadebdc](https://github.com/folke/lazy.nvim/commit/fadebdc76b71a1d3658a88a025c6c8fb4749e0f8)) +* **util:** strip `-lua` in normname ([54b003c](https://github.com/folke/lazy.nvim/commit/54b003c650f07b771e61566f7be2629beb2b781f)) + ## [11.10.4](https://github.com/folke/lazy.nvim/compare/v11.10.3...v11.10.4) (2024-07-08) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index c50b9c5..ff178c1 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -228,7 +228,7 @@ function M.hererocks() return M.options.rocks.hererocks end -M.version = "11.10.4" -- x-release-please-version +M.version = "11.11.0" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 54f70c757cdfc5da4740f2c22e057f3518872ef5 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 13 Jul 2024 09:44:59 +0200 Subject: [PATCH 262/342] ci: add luassert to minitest for now --- .github/ISSUE_TEMPLATE/bug_report.yml | 35 ++++++++------------------- lua/lazy/minit.lua | 15 +++++++++++- 2 files changed, 24 insertions(+), 26 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 4a77601..9f95860 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -6,7 +6,10 @@ body: - type: markdown attributes: value: | - **Before** reporting an issue, make sure to read the [documentation](https://github.com/folke/lazy.nvim) and search [existing issues](https://github.com/folke/lazy.nvim/issues). Usage questions such as ***"How do I...?"*** belong in [Discussions](https://github.com/folke/lazy.nvim/discussions) and will be closed. + **Before** reporting an issue, make sure to read the [documentation](https://github.com/folke/lazy.nvim) + and search [existing issues](https://github.com/folke/lazy.nvim/issues). + + Usage questions such as ***"How do I...?"*** belong in [Discussions](https://github.com/folke/lazy.nvim/discussions) and will be closed. - type: checkboxes attributes: label: Did you check docs and existing issues? @@ -57,32 +60,14 @@ body: label: Repro description: Minimal `init.lua` to reproduce this issue. Save as `repro.lua` and run with `nvim -u repro.lua` value: | - -- DO NOT change the paths and don't remove the colorscheme - local root = vim.fn.fnamemodify("./.repro", ":p") + vim.env.LAZY_STDPATH = ".repro" + load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() - -- set stdpaths to use .repro - for _, name in ipairs({ "config", "data", "state", "cache" }) do - vim.env[("XDG_%s_HOME"):format(name:upper())] = root .. "/" .. name - end - - -- bootstrap lazy - local lazypath = root .. "/plugins/lazy.nvim" - if not vim.loop.fs_stat(lazypath) then - vim.fn.system({ "git", "clone", "--filter=blob:none", "https://github.com/folke/lazy.nvim.git", lazypath, }) - end - vim.opt.runtimepath:prepend(lazypath) - - -- install plugins - local plugins = { - "folke/tokyonight.nvim", - -- add any other plugins here - } - require("lazy").setup(plugins, { - root = root .. "/plugins", + require("lazy.minit").repro({ + spec = { + -- add any other plugins here + }, }) - - vim.cmd.colorscheme("tokyonight") - -- add anything else here render: Lua validations: required: false diff --git a/lua/lazy/minit.lua b/lua/lazy/minit.lua index bfe63c4..0b8f3ca 100644 --- a/lua/lazy/minit.lua +++ b/lua/lazy/minit.lua @@ -25,6 +25,9 @@ function M.setup(opts) opts = M.extend({ local_spec = false, change_detection = { enabled = false }, + dev = { + patterns = vim.env.LAZY_DEV and vim.split(vim.env.LAZY_DEV, ",") or nil, + }, }, opts) local args = {} @@ -121,10 +124,19 @@ function M.minitest.run() is_not = { same = expect.no_equality, }, + is_not_nil = function(a) + return expect.no_equality(nil, a) + end, + is_true = function(a) + return expect.equality(true, a) + end, + is_false = function(a) + return expect.equality(false, a) + end, } Assert.__index = Assert - -- assert = require("luassert") assert = setmetatable({}, Assert) + assert = require("luassert") require("mini.test").run() end @@ -132,6 +144,7 @@ end function M.minitest.setup(opts) return M.extend({ spec = { + "lunarmodules/luassert", { "echasnovski/mini.test", opts = { From 7ed9f7173cdec71a057053d7e6efc20c2c230b95 Mon Sep 17 00:00:00 2001 From: Ethan Wu Date: Sat, 13 Jul 2024 03:51:44 -0400 Subject: [PATCH 263/342] fix(lockfile): ensure newline at EOF for lockfile (#1639) ## Description The lockfile currently does not end with a newline at EOF. Text files should [end with a newline](https://unix.stackexchange.com/a/18789). This also lets you manually edit the lockfile in vim without 'fixeol' creating a spurious change for the added newline. This change however will create a change in users' lockfiles adding a newline upon updating, but since the lockfile would be changing anyways to update lazy.nvim itself, this is likely acceptable. ## Related Issue(s) *none* ## Screenshots *N/A* --- lua/lazy/manage/lock.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/lazy/manage/lock.lua b/lua/lazy/manage/lock.lua index a1b4c74..b3c4444 100644 --- a/lua/lazy/manage/lock.lua +++ b/lua/lazy/manage/lock.lua @@ -42,7 +42,7 @@ function M.update() f:write(",\n") end end - f:write("\n}") + f:write("\n}\n") f:close() end From 58c6bc4ab298dc0d808d325754585f918a031919 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 13 Jul 2024 10:07:17 +0200 Subject: [PATCH 264/342] chore(update): update repository (#1638) Automated changes by [create-pull-request](https://github.com/peter-evans/create-pull-request) GitHub action Co-authored-by: folke <292349+folke@users.noreply.github.com> --- scripts/test | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/test b/scripts/test index 2ed43b9..ffbb540 100755 --- a/scripts/test +++ b/scripts/test @@ -1,3 +1,3 @@ #!/bin/env bash -nvim -l tests/minit.lua --minitest tests -o utfTerminal "$@" +nvim -l tests/minit.lua --minitest From 788feaf10efd5c8a849f7a0daef31ac0af1157bd Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 13 Jul 2024 16:16:17 +0200 Subject: [PATCH 265/342] chore(update): update repository (#1644) Automated changes by [create-pull-request](https://github.com/peter-evans/create-pull-request) GitHub action Co-authored-by: folke <292349+folke@users.noreply.github.com> --- .github/ISSUE_TEMPLATE/bug_report.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 9f95860..8468e01 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -68,6 +68,6 @@ body: -- add any other plugins here }, }) - render: Lua + render: lua validations: required: false From 93499c5deb37641c6cf71528a93f101d186b409f Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 13 Jul 2024 18:07:56 +0200 Subject: [PATCH 266/342] fix(config): check for lib64. Fixes #1343 --- .editorconfig | 12 ++++++++++++ lua/lazy/core/config.lua | 5 ++++- 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 .editorconfig diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..a9452c7 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,12 @@ +# EditorConfig is awesome: https://EditorConfig.org + +# top-most EditorConfig file +root = true + +# Unix-style newlines with a newline ending every file +[*] +end_of_line = lf +insert_final_newline = true +indent_style = space +indent_size = 2 +charset = utf-8 diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index ff178c1..ee3e38b 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -284,6 +284,9 @@ function M.setup(opts) M.me = debug.getinfo(1, "S").source:sub(2) M.me = Util.norm(vim.fn.fnamemodify(M.me, ":p:h:h:h:h")) + local lib = vim.fn.fnamemodify(vim.v.progpath, ":p:h:h") .. "/lib" + lib = vim.uv.fs_stat(lib .. "64") and (lib .. "64") or lib + lib = lib .. "/nvim" if M.options.performance.rtp.reset then ---@type vim.Option vim.opt.rtp = { @@ -291,7 +294,7 @@ function M.setup(opts) vim.fn.stdpath("data") .. "/site", M.me, vim.env.VIMRUNTIME, - vim.fn.fnamemodify(vim.v.progpath, ":p:h:h") .. "/lib/nvim", + lib, vim.fn.stdpath("config") .. "/after", } end From 6e66f8e6550dd22467c11284e638dfccb5d514e4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 13 Jul 2024 19:29:13 +0200 Subject: [PATCH 267/342] chore(update): update repository (#1648) Automated changes by [create-pull-request](https://github.com/peter-evans/create-pull-request) GitHub action Co-authored-by: folke <292349+folke@users.noreply.github.com> --- .editorconfig | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.editorconfig b/.editorconfig index a9452c7..18616d3 100644 --- a/.editorconfig +++ b/.editorconfig @@ -1,9 +1,5 @@ -# EditorConfig is awesome: https://EditorConfig.org - -# top-most EditorConfig file root = true -# Unix-style newlines with a newline ending every file [*] end_of_line = lf insert_final_newline = true From b02c9eae6a250f98908c146d1dc1a891f5019f0a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 13 Jul 2024 22:50:19 +0200 Subject: [PATCH 268/342] chore(main): release 11.11.1 (#1643) :robot: I have created a release *beep* *boop* --- ## [11.11.1](https://github.com/folke/lazy.nvim/compare/v11.11.0...v11.11.1) (2024-07-13) ### Bug Fixes * **config:** check for lib64. Fixes [#1343](https://github.com/folke/lazy.nvim/issues/1343) ([93499c5](https://github.com/folke/lazy.nvim/commit/93499c5deb37641c6cf71528a93f101d186b409f)) * **lockfile:** ensure newline at EOF for lockfile ([#1639](https://github.com/folke/lazy.nvim/issues/1639)) ([7ed9f71](https://github.com/folke/lazy.nvim/commit/7ed9f7173cdec71a057053d7e6efc20c2c230b95)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 8 ++++++++ lua/lazy/core/config.lua | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index c71760f..4d14617 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "11.11.0" + ".": "11.11.1" } diff --git a/CHANGELOG.md b/CHANGELOG.md index b2051d3..39481ef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## [11.11.1](https://github.com/folke/lazy.nvim/compare/v11.11.0...v11.11.1) (2024-07-13) + + +### Bug Fixes + +* **config:** check for lib64. Fixes [#1343](https://github.com/folke/lazy.nvim/issues/1343) ([93499c5](https://github.com/folke/lazy.nvim/commit/93499c5deb37641c6cf71528a93f101d186b409f)) +* **lockfile:** ensure newline at EOF for lockfile ([#1639](https://github.com/folke/lazy.nvim/issues/1639)) ([7ed9f71](https://github.com/folke/lazy.nvim/commit/7ed9f7173cdec71a057053d7e6efc20c2c230b95)) + ## [11.11.0](https://github.com/folke/lazy.nvim/compare/v11.10.4...v11.11.0) (2024-07-11) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index ee3e38b..1206305 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -228,7 +228,7 @@ function M.hererocks() return M.options.rocks.hererocks end -M.version = "11.11.0" -- x-release-please-version +M.version = "11.11.1" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 315191aa9e1b0ce5a023c01f959059411405b7c9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 15 Jul 2024 11:19:51 +0200 Subject: [PATCH 269/342] chore(update): update repository (#1651) Automated changes by [create-pull-request](https://github.com/peter-evans/create-pull-request) GitHub action Co-authored-by: folke <292349+folke@users.noreply.github.com> --- .github/ISSUE_TEMPLATE/bug_report.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 8468e01..5c225eb 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -17,6 +17,8 @@ body: options: - label: I have read all the lazy.nvim docs required: true + - label: I have updated the plugin to the latest version before submitting this issue + required: true - label: I have searched the existing issues of lazy.nvim required: true - label: I have searched the existing issues of plugins related to this issue From 9d445ebbd89401544a538c6af080e4d2785abb49 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 15 Jul 2024 17:09:32 +0200 Subject: [PATCH 270/342] chore(update): update repository (#1653) Automated changes by [create-pull-request](https://github.com/peter-evans/create-pull-request) GitHub action Co-authored-by: folke <292349+folke@users.noreply.github.com> --- .editorconfig | 1 - 1 file changed, 1 deletion(-) diff --git a/.editorconfig b/.editorconfig index 18616d3..8b176d5 100644 --- a/.editorconfig +++ b/.editorconfig @@ -1,7 +1,6 @@ root = true [*] -end_of_line = lf insert_final_newline = true indent_style = space indent_size = 2 From d731a6b005fd239e85e555bd57362382f6c1e461 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Tue, 16 Jul 2024 16:50:31 +0200 Subject: [PATCH 271/342] feat(git): added git network throttle to limit network related git ops per interval. Closes #1635 --- lua/lazy/core/config.lua | 7 +++++++ lua/lazy/manage/task/git.lua | 40 ++++++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 1206305..3ec89c6 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -34,6 +34,13 @@ M.defaults = { -- then set the below to false. This should work, but is NOT supported and will -- increase downloads a lot. filter = true, + -- rate of network related git operations (clone, fetch, checkout) + throttle = { + enabled = false, -- not enabled by default + -- max 2 ops every 5 seconds + rate = 2, + duration = 5 * 1000, -- in ms + }, }, pkg = { enabled = true, diff --git a/lua/lazy/manage/task/git.lua b/lua/lazy/manage/task/git.lua index 9425fec..bd7ee38 100644 --- a/lua/lazy/manage/task/git.lua +++ b/lua/lazy/manage/task/git.lua @@ -1,8 +1,45 @@ +local Async = require("lazy.async") local Config = require("lazy.core.config") local Git = require("lazy.manage.git") local Lock = require("lazy.manage.lock") local Util = require("lazy.util") +local throttle = {} +throttle.running = 0 +throttle.waiting = {} ---@type Async[] +throttle.timer = vim.uv.new_timer() + +function throttle.next() + throttle.running = 0 + while #throttle.waiting > 0 and throttle.running < Config.options.git.throttle.rate do + ---@type Async + local task = table.remove(throttle.waiting, 1) + task:resume() + throttle.running = throttle.running + 1 + end + if throttle.running == 0 then + throttle.timer:stop() + end +end + +function throttle.wait() + if not Config.options.git.throttle.enabled then + return + end + if not throttle.timer:is_active() then + throttle.timer:start(0, Config.options.git.throttle.duration, vim.schedule_wrap(throttle.next)) + end + local running = Async.running() + if throttle.running < Config.options.git.throttle.rate then + throttle.running = throttle.running + 1 + else + table.insert(throttle.waiting, running) + coroutine.yield("waiting") + running:suspend() + coroutine.yield("") + end +end + ---@type table local M = {} @@ -84,6 +121,7 @@ M.clone = { end, ---@async run = function(self) + throttle.wait() local args = { "clone", self.plugin.url, @@ -233,6 +271,7 @@ M.fetch = { ---@async run = function(self) + throttle.wait() local args = { "fetch", "--recurse-submodules", @@ -262,6 +301,7 @@ M.checkout = { ---@async ---@param opts {lockfile?:boolean} run = function(self, opts) + throttle.wait() local info = assert(Git.info(self.plugin.dir)) local target = assert(Git.get_target(self.plugin)) From 5473e3d77c13e40fc4758fa977a1f2c14d0b4ceb Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 17 Jul 2024 12:54:53 +0200 Subject: [PATCH 272/342] chore(main): release 11.12.0 (#1655) :robot: I have created a release *beep* *boop* --- ## [11.12.0](https://github.com/folke/lazy.nvim/compare/v11.11.1...v11.12.0) (2024-07-16) ### Features * **git:** added git network throttle to limit network related git ops per interval. Closes [#1635](https://github.com/folke/lazy.nvim/issues/1635) ([d731a6b](https://github.com/folke/lazy.nvim/commit/d731a6b005fd239e85e555bd57362382f6c1e461)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 7 +++++++ lua/lazy/core/config.lua | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index 4d14617..fc1c305 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "11.11.1" + ".": "11.12.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 39481ef..0ad1e73 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [11.12.0](https://github.com/folke/lazy.nvim/compare/v11.11.1...v11.12.0) (2024-07-16) + + +### Features + +* **git:** added git network throttle to limit network related git ops per interval. Closes [#1635](https://github.com/folke/lazy.nvim/issues/1635) ([d731a6b](https://github.com/folke/lazy.nvim/commit/d731a6b005fd239e85e555bd57362382f6c1e461)) + ## [11.11.1](https://github.com/folke/lazy.nvim/compare/v11.11.0...v11.11.1) (2024-07-13) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 3ec89c6..facd1f8 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -235,7 +235,7 @@ function M.hererocks() return M.options.rocks.hererocks end -M.version = "11.11.1" -- x-release-please-version +M.version = "11.12.0" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 6ca90a21202808796418e46d3cebfbb5a44e54a2 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Thu, 18 Jul 2024 00:40:41 +0200 Subject: [PATCH 273/342] feat(ui): added mapping descriptions --- lua/lazy/view/float.lua | 2 +- lua/lazy/view/init.lua | 26 ++++++++++++++------------ 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/lua/lazy/view/float.lua b/lua/lazy/view/float.lua index 3a59069..4131d72 100644 --- a/lua/lazy/view/float.lua +++ b/lua/lazy/view/float.lua @@ -166,7 +166,7 @@ function M:mount() self:augroup(true) end, { win = true }) self:focus() - self:on_key(ViewConfig.keys.close, self.close) + self:on_key(ViewConfig.keys.close, self.close, "Close") self:on({ "BufDelete", "BufHidden" }, self.close) if vim.bo[self.buf].buftype == "" then diff --git a/lua/lazy/view/init.lua b/lua/lazy/view/init.lua index 313d3ad..e8444eb 100644 --- a/lua/lazy/view/init.lua +++ b/lua/lazy/view/init.lua @@ -85,7 +85,7 @@ function M.create() require("lazy.manage.process").abort() require("lazy.async").abort() return ViewConfig.keys.abort - end, { silent = true, buffer = self.buf, expr = true }) + end, { silent = true, buffer = self.buf, expr = true, desc = "Abort" }) vim.keymap.set("n", "gx", "K", { buffer = self.buf, remap = true }) @@ -110,7 +110,7 @@ function M.create() self.state.plugin = open and selected or nil self:update() end - end) + end, "Details") self:on_key(ViewConfig.keys.next, function() local cursor = vim.api.nvim_win_get_cursor(self.view.win) @@ -121,7 +121,7 @@ function M.create() return end end - end) + end, "Next Plugin") self:on_key(ViewConfig.keys.prev, function() local cursor = vim.api.nvim_win_get_cursor(self.view.win) @@ -132,14 +132,14 @@ function M.create() return end end - end) + end, "Prev Plugin") self:on_key(ViewConfig.keys.profile_sort, function() if self.state.mode == "profile" then self.state.profile.sort_time_taken = not self.state.profile.sort_time_taken self:update() end - end) + end, "Sort Profile") self:on_key(ViewConfig.keys.profile_filter, function() if self.state.mode == "profile" then @@ -159,17 +159,18 @@ function M.create() end end) end - end) + end, "Filter Profile") for lhs, rhs in pairs(Config.options.ui.custom_keys) do if rhs then local handler = type(rhs) == "table" and rhs[1] or rhs + local desc = type(rhs) == "table" and rhs.desc or nil self:on_key(lhs, function() local plugin = self.render:get_plugin() if plugin then handler(plugin) end - end) + end, desc) end end @@ -219,17 +220,17 @@ function M:setup_patterns() ["(https?://%S+)"] = function(url) Util.open(url) end, - }, self.hover) + }, self.hover, "Hover") self:on_pattern(ViewConfig.keys.diff, { [commit_pattern] = function(hash) self:diff({ commit = hash }) end, - }, self.diff) + }, self.diff, "Diff") self:on_pattern(ViewConfig.commands.restore.key_plugin, { [commit_pattern] = function(hash) self:restore({ commit = hash }) end, - }, self.restore) + }, self.restore, "Restore") end ---@param opts? {commit:string} @@ -294,7 +295,8 @@ end ---@param key string ---@param patterns table ---@param fallback? fun(self) -function M:on_pattern(key, patterns, fallback) +---@param desc? string +function M:on_pattern(key, patterns, fallback, desc) self:on_key(key, function() local line = vim.api.nvim_get_current_line() local pos = vim.api.nvim_win_get_cursor(0) @@ -316,7 +318,7 @@ function M:on_pattern(key, patterns, fallback) if fallback then fallback(self) end - end) + end, desc) end function M:setup_modes() From 8f6225751138329da339eb6554d40158768d23ff Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 18 Jul 2024 10:47:30 +0200 Subject: [PATCH 274/342] chore(main): release 11.13.0 (#1660) :robot: I have created a release *beep* *boop* --- ## [11.13.0](https://github.com/folke/lazy.nvim/compare/v11.12.0...v11.13.0) (2024-07-17) ### Features * **ui:** added mapping descriptions ([6ca90a2](https://github.com/folke/lazy.nvim/commit/6ca90a21202808796418e46d3cebfbb5a44e54a2)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 7 +++++++ lua/lazy/core/config.lua | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index fc1c305..fa12dc5 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "11.12.0" + ".": "11.13.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 0ad1e73..44bd690 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [11.13.0](https://github.com/folke/lazy.nvim/compare/v11.12.0...v11.13.0) (2024-07-17) + + +### Features + +* **ui:** added mapping descriptions ([6ca90a2](https://github.com/folke/lazy.nvim/commit/6ca90a21202808796418e46d3cebfbb5a44e54a2)) + ## [11.12.0](https://github.com/folke/lazy.nvim/compare/v11.11.1...v11.12.0) (2024-07-16) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index facd1f8..b75b51c 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -235,7 +235,7 @@ function M.hererocks() return M.options.rocks.hererocks end -M.version = "11.12.0" -- x-release-please-version +M.version = "11.13.0" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 124b864233367cc0665bfcd9872b1c974bfb225b Mon Sep 17 00:00:00 2001 From: Gert Burger Date: Thu, 18 Jul 2024 14:57:12 +0100 Subject: [PATCH 275/342] docs(commands): fix command ordering for sync (#1661) ## Description After a discussion on Slack we noticed that the description of the sync command is a bit vague. Some people, including myself, assumed `clean`/`install`/`update` referred to build steps being performed per plugin. Another person mentioned they thought it referred to the Lazy commands, which does make more sense. They also noticed that the order of the commands do not match the source code. So this PR corrects the order, assuming it was meant to be ordered, and mentions that those are commands for clarity. --- doc/lazy.nvim.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index c2c9695..1694d24 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -988,8 +988,8 @@ function: lockfile or to a given commit under the cursor - :Lazy sync [plugins] require("lazy").sync(opts?) Run install, clean and - update + :Lazy sync [plugins] require("lazy").sync(opts?) Run clean, install, and + update commands :Lazy update [plugins] require("lazy").update(opts?) Update plugins. This will also update the From c92c6b5fd2b3a13c8999ab8379e43a79c9406e59 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 18 Jul 2024 13:57:58 +0000 Subject: [PATCH 276/342] chore(build): auto-generate docs --- doc/lazy.nvim.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index 1694d24..c2c9695 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -988,8 +988,8 @@ function: lockfile or to a given commit under the cursor - :Lazy sync [plugins] require("lazy").sync(opts?) Run clean, install, and - update commands + :Lazy sync [plugins] require("lazy").sync(opts?) Run install, clean and + update :Lazy update [plugins] require("lazy").update(opts?) Update plugins. This will also update the From 5bdb12a038e5a72cc793f38893f1a9c9fb741759 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Fri, 19 Jul 2024 08:57:35 +0200 Subject: [PATCH 277/342] fix(build): only load the plugin before build for `:` build commands --- lua/lazy/manage/task/plugin.lua | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/lua/lazy/manage/task/plugin.lua b/lua/lazy/manage/task/plugin.lua index fd6c12b..bd565f8 100644 --- a/lua/lazy/manage/task/plugin.lua +++ b/lua/lazy/manage/task/plugin.lua @@ -19,6 +19,9 @@ local B = {} ---@param task LazyTask ---@param build string function B.cmd(task, build) + if task.plugin.build ~= "rockspec" then + Loader.load(task.plugin, { task = "build" }) + end local cmd = vim.api.nvim_parse_cmd(build:sub(2), {}) --[[@as vim.api.keyset.cmd]] task:log(vim.api.nvim_cmd(cmd, { output = true })) end @@ -48,10 +51,6 @@ M.build = { run = function(self) vim.cmd([[silent! runtime plugin/rplugin.vim]]) - if self.plugin.build ~= "rockspec" then - Loader.load(self.plugin, { task = "build" }) - end - local builders = self.plugin.build -- Skip if `build` is set to `false` From 9a374a0fb4d3ac42dac4a129d4bead7252473c77 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 19 Jul 2024 11:50:14 +0200 Subject: [PATCH 278/342] chore(main): release 11.13.1 (#1664) :robot: I have created a release *beep* *boop* --- ## [11.13.1](https://github.com/folke/lazy.nvim/compare/v11.13.0...v11.13.1) (2024-07-19) ### Bug Fixes * **build:** only load the plugin before build for `:` build commands ([5bdb12a](https://github.com/folke/lazy.nvim/commit/5bdb12a038e5a72cc793f38893f1a9c9fb741759)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 7 +++++++ lua/lazy/core/config.lua | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index fa12dc5..4639dfb 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "11.13.0" + ".": "11.13.1" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 44bd690..1757c13 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [11.13.1](https://github.com/folke/lazy.nvim/compare/v11.13.0...v11.13.1) (2024-07-19) + + +### Bug Fixes + +* **build:** only load the plugin before build for `:` build commands ([5bdb12a](https://github.com/folke/lazy.nvim/commit/5bdb12a038e5a72cc793f38893f1a9c9fb741759)) + ## [11.13.0](https://github.com/folke/lazy.nvim/compare/v11.12.0...v11.13.0) (2024-07-17) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index b75b51c..1753933 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -235,7 +235,7 @@ function M.hererocks() return M.options.rocks.hererocks end -M.version = "11.13.0" -- x-release-please-version +M.version = "11.13.1" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 18d1c1b47e175cd58dc12bf4792ef4e9a50505fa Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sun, 21 Jul 2024 12:41:54 +0200 Subject: [PATCH 279/342] fix(loader): add auto loaded module to package.loaded early to prevent require loops --- lua/lazy/core/loader.lua | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/lua/lazy/core/loader.lua b/lua/lazy/core/loader.lua index c5cdca2..ac53690 100644 --- a/lua/lazy/core/loader.lua +++ b/lua/lazy/core/loader.lua @@ -552,15 +552,16 @@ function M.loader(modname) end if ret then - M.auto_load(modname, ret.modpath) local mod = package.loaded[modname] - if type(mod) == "table" then - return function() - return mod - end + if type(mod) ~= "table" then + mod = loadfile(ret.modpath, nil, nil, ret.stat)() end + package.loaded[modname] = mod + M.auto_load(modname, ret.modpath) -- selene: allow(incorrect_standard_library_use) - return loadfile(ret.modpath, nil, nil, ret.stat) + return function() + return mod + end end end From 8bef0742a2f6f587c8dba73e99e7fb2c05b3764a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 21 Jul 2024 15:53:27 +0200 Subject: [PATCH 280/342] chore(main): release 11.13.2 (#1668) :robot: I have created a release *beep* *boop* --- ## [11.13.2](https://github.com/folke/lazy.nvim/compare/v11.13.1...v11.13.2) (2024-07-21) ### Bug Fixes * **loader:** add auto loaded module to package.loaded early to prevent require loops ([18d1c1b](https://github.com/folke/lazy.nvim/commit/18d1c1b47e175cd58dc12bf4792ef4e9a50505fa)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 7 +++++++ lua/lazy/core/config.lua | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index 4639dfb..a52e23c 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "11.13.1" + ".": "11.13.2" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 1757c13..8094a59 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [11.13.2](https://github.com/folke/lazy.nvim/compare/v11.13.1...v11.13.2) (2024-07-21) + + +### Bug Fixes + +* **loader:** add auto loaded module to package.loaded early to prevent require loops ([18d1c1b](https://github.com/folke/lazy.nvim/commit/18d1c1b47e175cd58dc12bf4792ef4e9a50505fa)) + ## [11.13.1](https://github.com/folke/lazy.nvim/compare/v11.13.0...v11.13.1) (2024-07-19) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 1753933..0029a30 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -235,7 +235,7 @@ function M.hererocks() return M.options.rocks.hererocks end -M.version = "11.13.1" -- x-release-please-version +M.version = "11.13.2" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From a692bf86883457f45fe3f773bfc8bc4d9e4b070c Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sun, 21 Jul 2024 17:32:12 +0200 Subject: [PATCH 281/342] revert: fix(loader): add auto loaded module to package.loaded early to prevent require loops This reverts commit 18d1c1b47e175cd58dc12bf4792ef4e9a50505fa. --- lua/lazy/core/loader.lua | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/lua/lazy/core/loader.lua b/lua/lazy/core/loader.lua index ac53690..c5cdca2 100644 --- a/lua/lazy/core/loader.lua +++ b/lua/lazy/core/loader.lua @@ -552,16 +552,15 @@ function M.loader(modname) end if ret then - local mod = package.loaded[modname] - if type(mod) ~= "table" then - mod = loadfile(ret.modpath, nil, nil, ret.stat)() - end - package.loaded[modname] = mod M.auto_load(modname, ret.modpath) - -- selene: allow(incorrect_standard_library_use) - return function() - return mod + local mod = package.loaded[modname] + if type(mod) == "table" then + return function() + return mod + end end + -- selene: allow(incorrect_standard_library_use) + return loadfile(ret.modpath, nil, nil, ret.stat) end end From a09c876f6ef642c8feaea45932df73b058d9a083 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 21 Jul 2024 17:34:22 +0200 Subject: [PATCH 282/342] chore(main): release 11.13.3 (#1669) :robot: I have created a release *beep* *boop* --- ## [11.13.3](https://github.com/folke/lazy.nvim/compare/v11.13.2...v11.13.3) (2024-07-21) ### Reverts * fix(loader): add auto loaded module to package.loaded early to prevent require loops ([a692bf8](https://github.com/folke/lazy.nvim/commit/a692bf86883457f45fe3f773bfc8bc4d9e4b070c)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 7 +++++++ lua/lazy/core/config.lua | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index a52e23c..34e9ae3 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "11.13.2" + ".": "11.13.3" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 8094a59..9f4735d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [11.13.3](https://github.com/folke/lazy.nvim/compare/v11.13.2...v11.13.3) (2024-07-21) + + +### Reverts + +* fix(loader): add auto loaded module to package.loaded early to prevent require loops ([a692bf8](https://github.com/folke/lazy.nvim/commit/a692bf86883457f45fe3f773bfc8bc4d9e4b070c)) + ## [11.13.2](https://github.com/folke/lazy.nvim/compare/v11.13.1...v11.13.2) (2024-07-21) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 0029a30..ab07479 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -235,7 +235,7 @@ function M.hererocks() return M.options.rocks.hererocks end -M.version = "11.13.2" -- x-release-please-version +M.version = "11.13.3" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 34b0126e5b3966f1dbe148d6f8450213115e76b2 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Mon, 22 Jul 2024 09:43:09 +0200 Subject: [PATCH 283/342] fix(loader): add plugins whose rtp got loaded early to start plugins --- lua/lazy/core/loader.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/lazy/core/loader.lua b/lua/lazy/core/loader.lua index c5cdca2..323b57b 100644 --- a/lua/lazy/core/loader.lua +++ b/lua/lazy/core/loader.lua @@ -161,7 +161,7 @@ function M.get_start_plugins() ---@type LazyPlugin[] local start = {} for _, plugin in pairs(Config.plugins) do - if plugin.lazy == false and not plugin._.loaded then + if not plugin._.loaded and (plugin._.rtp_loaded or plugin.lazy == false) then start[#start + 1] = plugin end end From 12f2c74244cc768d97c83972aa63722389b5d96d Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Mon, 22 Jul 2024 09:45:01 +0200 Subject: [PATCH 284/342] fix(loader): explicitely set package.loaded.modname to nil to prevent recursive loading errors --- lua/lazy/core/loader.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lua/lazy/core/loader.lua b/lua/lazy/core/loader.lua index 323b57b..cfcc136 100644 --- a/lua/lazy/core/loader.lua +++ b/lua/lazy/core/loader.lua @@ -552,6 +552,8 @@ function M.loader(modname) end if ret then + -- explicitly set to nil to prevent loading errors + package.loaded[modname] = nil M.auto_load(modname, ret.modpath) local mod = package.loaded[modname] if type(mod) == "table" then From 16a5c46aa3d05d37eb9c49f57ab058033b0870a6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 22 Jul 2024 09:47:04 +0200 Subject: [PATCH 285/342] chore(main): release 11.13.4 (#1670) :robot: I have created a release *beep* *boop* --- ## [11.13.4](https://github.com/folke/lazy.nvim/compare/v11.13.3...v11.13.4) (2024-07-22) ### Bug Fixes * **loader:** add plugins whose rtp got loaded early to start plugins ([34b0126](https://github.com/folke/lazy.nvim/commit/34b0126e5b3966f1dbe148d6f8450213115e76b2)) * **loader:** explicitely set package.loaded.modname to nil to prevent recursive loading errors ([12f2c74](https://github.com/folke/lazy.nvim/commit/12f2c74244cc768d97c83972aa63722389b5d96d)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 8 ++++++++ lua/lazy/core/config.lua | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index 34e9ae3..8c425b8 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "11.13.3" + ".": "11.13.4" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 9f4735d..21299f1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## [11.13.4](https://github.com/folke/lazy.nvim/compare/v11.13.3...v11.13.4) (2024-07-22) + + +### Bug Fixes + +* **loader:** add plugins whose rtp got loaded early to start plugins ([34b0126](https://github.com/folke/lazy.nvim/commit/34b0126e5b3966f1dbe148d6f8450213115e76b2)) +* **loader:** explicitely set package.loaded.modname to nil to prevent recursive loading errors ([12f2c74](https://github.com/folke/lazy.nvim/commit/12f2c74244cc768d97c83972aa63722389b5d96d)) + ## [11.13.3](https://github.com/folke/lazy.nvim/compare/v11.13.2...v11.13.3) (2024-07-21) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index ab07479..041778d 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -235,7 +235,7 @@ function M.hererocks() return M.options.rocks.hererocks end -M.version = "11.13.3" -- x-release-please-version +M.version = "11.13.4" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From cc028e77eba9592818ca237b2079a51cf87b6af2 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Mon, 22 Jul 2024 14:24:40 +0200 Subject: [PATCH 286/342] ci: update --- .github/workflows/stale.yml | 3 ++- .github/workflows/update.yml | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index a0c704b..4e0273b 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -5,6 +5,7 @@ on: - cron: "30 1 * * *" jobs: - ci: + stale: + if: contains(fromJSON('["folke", "LazyVim"]'), github.repository_owner) uses: folke/github/.github/workflows/stale.yml@main secrets: inherit diff --git a/.github/workflows/update.yml b/.github/workflows/update.yml index 2177a50..6784ef9 100644 --- a/.github/workflows/update.yml +++ b/.github/workflows/update.yml @@ -7,6 +7,7 @@ on: - cron: "0 * * * *" jobs: - ci: + update: + if: contains(fromJSON('["folke", "LazyVim"]'), github.repository_owner) uses: folke/github/.github/workflows/update.yml@main secrets: inherit From 7d29719ade6f5a269e3b7d08b246641b5b079aaa Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Mon, 22 Jul 2024 14:38:00 +0200 Subject: [PATCH 287/342] fix(health): dont use vim.fn.system to get cmd versions --- lua/lazy/health.lua | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/lua/lazy/health.lua b/lua/lazy/health.lua index 9e2a869..6a6d60d 100644 --- a/lua/lazy/health.lua +++ b/lua/lazy/health.lua @@ -1,4 +1,5 @@ local Config = require("lazy.core.config") +local Process = require("lazy.manage.process") local uv = vim.uv or vim.loop local M = {} @@ -36,11 +37,11 @@ function M.have(cmd, opts) local found for _, c in ipairs(cmd) do if vim.fn.executable(c) == 1 then - local version = vim.fn.system(c .. " " .. opts.version) or "" - if vim.v.shell_error ~= 0 then - opts.error(("failed to get version of {%s}\n%s"):format(c, version)) + local out, exit_code = Process.exec({ c, opts.version }) + if exit_code ~= 0 then + opts.error(("failed to get version of {%s}\n%s"):format(c, table.concat(out, "\n"))) else - version = vim.trim(vim.split(version, "\n")[1]) + local version = vim.trim(out[1] or "") version = version:gsub("^%s*" .. vim.pesc(c) .. "%s*", "") if opts.version_pattern and not version:find(opts.version_pattern, 1, true) then opts.warn(("`%s` version `%s` needed, but found `%s`"):format(c, opts.version_pattern, version)) From 839f9e78e78dc935b1188fb16583365991739c51 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 22 Jul 2024 14:41:58 +0200 Subject: [PATCH 288/342] chore(main): release 11.13.5 (#1672) :robot: I have created a release *beep* *boop* --- ## [11.13.5](https://github.com/folke/lazy.nvim/compare/v11.13.4...v11.13.5) (2024-07-22) ### Bug Fixes * **health:** dont use vim.fn.system to get cmd versions ([7d29719](https://github.com/folke/lazy.nvim/commit/7d29719ade6f5a269e3b7d08b246641b5b079aaa)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 7 +++++++ lua/lazy/core/config.lua | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index 8c425b8..73b8cd1 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "11.13.4" + ".": "11.13.5" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 21299f1..ed2bf2c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [11.13.5](https://github.com/folke/lazy.nvim/compare/v11.13.4...v11.13.5) (2024-07-22) + + +### Bug Fixes + +* **health:** dont use vim.fn.system to get cmd versions ([7d29719](https://github.com/folke/lazy.nvim/commit/7d29719ade6f5a269e3b7d08b246641b5b079aaa)) + ## [11.13.4](https://github.com/folke/lazy.nvim/compare/v11.13.3...v11.13.4) (2024-07-22) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 041778d..e02ed0b 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -235,7 +235,7 @@ function M.hererocks() return M.options.rocks.hererocks end -M.version = "11.13.4" -- x-release-please-version +M.version = "11.13.5" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From d5686efbd00942b3e38de7c08b8df69d961b02f0 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Tue, 23 Jul 2024 13:31:20 +0200 Subject: [PATCH 289/342] feat: added `opts.git.cooldown` to allow updating plugins on slow connections. Fixes #1656 --- lua/lazy/core/config.lua | 4 ++++ lua/lazy/manage/task/git.lua | 16 +++++++++++++++- lua/lazy/types.lua | 1 + 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index e02ed0b..f5633b1 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -41,6 +41,10 @@ M.defaults = { rate = 2, duration = 5 * 1000, -- in ms }, + -- Time in seconds to wait before running fetch again for a plugin. + -- Repeated update/check operations will not run again until this + -- cooldown period has passed. + cooldown = 0, }, pkg = { enabled = true, diff --git a/lua/lazy/manage/task/git.lua b/lua/lazy/manage/task/git.lua index bd7ee38..c54c809 100644 --- a/lua/lazy/manage/task/git.lua +++ b/lua/lazy/manage/task/git.lua @@ -40,6 +40,15 @@ function throttle.wait() end end +---@param plugin LazyPlugin +local function cooldown(plugin) + if not plugin._.last_check then + return false + end + local delta = (vim.uv.now() - plugin._.last_check) / 1000 + return delta < Config.options.git.cooldown +end + ---@type table local M = {} @@ -266,7 +275,7 @@ M.status = { -- fetches all needed origin branches M.fetch = { skip = function(plugin) - return not plugin._.installed or plugin._.is_local + return not plugin._.installed or plugin._.is_local or cooldown(plugin) end, ---@async @@ -287,6 +296,11 @@ M.fetch = { self:spawn("git", { args = args, cwd = self.plugin.dir, + on_exit = function(ok) + if ok then + self.plugin._.last_check = vim.uv.now() + end + end, }) end, } diff --git a/lua/lazy/types.lua b/lua/lazy/types.lua index 0a10467..5921169 100644 --- a/lua/lazy/types.lua +++ b/lua/lazy/types.lua @@ -20,6 +20,7 @@ ---@field tasks? LazyTask[] ---@field updated? {from:string, to:string} ---@field updates? {from:GitInfo, to:GitInfo} +---@field last_check? number ---@field working? boolean ---@field pkg? LazyPkg From c02268ac6e6aab92249d020d75efc588bd9d24fa Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Tue, 23 Jul 2024 17:24:33 +0200 Subject: [PATCH 290/342] feat(plugin): improve error handling and show better error message --- lua/lazy/core/plugin.lua | 41 ++++++++++++++++++++++++---------------- 1 file changed, 25 insertions(+), 16 deletions(-) diff --git a/lua/lazy/core/plugin.lua b/lua/lazy/core/plugin.lua index d121fdf..1aef7c7 100644 --- a/lua/lazy/core/plugin.lua +++ b/lua/lazy/core/plugin.lua @@ -146,33 +146,43 @@ function Spec:import(spec) local imported = 0 - ---@type (string|(fun():LazyPluginSpec))[] + ---@type {modname: string, load: fun():(LazyPluginSpec?, string?)}[] local modspecs = {} if type(import) == "string" then Util.lsmod(import, function(modname, modpath) - modspecs[#modspecs + 1] = modname - package.preload[modname] = function() - return loadfile(modpath)() - end + modspecs[#modspecs + 1] = { + modname = modname, + load = function() + local mod, err = loadfile(modpath) + if mod then + return mod() + else + return nil, err + end + end, + } + end) + table.sort(modspecs, function(a, b) + return a.modname < b.modname end) - table.sort(modspecs) else - modspecs = { spec.import } + modspecs = { modname = import_name, load = spec.import } end for _, modspec in ipairs(modspecs) do imported = imported + 1 - local modname = type(modspec) == "string" and modspec or import_name + local modname = modspec.modname Util.track({ import = modname }) self.importing = modname -- unload the module so we get a clean slate ---@diagnostic disable-next-line: no-unknown package.loaded[modname] = nil Util.try(function() - local mod = type(modspec) == "function" and modspec() or require(modspec) - if type(mod) ~= "table" then - self.importing = nil + local mod, err = modspec.load() + if err then + self:error("Failed to load `" .. modname .. "`:\n" .. err) + elseif type(mod) ~= "table" then return self:error( "Invalid spec module: `" .. modname @@ -180,18 +190,17 @@ function Spec:import(spec) .. type(mod) .. "` was returned instead" ) + else + self:normalize(mod) end - self:normalize(mod) - self.importing = nil - Util.track() end, { msg = "Failed to load `" .. modname .. "`", on_error = function(msg) self:error(msg) - self.importing = nil - Util.track() end, }) + self.importing = nil + Util.track() end if imported == 0 then self:error("No specs found for module " .. spec.import) From b4a5a1209e4c64fa67aedf721a383541a64056d1 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Wed, 24 Jul 2024 07:23:36 +0200 Subject: [PATCH 291/342] fix(plugin): make .lazy.lua work again --- lua/lazy/core/plugin.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lua/lazy/core/plugin.lua b/lua/lazy/core/plugin.lua index 1aef7c7..97347a7 100644 --- a/lua/lazy/core/plugin.lua +++ b/lua/lazy/core/plugin.lua @@ -167,7 +167,7 @@ function Spec:import(spec) return a.modname < b.modname end) else - modspecs = { modname = import_name, load = spec.import } + modspecs = { { modname = import_name, load = spec.import } } end for _, modspec in ipairs(modspecs) do @@ -203,7 +203,7 @@ function Spec:import(spec) Util.track() end if imported == 0 then - self:error("No specs found for module " .. spec.import) + self:error("No specs found for module " .. vim.inspect(spec.import)) end end From 4496b4cad69a862199bb3ad452d3c4988bb925a1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 24 Jul 2024 07:38:49 +0200 Subject: [PATCH 292/342] chore(main): release 11.14.0 (#1673) :robot: I have created a release *beep* *boop* --- ## [11.14.0](https://github.com/folke/lazy.nvim/compare/v11.13.5...v11.14.0) (2024-07-24) ### Features * added `opts.git.cooldown` to allow updating plugins on slow connections. Fixes [#1656](https://github.com/folke/lazy.nvim/issues/1656) ([d5686ef](https://github.com/folke/lazy.nvim/commit/d5686efbd00942b3e38de7c08b8df69d961b02f0)) * **plugin:** improve error handling and show better error message ([c02268a](https://github.com/folke/lazy.nvim/commit/c02268ac6e6aab92249d020d75efc588bd9d24fa)) ### Bug Fixes * **plugin:** make .lazy.lua work again ([b4a5a12](https://github.com/folke/lazy.nvim/commit/b4a5a1209e4c64fa67aedf721a383541a64056d1)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 13 +++++++++++++ lua/lazy/core/config.lua | 2 +- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index 73b8cd1..ec03d72 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "11.13.5" + ".": "11.14.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index ed2bf2c..a67aea8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [11.14.0](https://github.com/folke/lazy.nvim/compare/v11.13.5...v11.14.0) (2024-07-24) + + +### Features + +* added `opts.git.cooldown` to allow updating plugins on slow connections. Fixes [#1656](https://github.com/folke/lazy.nvim/issues/1656) ([d5686ef](https://github.com/folke/lazy.nvim/commit/d5686efbd00942b3e38de7c08b8df69d961b02f0)) +* **plugin:** improve error handling and show better error message ([c02268a](https://github.com/folke/lazy.nvim/commit/c02268ac6e6aab92249d020d75efc588bd9d24fa)) + + +### Bug Fixes + +* **plugin:** make .lazy.lua work again ([b4a5a12](https://github.com/folke/lazy.nvim/commit/b4a5a1209e4c64fa67aedf721a383541a64056d1)) + ## [11.13.5](https://github.com/folke/lazy.nvim/compare/v11.13.4...v11.13.5) (2024-07-22) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index f5633b1..1a8dba7 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -239,7 +239,7 @@ function M.hererocks() return M.options.rocks.hererocks end -M.version = "11.13.5" -- x-release-please-version +M.version = "11.14.0" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 7108809ab18dc1b1e6f402b29e2e1d35a5d311d5 Mon Sep 17 00:00:00 2001 From: Alexander Grebennik Date: Thu, 25 Jul 2024 12:53:01 +0200 Subject: [PATCH 293/342] fix(plugins): "Vim:E150: Not a directory" on plugin update (#1679) ## Description On plugins update it fails with following error for any plugin. ``` ~/.local/share/nvim/lazy/lazy.nvim/manage/task/plugin.lua:95: Vim:E150: Not a directory: ~/.local/share/nvim/lazy/gitsigns.nvim/doc/ ``` --- lua/lazy/manage/task/plugin.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/lazy/manage/task/plugin.lua b/lua/lazy/manage/task/plugin.lua index bd565f8..69a93a5 100644 --- a/lua/lazy/manage/task/plugin.lua +++ b/lua/lazy/manage/task/plugin.lua @@ -90,7 +90,7 @@ M.docs = { return not plugin._.dirty end, run = function(self) - local docs = self.plugin.dir .. "/doc/" + local docs = self.plugin.dir .. "/doc" if Util.file_exists(docs) then self:log(vim.api.nvim_cmd({ cmd = "helptags", args = { docs } }, { output = true })) end From 077102c5bfc578693f12377846d427f49bc50076 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 25 Jul 2024 13:38:23 +0200 Subject: [PATCH 294/342] chore(main): release 11.14.1 (#1680) :robot: I have created a release *beep* *boop* --- ## [11.14.1](https://github.com/folke/lazy.nvim/compare/v11.14.0...v11.14.1) (2024-07-25) ### Bug Fixes * **plugins:** "Vim:E150: Not a directory" on plugin update ([#1679](https://github.com/folke/lazy.nvim/issues/1679)) ([7108809](https://github.com/folke/lazy.nvim/commit/7108809ab18dc1b1e6f402b29e2e1d35a5d311d5)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 7 +++++++ lua/lazy/core/config.lua | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index ec03d72..fe56f44 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "11.14.0" + ".": "11.14.1" } diff --git a/CHANGELOG.md b/CHANGELOG.md index a67aea8..83a3375 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [11.14.1](https://github.com/folke/lazy.nvim/compare/v11.14.0...v11.14.1) (2024-07-25) + + +### Bug Fixes + +* **plugins:** "Vim:E150: Not a directory" on plugin update ([#1679](https://github.com/folke/lazy.nvim/issues/1679)) ([7108809](https://github.com/folke/lazy.nvim/commit/7108809ab18dc1b1e6f402b29e2e1d35a5d311d5)) + ## [11.14.0](https://github.com/folke/lazy.nvim/compare/v11.13.5...v11.14.0) (2024-07-24) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 1a8dba7..06719b9 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -239,7 +239,7 @@ function M.hererocks() return M.options.rocks.hererocks end -M.version = "11.14.0" -- x-release-please-version +M.version = "11.14.1" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 014a72b7a87ccf56670412edb87a431b196e5864 Mon Sep 17 00:00:00 2001 From: Christoph Zirkelbach <31811+tigion@users.noreply.github.com> Date: Sat, 31 Aug 2024 08:57:58 +0200 Subject: [PATCH 295/342] docs: update dev.path description (#1711) ## Description In the issue (#1707) I was confused by the description of `dev.path`. I thought functions must also return the general directory for local plugins, but it must be the plugin directory. ## Related Issue(s) #1707 --- lua/lazy/core/config.lua | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 06719b9..16cc012 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -67,7 +67,9 @@ M.defaults = { hererocks = nil, }, dev = { - ---@type string | fun(plugin: LazyPlugin): string directory where you store your local plugin projects + -- Directory where you store your local plugin projects. If a function is used, + -- the plugin directory (e.g. `~/projects/plugin-name`) must be returned. + ---@type string | fun(plugin: LazyPlugin): string path = "~/projects", ---@type string[] plugins that match these patterns will use your local versions instead of being fetched from GitHub patterns = {}, -- For example {"folke"} From 80da254e645f579c28394ee0f08f75a9c9481744 Mon Sep 17 00:00:00 2001 From: Roger Kim Date: Sat, 31 Aug 2024 02:58:43 -0400 Subject: [PATCH 296/342] fix(rocks): add lib64 plugin directory to package.cpath (#1717) ## Description `package.cpath` is missing the `lib64` directory for plugins that have luarocks dependencies. ## Context I found this issue when I was working on my new Neovim plugin on my Fedora 39 machine. I added the `luasockets` dependency to rockspec file in my plugin like so: ``` rockspec_format = "3.0" package = "typeracer.nvim" version = "scm-1" source = { url = "git+https://github.com/carbon-steel/typeracer.nvim", } dependencies = { "luasocket", } test_dependencies = { "nlua", } build = { type = "builtin", copy_directories = {}, } ``` I found that the dynamic libraries from the `luasockets` dependency were installed like so: `/home/username/.local/share/nvim/lazy-rocks/typeracer.nvim/lib64/lua/5.1/socket/core.so`. However, the only entry related to my plugin `typeracer.nvim` was: `/home/glyph/.local/share/nvim/lazy-rocks/typeracer.nvim/lib/lua/5.1/?.so`. The issue is that we only have the plugin's `lib` directory in `package.cpath` and not `lib64`. I looked through `lazy.nvim`'s code and I think adding the `lib64` directory should fix the issue. I don't know if we also want to worry about `lib32` as well, but so far, this change works for me. --- lua/lazy/core/loader.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lua/lazy/core/loader.lua b/lua/lazy/core/loader.lua index cfcc136..c6a7271 100644 --- a/lua/lazy/core/loader.lua +++ b/lua/lazy/core/loader.lua @@ -493,8 +493,11 @@ function M.add_to_luapath(plugin) local root = Config.options.rocks.root .. "/" .. plugin.name local path = root .. "/share/lua/5.1" local cpath = root .. "/lib/lua/5.1" + local cpath2 = root .. "/lib64/lua/5.1" + package.path = package.path .. ";" .. path .. "/?.lua;" .. path .. "/?/init.lua;" package.cpath = package.cpath .. ";" .. cpath .. "/?." .. (jit.os:find("Windows") and "dll" or "so") .. ";" + package.cpath = package.cpath .. ";" .. cpath2 .. "/?." .. (jit.os:find("Windows") and "dll" or "so") .. ";" end function M.source(path) From 591ef40f2da3a26fbcc0466988cd6fe45ca68cae Mon Sep 17 00:00:00 2001 From: Marc Jakobi Date: Sat, 31 Aug 2024 13:59:45 +0700 Subject: [PATCH 297/342] fix(luarocks): try to install from root manifest (#1687) ## Description When passing the `--dev` flag to `luarocks`, it will prioritise `dev` versions when resolving dependencies (treating `dev` or `scm` as greater than a SemVer version) if the rockspec doesn't specify an upper version constraint (which is often the case). Dev packages are often unstable and may cause more problems, especially for Windows users (an example I've seen is git for windows trying and failing to checkout submodules). For now , a good compromise between too many retries and not retrying at all could be to try `luarocks install` from the root manifest first, but to keep the `--dev` flag in `luarocks make`. If that still causes problems, it might be better to fall back to `luarocks make` without `--dev` first, and then to try `luarocks ---dev make` as a last resort. In rocks.nvim, we only fall back to adding the `--dev` flag if the install error message contains the string `"No results matching query were found"`; assuming that stable non-dev packages shouldn't depend on dev packages. --- lua/lazy/pkg/rockspec.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/lua/lazy/pkg/rockspec.lua b/lua/lazy/pkg/rockspec.lua index 19d580d..d7ecfdb 100644 --- a/lua/lazy/pkg/rockspec.lua +++ b/lua/lazy/pkg/rockspec.lua @@ -172,7 +172,6 @@ function M.build(task) root, "--server", Config.options.rocks.server, - "--dev", "--lua-version", "5.1", "install", -- use install so that we can make use of pre-built rocks From 48b52b5cfcf8f88ed0aff8fde573a5cc20b1306d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 31 Aug 2024 07:03:18 +0000 Subject: [PATCH 298/342] chore(build): auto-generate rockspec mappings --- lua/lazy/community/_generated.lua | 1496 +++++++++++++++++++++++++++-- 1 file changed, 1418 insertions(+), 78 deletions(-) diff --git a/lua/lazy/community/_generated.lua b/lua/lazy/community/_generated.lua index 87b46dd..b91e678 100644 --- a/lua/lazy/community/_generated.lua +++ b/lua/lazy/community/_generated.lua @@ -10,27 +10,39 @@ return }, { name = "adopure.nvim", url = "Willem-J-an/adopure.nvim", - version = "1.1.0-1" + version = "1.1.2-1" }, { name = "aerial.nvim", url = "stevearc/aerial.nvim", - version = "1.7.0-1" + version = "2.2.0-1" }, { name = "ai.nvim", url = "S1M0N38/ai.nvim", version = "0.1.0-1" + }, { + name = "astral.nvim", + url = "rootiest/astral.nvim", + version = "1.0.9-1" }, { name = "auto-hlsearch.nvim", url = "asiryk/auto-hlsearch.nvim", version = "1.1.0-1" + }, { + name = "banana.nvim", + url = "CWood-sdf/banana.nvim", + version = "0.1.0-1" }, { name = "better-escape.nvim", url = "max397574/better-escape.nvim", - version = "1.0.0-1" + version = "2.3.2-1" }, { name = "bufferline.nvim", url = "akinsho/bufferline.nvim", - version = "4.6.1-1" + version = "4.7.0-1" + }, { + name = "care.nvim", + url = "max397574/care.nvim", + version = "0.1.0-1" }, { name = "ccc.nvim", url = "uga-rosa/ccc.nvim", @@ -39,6 +51,10 @@ return name = "ci-template.nvim", url = "linrongbin16/ci-template.nvim", version = "8.1.0-1" + }, { + name = "cinnamon.nvim", + url = "declancm/cinnamon.nvim", + version = "1.2.5-1" }, { name = "cmp-rg", url = "lukas-reineke/cmp-rg", @@ -70,11 +86,11 @@ return }, { name = "commons.nvim", url = "linrongbin16/commons.nvim", - version = "18.0.0-1" + version = "19.0.0-1" }, { name = "conform.nvim", url = "stevearc/conform.nvim", - version = "6.0.0-1" + version = "8.0.0-1" }, { name = "cybu.nvim", url = "ghillb/cybu.nvim", @@ -91,6 +107,10 @@ return name = "decipher.nvim", url = "MisanthropicBit/decipher.nvim", version = "1.0.1-1" + }, { + name = "delog.nvim", + url = "ej-shafran/delog.nvim", + version = "0.0.2-1" }, { name = "detour.nvim", url = "carbon-steel/detour.nvim", @@ -114,7 +134,7 @@ return }, { name = "dropbar.nvim", url = "Bekaboo/dropbar.nvim", - version = "8.4.0-1" + version = "8.6.1-1" }, { name = "duck.nvim", url = "tamton-aquib/duck.nvim", @@ -126,15 +146,19 @@ return }, { name = "edgy.nvim", url = "folke/edgy.nvim", - version = "1.9.1-1" + version = "1.10.2-1" + }, { + name = "efmls-configs-nvim", + url = "creativenull/efmls-configs-nvim", + version = "1.7.0-1" }, { name = "elixir-tools.nvim", url = "elixir-tools/elixir-tools.nvim", - version = "0.14.3-1" + version = "0.16.0-1" }, { name = "feline.nvim", url = "freddiehaddad/feline.nvim", - version = "1.6.2-1" + version = "1.6.3-1" }, { name = "fidget.nvim", url = "j-hui/fidget.nvim", @@ -142,7 +166,7 @@ return }, { name = "flash.nvim", url = "folke/flash.nvim", - version = "1.18.3-1" + version = "2.1.0-1" }, { name = "flatten.nvim", url = "willothy/flatten.nvim", @@ -150,11 +174,15 @@ return }, { name = "flutter-tools.nvim", url = "akinsho/flutter-tools.nvim", - version = "1.10.0-1" + version = "1.14.0-1" }, { name = "focus.nvim", url = "nvim-focus/focus.nvim", version = "1.0.2-1" + }, { + name = "foldtext.nvim", + url = "OXY2DEV/foldtext.nvim", + version = "1.0.0-1" }, { name = "freeze-code.nvim", url = "AlejandroSuero/freeze-code.nvim", @@ -162,7 +190,7 @@ return }, { name = "fugit2.nvim", url = "SuperBo/fugit2.nvim", - version = "0.2.0-1" + version = "0.2.1-1" }, { name = "funnyfiles.nvim", url = "aikooo7/funnyfiles.nvim", @@ -182,7 +210,11 @@ return }, { name = "git-worktree.nvim", url = "polarmutex/git-worktree.nvim", - version = "1.0.0-1" + version = "2.0.1-1" + }, { + name = "git.nvim", + url = "Kibadda/git.nvim", + version = "3.3.1-1" }, { name = "github-nvim-theme", url = "projekt0n/github-nvim-theme", @@ -191,10 +223,6 @@ return name = "gitlinker.nvim", url = "linrongbin16/gitlinker.nvim", version = "4.13.1-1" - }, { - name = "gitsigns.nvim", - url = "lewis6991/gitsigns.nvim", - version = "scm-1" }, { name = "glow.nvim", url = "ellisonleao/glow.nvim", @@ -202,7 +230,7 @@ return }, { name = "go.nvim", url = "ray-x/go.nvim", - version = "0.2.1-1" + version = "0.9.0-1" }, { name = "godo.nvim", url = "arthuradolfo/godo.nvim", @@ -215,6 +243,10 @@ return name = "gruvbox.nvim", url = "ellisonleao/gruvbox.nvim", version = "2.0.0-1" + }, { + name = "hardhat.nvim", + url = "TheSnakeWitcher/hardhat.nvim", + version = "0.1.0-1" }, { name = "haskell-snippets.nvim", url = "mrcjkb/haskell-snippets.nvim", @@ -222,7 +254,7 @@ return }, { name = "haskell-tools.nvim", url = "mrcjkb/haskell-tools.nvim", - version = "3.1.10-1" + version = "4.0.1-1" }, { name = "headlines.nvim", url = "lukas-reineke/headlines.nvim", @@ -231,6 +263,14 @@ return name = "heirline.nvim", url = "rebelot/heirline.nvim", version = "1.0.6-1" + }, { + name = "helpview.nvim", + url = "OXY2DEV/helpview.nvim", + version = "1.1.0-1" + }, { + name = "hibiscus.nvim", + url = "udayvir-singh/hibiscus.nvim", + version = "1.7-1" }, { name = "hlchunk.nvim", url = "shellRaining/hlchunk.nvim", @@ -238,7 +278,11 @@ return }, { name = "hotpot.nvim", url = "rktjmp/hotpot.nvim", - version = "0.12.1-1" + version = "0.14.3-1" + }, { + name = "hurl.nvim", + url = "jellydn/hurl.nvim", + version = "1.7.0-1" }, { name = "hydra.nvim", url = "nvimtools/hydra.nvim", @@ -254,7 +298,7 @@ return }, { name = "indent-blankline.nvim", url = "lukas-reineke/indent-blankline.nvim", - version = "3.6.3-1" + version = "3.7.2-1" }, { name = "kai.nvim", url = "Kamilcuk/kai.nvim", @@ -262,7 +306,15 @@ return }, { name = "lazy.nvim", url = "folke/lazy.nvim", - version = "11.2.1-1" + version = "11.14.1-1" + }, { + name = "lazydev.nvim", + url = "folke/lazydev.nvim", + version = "1.8.0-1" + }, { + name = "lean.nvim", + url = "Julian/lean.nvim", + version = "1.0.0-1" }, { name = "leetcode.nvim", url = "kawre/leetcode.nvim", @@ -275,6 +327,10 @@ return name = "live-command.nvim", url = "smjonas/live-command.nvim", version = "1.2.1-1" + }, { + name = "logger.nvim", + url = "jnpngshiii/logger.nvim", + version = "0.4.6-1" }, { name = "logging.nvim", url = "NTBBloodbath/logging.nvim", @@ -283,10 +339,14 @@ return name = "love2d.nvim", url = "S1M0N38/love2d.nvim", version = "0.2-1" + }, { + name = "lsp-format.nvim", + url = "lukas-reineke/lsp-format.nvim", + version = "2.7.1-1" }, { name = "lsp-progress.nvim", url = "linrongbin16/lsp-progress.nvim", - version = "1.0.12-1" + version = "1.0.13-1" }, { name = "lsp_signature.nvim", url = "ray-x/lsp_signature.nvim", @@ -310,23 +370,39 @@ return }, { name = "luarocks-build-treesitter-parser", url = "nvim-neorocks/luarocks-build-treesitter-parser", - version = "4.1.0-1" + version = "5.0.2-1" + }, { + name = "luarocks-build-treesitter-parser-cpp", + url = "nvim-neorocks/luarocks-build-treesitter-parser-cpp", + version = "2.0.4-1" }, { name = "mapx.nvim", url = "b0o/mapx.nvim", version = "0.2.1-1" + }, { + name = "markdown.nvim", + url = "MeanderingProgrammer/render-markdown.nvim", + version = "5.0.1-1" + }, { + name = "markview.nvim", + url = "OXY2DEV/markview.nvim", + version = "22.0.1-1" }, { name = "mason-lspconfig.nvim", url = "williamboman/mason-lspconfig.nvim", - version = "1.29.0-1" + version = "1.30.0-1" }, { name = "mason-nvim-dap.nvim", url = "jay-babu/mason-nvim-dap.nvim", - version = "2.3.0-1" + version = "2.4.0-1" }, { name = "mason.nvim", url = "williamboman/mason.nvim", version = "1.10.0-1" + }, { + name = "mindmap.nvim", + url = "jnpngshiii/mindmap.nvim", + version = "0.7.1-1" }, { name = "mini.nvim", url = "echasnovski/mini.nvim", @@ -334,7 +410,7 @@ return }, { name = "mkdnflow.nvim", url = "jakewvincent/mkdnflow.nvim", - version = "1.2.0-1" + version = "1.2.4-1" }, { name = "move.nvim", url = "fedepujol/move.nvim", @@ -342,7 +418,7 @@ return }, { name = "multicursors.nvim", url = "smoka7/multicursors.nvim", - version = "1.0.0-1" + version = "2.0.0-1" }, { name = "my-awesome-plugin.nvim", url = "S1M0N38/my-awesome-plugin.nvim", @@ -358,7 +434,7 @@ return }, { name = "neoconf.nvim", url = "folke/neoconf.nvim", - version = "1.2.2-1" + version = "1.3.2-1" }, { name = "neodev.nvim", url = "folke/neodev.nvim", @@ -366,7 +442,7 @@ return }, { name = "neogen", url = "danymat/neogen", - version = "2.17.1-1" + version = "2.19.4-1" }, { name = "neogit", url = "NeogitOrg/neogit", @@ -374,11 +450,27 @@ return }, { name = "neorg", url = "nvim-neorg/neorg", - version = "8.7.1-1" + version = "9.1.1-1" + }, { + name = "neorg-conceal-wrap", + url = "benlubas/neorg-conceal-wrap", + version = "1.0.0-1" + }, { + name = "neorg-interim-ls", + url = "benlubas/neorg-interim-ls", + version = "1.2.0-1" + }, { + name = "neorg-se", + url = "benlubas/neorg-se", + version = "1.1.10-1" }, { name = "neorg-telescope", url = "nvim-neorg/neorg-telescope", - version = "1.1.0-1" + version = "1.2.2-1" + }, { + name = "neorg-worklog", + url = "bottd/neorg-worklog", + version = "1.3.4-1" }, { name = "neoscroll.nvim", url = "karb94/neoscroll.nvim", @@ -386,27 +478,43 @@ return }, { name = "neotest", url = "nvim-neotest/neotest", - version = "5.3.3-1" + version = "5.4.1-1" + }, { + name = "neotest-busted", + url = "MisanthropicBit/neotest-busted", + version = "0.1.0-1" + }, { + name = "neotest-golang", + url = "fredrikaverpil/neotest-golang", + version = "1.0.0-1" }, { name = "neotest-haskell", url = "mrcjkb/neotest-haskell", - version = "2.0.0-1" + version = "2.1.0-1" + }, { + name = "neotest-java", + url = "rcasia/neotest-java", + version = "0.14.1-1" + }, { + name = "netman.nvim", + url = "miversen33/netman.nvim", + version = "1.15-1" }, { name = "nightfox.nvim", url = "EdenEast/nightfox.nvim", - version = "3.9.3-1" + version = "3.10.0-1" }, { name = "no-neck-pain.nvim", url = "shortcuts/no-neck-pain.nvim", - version = "1.14.0-1" + version = "1.16.0-1" }, { name = "noice.nvim", url = "folke/noice.nvim", - version = "4.3.0-1" + version = "4.5.0-1" }, { name = "npackages.nvim", url = "diegofigs/npackages.nvim", - version = "0.1.0-1" + version = "0.3.0-1" }, { name = "nui-components.nvim", url = "grapp-dev/nui-components.nvim", @@ -415,6 +523,10 @@ return name = "nui.nvim", url = "MunifTanjim/nui.nvim", version = "0.3.0-1" + }, { + name = "nvim-bqf", + url = "kevinhwang91/nvim-bqf", + version = "1.1.1-1" }, { name = "nvim-client", url = "neovim/lua-client", @@ -423,10 +535,6 @@ return name = "nvim-client-proxy", url = "hjdivad/nvim-client-proxy", version = "0.1.0-1" - }, { - name = "nvim-cmp", - url = "hrsh7th/nvim-cmp", - version = "0.0.1-2" }, { name = "nvim-cokeline", url = "willothy/nvim-cokeline", @@ -442,7 +550,7 @@ return }, { name = "nvim-dbee", url = "kndndrj/nvim-dbee", - version = "0.1.6-1" + version = "0.1.9-1" }, { name = "nvim-dev-container", url = "esensar/nvim-dev-container", @@ -486,7 +594,7 @@ return }, { name = "nvim-nio", url = "nvim-neotest/nvim-nio", - version = "1.9.4-1" + version = "1.10.0-1" }, { name = "nvim-notify", url = "rcarriga/nvim-notify", @@ -502,15 +610,19 @@ return }, { name = "nvim-possession", url = "gennaro-tedesco/nvim-possession", - version = "0.0.13-1" + version = "0.0.14-1" }, { name = "nvim-scrollview", url = "dstein64/nvim-scrollview", - version = "5.1.0-1" + version = "5.2.1-1" }, { name = "nvim-smuggler", url = "Klafyvel/nvim-smuggler", - version = "main-1" + version = "0.3.0-1" + }, { + name = "nvim-snippets", + url = "garymjr/nvim-snippets", + version = "1.0.0-1" }, { name = "nvim-snippy", url = "dcampos/nvim-snippy", @@ -522,7 +634,7 @@ return }, { name = "nvim-tree.lua", url = "nvim-tree/nvim-tree.lua", - version = "1.4.0-1" + version = "1.6.0-1" }, { name = "nvim-treesitter-legacy-api", url = "nvim-treesitter/nvim-treesitter", @@ -535,18 +647,22 @@ return name = "nvim-web-devicons", url = "nvim-tree/nvim-web-devicons", version = "0.100-1" + }, { + name = "nvim-window-picker", + url = "s1n7ax/nvim-window-picker", + version = "2.0.3-1" }, { name = "obsidian.nvim", url = "epwalsh/obsidian.nvim", - version = "3.8.0-1" + version = "3.9.0-1" }, { name = "oil.nvim", url = "stevearc/oil.nvim", - version = "2.10.0-1" + version = "2.12.1-1" }, { name = "onedarkpro.nvim", url = "olimorris/onedarkpro.nvim", - version = "0.8.0-1" + version = "1.0.0-1" }, { name = "onenord.nvim", url = "rmehri01/onenord.nvim", @@ -554,7 +670,7 @@ return }, { name = "otter.nvim", url = "jmbuhr/otter.nvim", - version = "1.15.1-1" + version = "2.5.0-1" }, { name = "overseer.nvim", url = "stevearc/overseer.nvim", @@ -574,7 +690,7 @@ return }, { name = "papis.nvim", url = "jghauser/papis.nvim", - version = "0.5.1-1" + version = "0.6.1-1" }, { name = "paq-nvim", url = "savq/paq-nvim", @@ -582,11 +698,15 @@ return }, { name = "pathlib.nvim", url = "pysan3/pathlib.nvim", - version = "2.2.2-1" + version = "2.2.3-1" + }, { + name = "persisted.nvim", + url = "olimorris/persisted.nvim", + version = "1.1.0-1" }, { name = "persistence.nvim", url = "folke/persistence.nvim", - version = "2.0.0-1" + version = "3.1.0-1" }, { name = "plenary.nvim", url = "nvim-lua/plenary.nvim", @@ -595,42 +715,66 @@ return name = "pretty-fold.nvim", url = "anuvyklack/pretty-fold.nvim", version = "3.0-1" + }, { + name = "quarry.nvim", + url = "rudionrails/quarry.nvim", + version = "2.3.0-1" + }, { + name = "quicker.nvim", + url = "stevearc/quicker.nvim", + version = "1.1.1-1" }, { name = "rainbow-delimiters.nvim", url = "HiPhish/rainbow-delimiters.nvim", - version = "0.4.0-1" + version = "0.6.1-1" + }, { + name = "remember.nvim", + url = "vladdoster/remember.nvim", + version = "1.4.1-1" }, { name = "renamer.nvim", url = "filipdutescu/renamer.nvim", version = "5.1.0-1" + }, { + name = "render-markdown.nvim", + url = "MeanderingProgrammer/render-markdown.nvim", + version = "6.3.0-1" }, { name = "rest.nvim", url = "rest-nvim/rest.nvim", - version = "2.0.1-1" + version = "3.2.1-1" }, { name = "rocks-config.nvim", url = "nvim-neorocks/rocks-config.nvim", - version = "2.1.0-1" + version = "2.2.0-1" }, { name = "rocks-dev.nvim", url = "nvim-neorocks/rocks-dev.nvim", - version = "1.2.3-1" + version = "1.5.0-1" }, { name = "rocks-git.nvim", url = "nvim-neorocks/rocks-git.nvim", - version = "1.5.1-1" + version = "2.0.1-1" + }, { + name = "rocks-lazy.nvim", + url = "nvim-neorocks/rocks-lazy.nvim", + version = "1.0.1-1" + }, { + name = "rocks-treesitter.nvim", + url = "nvim-neorocks/rocks-treesitter.nvim", + version = "1.1.1-1" }, { name = "rocks.nvim", url = "nvim-neorocks/rocks.nvim", - version = "2.32.0-1" + version = "2.38.2-1" }, { name = "rtp.nvim", url = "nvim-neorocks/rtp.nvim", - version = "1.0.0-1" + version = "1.2.0-1" }, { name = "rustaceanvim", url = "mrcjkb/rustaceanvim", - version = "4.25.1-1" + version = "5.2.2-1" }, { name = "schemastore.nvim", url = "b0o/SchemaStore.nvim", @@ -638,7 +782,7 @@ return }, { name = "screenkey.nvim", url = "NStefan002/screenkey.nvim", - version = "2.1.0-1" + version = "2.2.1-1" }, { name = "scrollbar.nvim", url = "Xuyuanp/scrollbar.nvim", @@ -646,7 +790,11 @@ return }, { name = "session.nvim", url = "Kibadda/session.nvim", - version = "2.0.0-1" + version = "3.0.0-1" + }, { + name = "sf.nvim", + url = "xixiaofinland/sf.nvim", + version = "1.5.0-1" }, { name = "sg.nvim", url = "sourcegraph/sg.nvim", @@ -654,7 +802,7 @@ return }, { name = "smart-splits.nvim", url = "mrjones2014/smart-splits.nvim", - version = "1.5.0-1" + version = "1.6.0-1" }, { name = "squirrel.nvim", url = "xiaoshihou514/squirrel.nvim", @@ -671,14 +819,22 @@ return name = "substitute.nvim", url = "gbprod/substitute.nvim", version = "2.0.0-1" + }, { + name = "sus.nvim", + url = "TarunDaCoder/sus.nvim", + version = "1.0.0-1" }, { name = "sweetie.nvim", url = "NTBBloodbath/sweetie.nvim", - version = "3.1.1-1" + version = "3.2.0-1" }, { name = "tabby.nvim", url = "nanozuki/tabby.nvim", version = "2.5.1-1" + }, { + name = "tangerine.nvim", + url = "udayvir-singh/tangerine.nvim", + version = "2.9-1" }, { name = "telescope-zf-native.nvim", url = "natecraddock/telescope-zf-native.nvim", @@ -690,35 +846,1215 @@ return }, { name = "todo-comments.nvim", url = "folke/todo-comments.nvim", - version = "1.2.0-1" + version = "1.3.0-1" }, { name = "toggleterm.nvim", url = "akinsho/toggleterm.nvim", - version = "2.11.0-1" + version = "2.12.0-1" }, { name = "tokyonight.nvim", url = "folke/tokyonight.nvim", - version = "3.0.1-1" + version = "4.8.0-1" + }, { + name = "tree-sitter-ada", + url = "briot/tree-sitter-ada", + version = "0.0.2-1" + }, { + name = "tree-sitter-agda", + url = "tree-sitter/tree-sitter-agda", + version = "0.0.2-1" + }, { + name = "tree-sitter-angular", + url = "dlvandenberg/tree-sitter-angular", + version = "0.0.3-1" + }, { + name = "tree-sitter-apex", + url = "aheber/tree-sitter-sfapex", + version = "0.0.3-1" + }, { + name = "tree-sitter-arduino", + url = "tree-sitter-grammars/tree-sitter-arduino", + version = "0.0.2-1" + }, { + name = "tree-sitter-asm", + url = "RubixDev/tree-sitter-asm", + version = "0.0.3-1" + }, { + name = "tree-sitter-astro", + url = "virchau13/tree-sitter-astro", + version = "0.0.2-1" + }, { + name = "tree-sitter-authzed", + url = "mleonidas/tree-sitter-authzed", + version = "0.0.2-1" + }, { + name = "tree-sitter-awk", + url = "Beaglefoot/tree-sitter-awk", + version = "0.0.2-1" + }, { + name = "tree-sitter-bash", + url = "tree-sitter/tree-sitter-bash", + version = "0.0.2-1" + }, { + name = "tree-sitter-bass", + url = "vito/tree-sitter-bass", + version = "0.0.2-1" + }, { + name = "tree-sitter-beancount", + url = "polarmutex/tree-sitter-beancount", + version = "0.0.3-1" + }, { + name = "tree-sitter-bibtex", + url = "latex-lsp/tree-sitter-bibtex", + version = "0.0.2-1" + }, { + name = "tree-sitter-bicep", + url = "tree-sitter-grammars/tree-sitter-bicep", + version = "0.0.2-1" + }, { + name = "tree-sitter-bitbake", + url = "tree-sitter-grammars/tree-sitter-bitbake", + version = "0.0.2-1" + }, { + name = "tree-sitter-blueprint", + url = "https://gitlab.com/gabmus/tree-sitter-blueprint/-/archive/60ba73739c6083c693d86a1a7cf039c07eb4ed59.zip", + version = "0.0.2-1" + }, { + name = "tree-sitter-bp", + url = "ambroisie/tree-sitter-bp", + version = "0.0.2-1" + }, { + name = "tree-sitter-c", + url = "tree-sitter/tree-sitter-c", + version = "0.0.3-1" + }, { + name = "tree-sitter-c_sharp", + url = "tree-sitter/tree-sitter-c-sharp", + version = "0.0.2-1" + }, { + name = "tree-sitter-cairo", + url = "tree-sitter-grammars/tree-sitter-cairo", + version = "0.0.2-1" + }, { + name = "tree-sitter-capnp", + url = "tree-sitter-grammars/tree-sitter-capnp", + version = "0.0.2-1" + }, { + name = "tree-sitter-chatito", + url = "tree-sitter-grammars/tree-sitter-chatito", + version = "0.0.2-1" + }, { + name = "tree-sitter-clojure", + url = "sogaiu/tree-sitter-clojure", + version = "0.0.2-1" + }, { + name = "tree-sitter-cmake", + url = "uyha/tree-sitter-cmake", + version = "0.0.2-1" + }, { + name = "tree-sitter-comment", + url = "stsewd/tree-sitter-comment", + version = "0.0.3-1" + }, { + name = "tree-sitter-commonlisp", + url = "tree-sitter-grammars/tree-sitter-commonlisp", + version = "0.0.2-1" + }, { + name = "tree-sitter-cooklang", + url = "addcninblue/tree-sitter-cooklang", + version = "0.0.2-1" + }, { + name = "tree-sitter-corn", + url = "jakestanger/tree-sitter-corn", + version = "0.0.2-1" + }, { + name = "tree-sitter-cpon", + url = "tree-sitter-grammars/tree-sitter-cpon", + version = "0.0.2-1" + }, { + name = "tree-sitter-cpp", + url = "tree-sitter/tree-sitter-cpp", + version = "0.0.3-1" + }, { + name = "tree-sitter-css", + url = "tree-sitter/tree-sitter-css", + version = "0.0.3-1" + }, { + name = "tree-sitter-csv", + url = "tree-sitter-grammars/tree-sitter-csv", + version = "0.0.2-1" + }, { + name = "tree-sitter-cuda", + url = "tree-sitter-grammars/tree-sitter-cuda", + version = "0.0.3-1" + }, { + name = "tree-sitter-cue", + url = "eonpatapon/tree-sitter-cue", + version = "0.0.2-1" + }, { + name = "tree-sitter-d", + url = "gdamore/tree-sitter-d", + version = "0.0.3-1" + }, { + name = "tree-sitter-dart", + url = "UserNobody14/tree-sitter-dart", + version = "0.0.3-1" + }, { + name = "tree-sitter-devicetree", + url = "joelspadin/tree-sitter-devicetree", + version = "0.0.3-1" + }, { + name = "tree-sitter-dhall", + url = "jbellerb/tree-sitter-dhall", + version = "0.0.2-1" + }, { + name = "tree-sitter-diff", + url = "the-mikedavis/tree-sitter-diff", + version = "0.0.2-1" + }, { + name = "tree-sitter-disassembly", + url = "ColinKennedy/tree-sitter-disassembly", + version = "0.0.2-1" + }, { + name = "tree-sitter-djot", + url = "treeman/tree-sitter-djot", + version = "0.0.2-1" + }, { + name = "tree-sitter-dockerfile", + url = "camdencheek/tree-sitter-dockerfile", + version = "0.0.2-1" + }, { + name = "tree-sitter-dot", + url = "rydesun/tree-sitter-dot", + version = "0.0.2-1" + }, { + name = "tree-sitter-doxygen", + url = "tree-sitter-grammars/tree-sitter-doxygen", + version = "0.0.2-1" + }, { + name = "tree-sitter-dtd", + url = "tree-sitter-grammars/tree-sitter-xml", + version = "0.0.2-1" + }, { + name = "tree-sitter-earthfile", + url = "glehmann/tree-sitter-earthfile", + version = "0.0.2-1" + }, { + name = "tree-sitter-ebnf", + url = "RubixDev/ebnf", + version = "0.0.2-1" + }, { + name = "tree-sitter-ecma", + url = "nvim-neorocks/luarocks-stub", + version = "0.0.2-1" + }, { + name = "tree-sitter-editorconfig", + url = "ValdezFOmar/tree-sitter-editorconfig", + version = "0.0.4-1" + }, { + name = "tree-sitter-eds", + url = "uyha/tree-sitter-eds", + version = "0.0.2-1" + }, { + name = "tree-sitter-eex", + url = "connorlay/tree-sitter-eex", + version = "0.0.2-1" + }, { + name = "tree-sitter-elixir", + url = "elixir-lang/tree-sitter-elixir", + version = "0.0.2-1" + }, { + name = "tree-sitter-elm", + url = "elm-tooling/tree-sitter-elm", + version = "0.0.2-1" + }, { + name = "tree-sitter-elsa", + url = "glapa-grossklag/tree-sitter-elsa", + version = "0.0.2-1" + }, { + name = "tree-sitter-elvish", + url = "elves/tree-sitter-elvish", + version = "0.0.2-1" + }, { + name = "tree-sitter-embedded_template", + url = "tree-sitter/tree-sitter-embedded-template", + version = "0.0.3-1" + }, { + name = "tree-sitter-erlang", + url = "WhatsApp/tree-sitter-erlang", + version = "0.0.3-1" + }, { + name = "tree-sitter-facility", + url = "FacilityApi/tree-sitter-facility", + version = "0.0.2-1" + }, { + name = "tree-sitter-faust", + url = "khiner/tree-sitter-faust", + version = "0.0.2-1" + }, { + name = "tree-sitter-fennel", + url = "alexmozaidze/tree-sitter-fennel", + version = "0.0.2-1" + }, { + name = "tree-sitter-fidl", + url = "google/tree-sitter-fidl", + version = "0.0.2-1" + }, { + name = "tree-sitter-firrtl", + url = "tree-sitter-grammars/tree-sitter-firrtl", + version = "0.0.2-1" + }, { + name = "tree-sitter-fish", + url = "ram02z/tree-sitter-fish", + version = "0.0.2-1" + }, { + name = "tree-sitter-foam", + url = "FoamScience/tree-sitter-foam", + version = "0.0.2-1" + }, { + name = "tree-sitter-forth", + url = "AlexanderBrevig/tree-sitter-forth", + version = "0.0.2-1" + }, { + name = "tree-sitter-fortran", + url = "stadelmanma/tree-sitter-fortran", + version = "0.0.4-1" + }, { + name = "tree-sitter-fsh", + url = "mgramigna/tree-sitter-fsh", + version = "0.0.2-1" + }, { + name = "tree-sitter-func", + url = "tree-sitter-grammars/tree-sitter-func", + version = "0.0.2-1" + }, { + name = "tree-sitter-fusion", + url = "https://gitlab.com/jirgn/tree-sitter-fusion/-/archive/19db2f47ba4c3a0f6238d4ae0e2abfca16e61dd6.zip", + version = "0.0.2-1" + }, { + name = "tree-sitter-gdscript", + url = "PrestonKnopp/tree-sitter-gdscript", + version = "0.0.2-1" + }, { + name = "tree-sitter-gdshader", + url = "GodOfAvacyn/tree-sitter-gdshader", + version = "0.0.2-1" + }, { + name = "tree-sitter-git_config", + url = "the-mikedavis/tree-sitter-git-config", + version = "0.0.2-1" + }, { + name = "tree-sitter-git_rebase", + url = "the-mikedavis/tree-sitter-git-rebase", + version = "0.0.3-1" + }, { + name = "tree-sitter-gitattributes", + url = "tree-sitter-grammars/tree-sitter-gitattributes", + version = "0.0.2-1" + }, { + name = "tree-sitter-gitcommit", + url = "gbprod/tree-sitter-gitcommit", + version = "0.0.2-1" + }, { + name = "tree-sitter-gitignore", + url = "shunsambongi/tree-sitter-gitignore", + version = "0.0.2-1" + }, { + name = "tree-sitter-gleam", + url = "gleam-lang/tree-sitter-gleam", + version = "0.0.3-1" + }, { + name = "tree-sitter-glimmer", + url = "alexlafroscia/tree-sitter-glimmer", + version = "0.0.3-1" + }, { + name = "tree-sitter-glsl", + url = "tree-sitter-grammars/tree-sitter-glsl", + version = "0.0.3-1" + }, { + name = "tree-sitter-gn", + url = "tree-sitter-grammars/tree-sitter-gn", + version = "0.0.2-1" + }, { + name = "tree-sitter-gnuplot", + url = "dpezto/tree-sitter-gnuplot", + version = "0.0.2-1" + }, { + name = "tree-sitter-go", + url = "tree-sitter/tree-sitter-go", + version = "0.0.3-1" + }, { + name = "tree-sitter-goctl", + url = "chaozwn/tree-sitter-goctl", + version = "0.0.3-1" + }, { + name = "tree-sitter-godot_resource", + url = "PrestonKnopp/tree-sitter-godot-resource", + version = "0.0.2-1" + }, { + name = "tree-sitter-gomod", + url = "camdencheek/tree-sitter-go-mod", + version = "0.0.3-1" + }, { + name = "tree-sitter-gosum", + url = "tree-sitter-grammars/tree-sitter-go-sum", + version = "0.0.2-1" + }, { + name = "tree-sitter-gotmpl", + url = "ngalaiko/tree-sitter-go-template", + version = "0.0.3-1" + }, { + name = "tree-sitter-gowork", + url = "omertuc/tree-sitter-go-work", + version = "0.0.2-1" + }, { + name = "tree-sitter-gpg", + url = "tree-sitter-grammars/tree-sitter-gpg-config", + version = "0.0.2-1" + }, { + name = "tree-sitter-graphql", + url = "bkegley/tree-sitter-graphql", + version = "0.0.2-1" + }, { + name = "tree-sitter-groovy", + url = "murtaza64/tree-sitter-groovy", + version = "0.0.3-1" + }, { + name = "tree-sitter-gstlaunch", + url = "tree-sitter-grammars/tree-sitter-gstlaunch", + version = "0.0.2-1" + }, { + name = "tree-sitter-hack", + url = "slackhq/tree-sitter-hack", + version = "0.0.2-1" + }, { + name = "tree-sitter-hare", + url = "tree-sitter-grammars/tree-sitter-hare", + version = "0.0.2-1" + }, { + name = "tree-sitter-haskell", + url = "tree-sitter/tree-sitter-haskell", + version = "0.0.2-1" + }, { + name = "tree-sitter-haskell_persistent", + url = "MercuryTechnologies/tree-sitter-haskell-persistent", + version = "0.0.2-1" + }, { + name = "tree-sitter-hcl", + url = "tree-sitter-grammars/tree-sitter-hcl", + version = "0.0.2-1" + }, { + name = "tree-sitter-heex", + url = "connorlay/tree-sitter-heex", + version = "0.0.3-1" + }, { + name = "tree-sitter-helm", + url = "ngalaiko/tree-sitter-go-template", + version = "0.0.3-1" + }, { + name = "tree-sitter-hjson", + url = "winston0410/tree-sitter-hjson", + version = "0.0.2-1" + }, { + name = "tree-sitter-hlsl", + url = "tree-sitter-grammars/tree-sitter-hlsl", + version = "0.0.3-1" + }, { + name = "tree-sitter-hlsplaylist", + url = "Freed-Wu/tree-sitter-hlsplaylist", + version = "0.0.3-1" + }, { + name = "tree-sitter-hocon", + url = "antosha417/tree-sitter-hocon", + version = "0.0.2-1" + }, { + name = "tree-sitter-hoon", + url = "urbit-pilled/tree-sitter-hoon", + version = "0.0.2-1" + }, { + name = "tree-sitter-html", + url = "tree-sitter/tree-sitter-html", + version = "0.0.3-1" + }, { + name = "tree-sitter-html_tags", + url = "nvim-neorocks/luarocks-stub", + version = "0.0.2-1" + }, { + name = "tree-sitter-htmldjango", + url = "interdependence/tree-sitter-htmldjango", + version = "0.0.2-1" + }, { + name = "tree-sitter-http", + url = "rest-nvim/tree-sitter-http", + version = "0.0.3-1" + }, { + name = "tree-sitter-hurl", + url = "pfeiferj/tree-sitter-hurl", + version = "0.0.3-1" + }, { + name = "tree-sitter-hyprlang", + url = "tree-sitter-grammars/tree-sitter-hyprlang", + version = "0.0.2-1" + }, { + name = "tree-sitter-idl", + url = "cathaysia/tree-sitter-idl", + version = "0.0.3-1" + }, { + name = "tree-sitter-ini", + url = "justinmk/tree-sitter-ini", + version = "0.0.3-1" + }, { + name = "tree-sitter-inko", + url = "inko-lang/tree-sitter-inko", + version = "0.0.2-1" + }, { + name = "tree-sitter-ispc", + url = "tree-sitter-grammars/tree-sitter-ispc", + version = "0.0.2-1" + }, { + name = "tree-sitter-janet_simple", + url = "sogaiu/tree-sitter-janet-simple", + version = "0.0.3-1" + }, { + name = "tree-sitter-java", + url = "tree-sitter/tree-sitter-java", + version = "0.0.3-1" + }, { + name = "tree-sitter-javascript", + url = "tree-sitter/tree-sitter-javascript", + version = "0.0.3-1" + }, { + name = "tree-sitter-jq", + url = "flurie/tree-sitter-jq", + version = "0.0.2-1" + }, { + name = "tree-sitter-jsdoc", + url = "tree-sitter/tree-sitter-jsdoc", + version = "0.0.2-1" + }, { + name = "tree-sitter-json", + url = "tree-sitter/tree-sitter-json", + version = "0.0.3-1" + }, { + name = "tree-sitter-json5", + url = "Joakker/tree-sitter-json5", + version = "0.0.2-1" + }, { + name = "tree-sitter-jsonc", + url = "https://gitlab.com/WhyNotHugo/tree-sitter-jsonc/-/archive/02b01653c8a1c198ae7287d566efa86a135b30d5.zip", + version = "0.0.2-1" + }, { + name = "tree-sitter-jsonnet", + url = "sourcegraph/tree-sitter-jsonnet", + version = "0.0.4-1" + }, { + name = "tree-sitter-jsx", + url = "nvim-neorocks/luarocks-stub", + version = "0.0.2-1" + }, { + name = "tree-sitter-julia", + url = "tree-sitter/tree-sitter-julia", + version = "0.0.3-1" + }, { + name = "tree-sitter-just", + url = "IndianBoy42/tree-sitter-just", + version = "0.0.3-1" + }, { + name = "tree-sitter-kconfig", + url = "tree-sitter-grammars/tree-sitter-kconfig", + version = "0.0.2-1" + }, { + name = "tree-sitter-kdl", + url = "tree-sitter-grammars/tree-sitter-kdl", + version = "0.0.2-1" + }, { + name = "tree-sitter-kotlin", + url = "fwcd/tree-sitter-kotlin", + version = "0.0.4-1" + }, { + name = "tree-sitter-koto", + url = "koto-lang/tree-sitter-koto", + version = "0.0.2-1" + }, { + name = "tree-sitter-kusto", + url = "Willem-J-an/tree-sitter-kusto", + version = "0.0.2-1" + }, { + name = "tree-sitter-lalrpop", + url = "traxys/tree-sitter-lalrpop", + version = "0.0.2-1" + }, { + name = "tree-sitter-latex", + url = "latex-lsp/tree-sitter-latex", + version = "0.0.3-1" + }, { + name = "tree-sitter-ledger", + url = "cbarrete/tree-sitter-ledger", + version = "0.0.2-1" + }, { + name = "tree-sitter-leo", + url = "r001/tree-sitter-leo", + version = "0.0.4-1" + }, { + name = "tree-sitter-linkerscript", + url = "tree-sitter-grammars/tree-sitter-linkerscript", + version = "0.0.2-1" + }, { + name = "tree-sitter-liquid", + url = "hankthetank27/tree-sitter-liquid", + version = "0.0.5-1" + }, { + name = "tree-sitter-liquidsoap", + url = "savonet/tree-sitter-liquidsoap", + version = "0.0.2-1" + }, { + name = "tree-sitter-llvm", + url = "benwilliamgraham/tree-sitter-llvm", + version = "0.0.2-1" + }, { + name = "tree-sitter-lua", + url = "tree-sitter-grammars/tree-sitter-lua", + version = "0.0.2-1" + }, { + name = "tree-sitter-luadoc", + url = "tree-sitter-grammars/tree-sitter-luadoc", + version = "0.0.2-1" + }, { + name = "tree-sitter-luap", + url = "tree-sitter-grammars/tree-sitter-luap", + version = "0.0.2-1" + }, { + name = "tree-sitter-luau", + url = "tree-sitter-grammars/tree-sitter-luau", + version = "0.0.2-1" + }, { + name = "tree-sitter-m68k", + url = "grahambates/tree-sitter-m68k", + version = "0.0.3-1" + }, { + name = "tree-sitter-make", + url = "alemuller/tree-sitter-make", + version = "0.0.2-1" + }, { + name = "tree-sitter-markdown", + url = "tree-sitter-grammars/tree-sitter-markdown", + version = "0.0.2-1" + }, { + name = "tree-sitter-markdown_inline", + url = "tree-sitter-grammars/tree-sitter-markdown", + version = "0.0.2-1" + }, { + name = "tree-sitter-matlab", + url = "acristoffers/tree-sitter-matlab", + version = "0.0.4-1" + }, { + name = "tree-sitter-menhir", + url = "Kerl13/tree-sitter-menhir", + version = "0.0.2-1" + }, { + name = "tree-sitter-mermaid", + url = "monaqa/tree-sitter-mermaid", + version = "0.0.2-1" + }, { + name = "tree-sitter-meson", + url = "tree-sitter-grammars/tree-sitter-meson", + version = "0.0.2-1" + }, { + name = "tree-sitter-mlir", + url = "artagnon/tree-sitter-mlir", + version = "0.0.3-1" + }, { + name = "tree-sitter-muttrc", + url = "neomutt/tree-sitter-muttrc", + version = "0.0.3-1" + }, { + name = "tree-sitter-nasm", + url = "naclsn/tree-sitter-nasm", + version = "0.0.2-1" + }, { + name = "tree-sitter-nginx", + url = "opa-oz/tree-sitter-nginx", + version = "0.0.2-1" + }, { + name = "tree-sitter-nickel", + url = "nickel-lang/tree-sitter-nickel", + version = "0.0.4-1" + }, { + name = "tree-sitter-nim", + url = "alaviss/tree-sitter-nim", + version = "0.0.2-1" + }, { + name = "tree-sitter-nim_format_string", + url = "aMOPel/tree-sitter-nim-format-string", + version = "0.0.2-1" + }, { + name = "tree-sitter-ninja", + url = "alemuller/tree-sitter-ninja", + version = "0.0.2-1" + }, { + name = "tree-sitter-nix", + url = "cstrahan/tree-sitter-nix", + version = "0.0.5-1" }, { name = "tree-sitter-norg", url = "nvim-neorg/tree-sitter-norg", - version = "0.2.4-1" + version = "0.2.5-1" }, { name = "tree-sitter-norg-meta", url = "nvim-neorg/tree-sitter-norg-meta", version = "0.1.0-1" + }, { + name = "tree-sitter-nqc", + url = "tree-sitter-grammars/tree-sitter-nqc", + version = "0.0.2-1" + }, { + name = "tree-sitter-objc", + url = "tree-sitter-grammars/tree-sitter-objc", + version = "0.0.2-1" + }, { + name = "tree-sitter-objdump", + url = "ColinKennedy/tree-sitter-objdump", + version = "0.0.2-1" + }, { + name = "tree-sitter-ocaml", + url = "tree-sitter/tree-sitter-ocaml", + version = "0.0.2-1" + }, { + name = "tree-sitter-ocaml_interface", + url = "tree-sitter/tree-sitter-ocaml", + version = "0.0.2-1" + }, { + name = "tree-sitter-ocamllex", + url = "atom-ocaml/tree-sitter-ocamllex", + version = "0.0.2-1" + }, { + name = "tree-sitter-odin", + url = "tree-sitter-grammars/tree-sitter-odin", + version = "0.0.2-1" + }, { + name = "tree-sitter-org", + url = "milisims/tree-sitter-org", + version = "0.0.1-1" }, { name = "tree-sitter-orgmode", url = "nvim-orgmode/tree-sitter-org", version = "1.3.2-1" + }, { + name = "tree-sitter-pascal", + url = "Isopod/tree-sitter-pascal", + version = "0.0.3-1" + }, { + name = "tree-sitter-passwd", + url = "ath3/tree-sitter-passwd", + version = "0.0.2-1" + }, { + name = "tree-sitter-pem", + url = "tree-sitter-grammars/tree-sitter-pem", + version = "0.0.2-1" + }, { + name = "tree-sitter-perl", + url = "tree-sitter-perl/tree-sitter-perl", + version = "0.0.4-1" + }, { + name = "tree-sitter-php", + url = "tree-sitter/tree-sitter-php", + version = "0.0.4-1" + }, { + name = "tree-sitter-php_only", + url = "tree-sitter/tree-sitter-php", + version = "0.0.4-1" + }, { + name = "tree-sitter-phpdoc", + url = "claytonrcarter/tree-sitter-phpdoc", + version = "0.0.2-1" + }, { + name = "tree-sitter-pioasm", + url = "leo60228/tree-sitter-pioasm", + version = "0.0.2-1" + }, { + name = "tree-sitter-po", + url = "tree-sitter-grammars/tree-sitter-po", + version = "0.0.2-1" + }, { + name = "tree-sitter-pod", + url = "tree-sitter-perl/tree-sitter-pod", + version = "0.0.3-1" + }, { + name = "tree-sitter-poe_filter", + url = "tree-sitter-grammars/tree-sitter-poe-filter", + version = "0.0.2-1" + }, { + name = "tree-sitter-pony", + url = "tree-sitter-grammars/tree-sitter-pony", + version = "0.0.2-1" + }, { + name = "tree-sitter-powershell", + url = "airbus-cert/tree-sitter-powershell", + version = "0.0.3-1" + }, { + name = "tree-sitter-printf", + url = "tree-sitter-grammars/tree-sitter-printf", + version = "0.0.2-1" + }, { + name = "tree-sitter-prisma", + url = "victorhqc/tree-sitter-prisma", + version = "0.0.2-1" + }, { + name = "tree-sitter-problog", + url = "foxyseta/tree-sitter-prolog", + version = "0.0.3-1" + }, { + name = "tree-sitter-prolog", + url = "foxyseta/tree-sitter-prolog", + version = "0.0.3-1" + }, { + name = "tree-sitter-promql", + url = "MichaHoffmann/tree-sitter-promql", + version = "0.0.2-1" + }, { + name = "tree-sitter-properties", + url = "tree-sitter-grammars/tree-sitter-properties", + version = "0.0.2-1" + }, { + name = "tree-sitter-proto", + url = "treywood/tree-sitter-proto", + version = "0.0.2-1" + }, { + name = "tree-sitter-prql", + url = "PRQL/tree-sitter-prql", + version = "0.0.2-1" + }, { + name = "tree-sitter-psv", + url = "tree-sitter-grammars/tree-sitter-csv", + version = "0.0.2-1" + }, { + name = "tree-sitter-pug", + url = "zealot128/tree-sitter-pug", + version = "0.0.2-1" + }, { + name = "tree-sitter-puppet", + url = "tree-sitter-grammars/tree-sitter-puppet", + version = "0.0.2-1" + }, { + name = "tree-sitter-purescript", + url = "postsolar/tree-sitter-purescript", + version = "0.0.2-1" + }, { + name = "tree-sitter-pymanifest", + url = "tree-sitter-grammars/tree-sitter-pymanifest", + version = "0.0.2-1" + }, { + name = "tree-sitter-python", + url = "tree-sitter/tree-sitter-python", + version = "0.0.3-1" + }, { + name = "tree-sitter-ql", + url = "tree-sitter/tree-sitter-ql", + version = "0.0.2-1" + }, { + name = "tree-sitter-qmldir", + url = "tree-sitter-grammars/tree-sitter-qmldir", + version = "0.0.2-1" + }, { + name = "tree-sitter-qmljs", + url = "yuja/tree-sitter-qmljs", + version = "0.0.3-1" + }, { + name = "tree-sitter-query", + url = "tree-sitter-grammars/tree-sitter-query", + version = "0.0.2-1" + }, { + name = "tree-sitter-r", + url = "r-lib/tree-sitter-r", + version = "0.0.2-1" + }, { + name = "tree-sitter-racket", + url = "6cdh/tree-sitter-racket", + version = "0.0.2-1" + }, { + name = "tree-sitter-ralph", + url = "alephium/tree-sitter-ralph", + version = "0.0.2-1" + }, { + name = "tree-sitter-rasi", + url = "Fymyte/tree-sitter-rasi", + version = "0.0.2-1" + }, { + name = "tree-sitter-rbs", + url = "joker1007/tree-sitter-rbs", + version = "0.0.2-1" + }, { + name = "tree-sitter-re2c", + url = "tree-sitter-grammars/tree-sitter-re2c", + version = "0.0.2-1" + }, { + name = "tree-sitter-readline", + url = "tree-sitter-grammars/tree-sitter-readline", + version = "0.0.2-1" + }, { + name = "tree-sitter-regex", + url = "tree-sitter/tree-sitter-regex", + version = "0.0.2-1" + }, { + name = "tree-sitter-rego", + url = "FallenAngel97/tree-sitter-rego", + version = "0.0.2-1" + }, { + name = "tree-sitter-requirements", + url = "tree-sitter-grammars/tree-sitter-requirements", + version = "0.0.2-1" + }, { + name = "tree-sitter-rescript", + url = "rescript-lang/tree-sitter-rescript", + version = "0.0.3-1" + }, { + name = "tree-sitter-rnoweb", + url = "bamonroe/tree-sitter-rnoweb", + version = "0.0.2-1" + }, { + name = "tree-sitter-robot", + url = "Hubro/tree-sitter-robot", + version = "0.0.2-1" + }, { + name = "tree-sitter-robots", + url = "opa-oz/tree-sitter-robots-txt", + version = "0.0.2-1" + }, { + name = "tree-sitter-roc", + url = "faldor20/tree-sitter-roc", + version = "0.0.3-1" + }, { + name = "tree-sitter-ron", + url = "tree-sitter-grammars/tree-sitter-ron", + version = "0.0.2-1" + }, { + name = "tree-sitter-rst", + url = "stsewd/tree-sitter-rst", + version = "0.0.2-1" + }, { + name = "tree-sitter-ruby", + url = "tree-sitter/tree-sitter-ruby", + version = "0.0.3-1" + }, { + name = "tree-sitter-rust", + url = "tree-sitter/tree-sitter-rust", + version = "0.0.3-1" + }, { + name = "tree-sitter-scala", + url = "tree-sitter/tree-sitter-scala", + version = "0.0.3-1" + }, { + name = "tree-sitter-scfg", + url = "rockorager/tree-sitter-scfg", + version = "0.0.2-1" + }, { + name = "tree-sitter-scheme", + url = "6cdh/tree-sitter-scheme", + version = "0.0.2-1" + }, { + name = "tree-sitter-scss", + url = "serenadeai/tree-sitter-scss", + version = "0.0.2-1" + }, { + name = "tree-sitter-sflog", + url = "aheber/tree-sitter-sfapex", + version = "0.0.3-1" + }, { + name = "tree-sitter-slang", + url = "tree-sitter-grammars/tree-sitter-slang", + version = "0.0.3-1" + }, { + name = "tree-sitter-slint", + url = "slint-ui/tree-sitter-slint", + version = "0.0.3-1" + }, { + name = "tree-sitter-smali", + url = "tree-sitter-grammars/tree-sitter-smali", + version = "0.0.2-1" + }, { + name = "tree-sitter-smithy", + url = "indoorvivants/tree-sitter-smithy", + version = "0.0.2-1" + }, { + name = "tree-sitter-snakemake", + url = "osthomas/tree-sitter-snakemake", + version = "0.0.3-1" + }, { + name = "tree-sitter-solidity", + url = "JoranHonig/tree-sitter-solidity", + version = "0.0.2-1" + }, { + name = "tree-sitter-soql", + url = "aheber/tree-sitter-sfapex", + version = "0.0.3-1" + }, { + name = "tree-sitter-sosl", + url = "aheber/tree-sitter-sfapex", + version = "0.0.3-1" + }, { + name = "tree-sitter-sourcepawn", + url = "nilshelmig/tree-sitter-sourcepawn", + version = "0.0.3-1" + }, { + name = "tree-sitter-sparql", + url = "GordianDziwis/tree-sitter-sparql", + version = "0.0.2-1" + }, { + name = "tree-sitter-sql", + url = "derekstride/tree-sitter-sql", + version = "0.0.3-1" + }, { + name = "tree-sitter-squirrel", + url = "tree-sitter-grammars/tree-sitter-squirrel", + version = "0.0.2-1" + }, { + name = "tree-sitter-ssh_config", + url = "tree-sitter-grammars/tree-sitter-ssh-config", + version = "0.0.2-1" + }, { + name = "tree-sitter-starlark", + url = "tree-sitter-grammars/tree-sitter-starlark", + version = "0.0.2-1" + }, { + name = "tree-sitter-strace", + url = "sigmaSd/tree-sitter-strace", + version = "0.0.2-1" + }, { + name = "tree-sitter-styled", + url = "mskelton/tree-sitter-styled", + version = "0.0.3-1" + }, { + name = "tree-sitter-supercollider", + url = "madskjeldgaard/tree-sitter-supercollider", + version = "0.0.2-1" + }, { + name = "tree-sitter-surface", + url = "connorlay/tree-sitter-surface", + version = "0.0.2-1" + }, { + name = "tree-sitter-svelte", + url = "tree-sitter-grammars/tree-sitter-svelte", + version = "0.0.3-1" + }, { + name = "tree-sitter-swift", + url = "alex-pinkus/tree-sitter-swift", + version = "0.0.3-1" + }, { + name = "tree-sitter-sxhkdrc", + url = "RaafatTurki/tree-sitter-sxhkdrc", + version = "0.0.2-1" + }, { + name = "tree-sitter-systemtap", + url = "ok-ryoko/tree-sitter-systemtap", + version = "0.0.3-1" + }, { + name = "tree-sitter-systemverilog", + url = "zhangwwpeng/tree-sitter-systemverilog", + version = "0.0.3-1" + }, { + name = "tree-sitter-t32", + url = "https://gitlab.com/xasc/tree-sitter-t32/-/archive/6182836f4128725f1e74ce986840d7317021a015.zip", + version = "0.0.2-1" + }, { + name = "tree-sitter-tablegen", + url = "tree-sitter-grammars/tree-sitter-tablegen", + version = "0.0.2-1" + }, { + name = "tree-sitter-tact", + url = "tact-lang/tree-sitter-tact", + version = "0.0.3-1" + }, { + name = "tree-sitter-tcl", + url = "tree-sitter-grammars/tree-sitter-tcl", + version = "0.0.2-1" + }, { + name = "tree-sitter-teal", + url = "euclidianAce/tree-sitter-teal", + version = "0.0.2-1" + }, { + name = "tree-sitter-templ", + url = "vrischmann/tree-sitter-templ", + version = "0.0.3-1" + }, { + name = "tree-sitter-terraform", + url = "MichaHoffmann/tree-sitter-hcl", + version = "0.0.2-1" + }, { + name = "tree-sitter-textproto", + url = "PorterAtGoogle/tree-sitter-textproto", + version = "0.0.2-1" + }, { + name = "tree-sitter-thrift", + url = "tree-sitter-grammars/tree-sitter-thrift", + version = "0.0.2-1" + }, { + name = "tree-sitter-tiger", + url = "ambroisie/tree-sitter-tiger", + version = "0.0.2-1" + }, { + name = "tree-sitter-tlaplus", + url = "tlaplus-community/tree-sitter-tlaplus", + version = "0.0.2-1" + }, { + name = "tree-sitter-tmux", + url = "Freed-Wu/tree-sitter-tmux", + version = "0.0.3-1" + }, { + name = "tree-sitter-todotxt", + url = "arnarg/tree-sitter-todotxt", + version = "0.0.2-1" + }, { + name = "tree-sitter-toml", + url = "tree-sitter-grammars/tree-sitter-toml", + version = "0.0.2-1" + }, { + name = "tree-sitter-tsv", + url = "tree-sitter-grammars/tree-sitter-csv", + version = "0.0.2-1" + }, { + name = "tree-sitter-tsx", + url = "tree-sitter/tree-sitter-typescript", + version = "0.0.3-1" + }, { + name = "tree-sitter-turtle", + url = "GordianDziwis/tree-sitter-turtle", + version = "0.0.2-1" + }, { + name = "tree-sitter-twig", + url = "gbprod/tree-sitter-twig", + version = "0.0.2-1" + }, { + name = "tree-sitter-typescript", + url = "tree-sitter/tree-sitter-typescript", + version = "0.0.3-1" + }, { + name = "tree-sitter-typespec", + url = "happenslol/tree-sitter-typespec", + version = "0.0.3-1" + }, { + name = "tree-sitter-typoscript", + url = "Teddytrombone/tree-sitter-typoscript", + version = "0.0.2-1" + }, { + name = "tree-sitter-typst", + url = "uben0/tree-sitter-typst", + version = "0.0.3-1" + }, { + name = "tree-sitter-udev", + url = "tree-sitter-grammars/tree-sitter-udev", + version = "0.0.2-1" + }, { + name = "tree-sitter-ungrammar", + url = "tree-sitter-grammars/tree-sitter-ungrammar", + version = "0.0.2-1" + }, { + name = "tree-sitter-unison", + url = "kylegoetz/tree-sitter-unison", + version = "0.0.2-1" + }, { + name = "tree-sitter-usd", + url = "ColinKennedy/tree-sitter-usd", + version = "0.0.2-1" + }, { + name = "tree-sitter-uxntal", + url = "tree-sitter-grammars/tree-sitter-uxntal", + version = "0.0.2-1" + }, { + name = "tree-sitter-v", + url = "vlang/v-analyzer", + version = "0.0.3-1" + }, { + name = "tree-sitter-vala", + url = "vala-lang/tree-sitter-vala", + version = "0.0.2-1" + }, { + name = "tree-sitter-vento", + url = "ventojs/tree-sitter-vento", + version = "0.0.2-1" + }, { + name = "tree-sitter-verilog", + url = "tree-sitter/tree-sitter-verilog", + version = "0.0.2-1" + }, { + name = "tree-sitter-vhdl", + url = "jpt13653903/tree-sitter-vhdl", + version = "0.0.2-1" + }, { + name = "tree-sitter-vhs", + url = "charmbracelet/tree-sitter-vhs", + version = "0.0.3-1" + }, { + name = "tree-sitter-vim", + url = "tree-sitter-grammars/tree-sitter-vim", + version = "0.0.3-1" + }, { + name = "tree-sitter-vimdoc", + url = "neovim/tree-sitter-vimdoc", + version = "0.0.2-1" + }, { + name = "tree-sitter-vrl", + url = "belltoy/tree-sitter-vrl", + version = "0.0.2-1" + }, { + name = "tree-sitter-vue", + url = "tree-sitter-grammars/tree-sitter-vue", + version = "0.0.2-1" + }, { + name = "tree-sitter-wgsl", + url = "szebniok/tree-sitter-wgsl", + version = "0.0.2-1" + }, { + name = "tree-sitter-wgsl_bevy", + url = "tree-sitter-grammars/tree-sitter-wgsl-bevy", + version = "0.0.2-1" + }, { + name = "tree-sitter-wing", + url = "winglang/tree-sitter-wing", + version = "0.0.2-1" + }, { + name = "tree-sitter-wit", + url = "liamwh/tree-sitter-wit", + version = "0.0.3-1" + }, { + name = "tree-sitter-xcompose", + url = "tree-sitter-grammars/tree-sitter-xcompose", + version = "0.0.2-1" + }, { + name = "tree-sitter-xml", + url = "tree-sitter-grammars/tree-sitter-xml", + version = "0.0.2-1" + }, { + name = "tree-sitter-yaml", + url = "tree-sitter-grammars/tree-sitter-yaml", + version = "0.0.2-1" + }, { + name = "tree-sitter-yang", + url = "Hubro/tree-sitter-yang", + version = "0.0.2-1" + }, { + name = "tree-sitter-yuck", + url = "tree-sitter-grammars/tree-sitter-yuck", + version = "0.0.2-1" + }, { + name = "tree-sitter-zathurarc", + url = "Freed-Wu/tree-sitter-zathurarc", + version = "0.0.3-1" + }, { + name = "tree-sitter-zig", + url = "tree-sitter-grammars/tree-sitter-zig", + version = "0.0.3-1" }, { name = "trouble.nvim", url = "folke/trouble.nvim", - version = "3.4.3-1" + version = "3.6.0-1" + }, { + name = "ts-comments.nvim", + url = "folke/ts-comments.nvim", + version = "1.5.0-1" }, { name = "tsc.nvim", url = "dmmulroy/tsc.nvim", - version = "2.3.0-1" + version = "2.4.1-1" }, { name = "twilight.nvim", url = "folke/twilight.nvim", @@ -730,15 +2066,19 @@ return }, { name = "vgit.nvim", url = "tanvirtin/vgit.nvim", - version = "0.2.2-1" + version = "0.2.3-1" }, { name = "which-key.nvim", url = "folke/which-key.nvim", - version = "2.1.0-1" + version = "3.13.2-1" }, { name = "windline.nvim", url = "windwp/windline.nvim", version = "1.1.0-1" + }, { + name = "wrapping-paper.nvim", + url = "benlubas/wrapping-paper.nvim", + version = "1.0.0-1" }, { name = "yanky.nvim", url = "gbprod/yanky.nvim", @@ -746,11 +2086,11 @@ return }, { name = "yazi.nvim", url = "mikavilpas/yazi.nvim", - version = "master-1" + version = "6.0.4-1" }, { name = "zen-mode.nvim", url = "folke/zen-mode.nvim", - version = "1.3.0-1" + version = "1.4.0-1" }, { name = "zk-nvim", url = "zk-org/zk-nvim", From aca30f63619a7492ecdea8833a065cf83c80f764 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Mon, 16 Sep 2024 10:13:11 +0200 Subject: [PATCH 299/342] fix(bootstrap): single forward slash. Fixes #1747 --- bootstrap.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bootstrap.lua b/bootstrap.lua index 16d9f1d..88c1a44 100644 --- a/bootstrap.lua +++ b/bootstrap.lua @@ -1,4 +1,4 @@ --- Lay Bootstrapper +-- Lazy Bootstrapper -- Usage: -- ```lua -- load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() @@ -7,7 +7,7 @@ local M = {} function M.setup() if vim.env.LAZY_STDPATH then - local root = vim.fn.fnamemodify(vim.env.LAZY_STDPATH, ":p") + 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 From 460e1cd8f24e364d54543a4b0e83f6f4ec1f65fb Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 16 Sep 2024 08:17:41 +0000 Subject: [PATCH 300/342] chore(build): auto-generate rockspec mappings --- lua/lazy/community/_generated.lua | 710 ++++++++++++++++-------------- 1 file changed, 375 insertions(+), 335 deletions(-) diff --git a/lua/lazy/community/_generated.lua b/lua/lazy/community/_generated.lua index b91e678..6b1d4fb 100644 --- a/lua/lazy/community/_generated.lua +++ b/lua/lazy/community/_generated.lua @@ -14,11 +14,11 @@ return }, { name = "aerial.nvim", url = "stevearc/aerial.nvim", - version = "2.2.0-1" + version = "2.3.0-1" }, { name = "ai.nvim", url = "S1M0N38/ai.nvim", - version = "0.1.0-1" + version = "1.2.0-1" }, { name = "astral.nvim", url = "rootiest/astral.nvim", @@ -31,6 +31,14 @@ return name = "banana.nvim", url = "CWood-sdf/banana.nvim", version = "0.1.0-1" + }, { + name = "bars-n-lines.nvim", + url = "OXY2DEV/bars-N-lines.nvim", + version = "1.0.0-1" + }, { + name = "base.nvim", + url = "S1M0N38/base.nvim", + version = "1.0.2-1" }, { name = "better-escape.nvim", url = "max397574/better-escape.nvim", @@ -90,11 +98,15 @@ return }, { name = "conform.nvim", url = "stevearc/conform.nvim", - version = "8.0.0-1" + version = "8.1.0-1" }, { name = "cybu.nvim", url = "ghillb/cybu.nvim", version = "1.0-1" + }, { + name = "dante.nvim", + url = "S1M0N38/dante.nvim", + version = "1.0.1-1" }, { name = "daylight.nvim", url = "NTBBloodbath/daylight.nvim", @@ -106,7 +118,7 @@ return }, { name = "decipher.nvim", url = "MisanthropicBit/decipher.nvim", - version = "1.0.1-1" + version = "1.0.2-1" }, { name = "delog.nvim", url = "ej-shafran/delog.nvim", @@ -214,7 +226,7 @@ return }, { name = "git.nvim", url = "Kibadda/git.nvim", - version = "3.3.1-1" + version = "3.3.2-1" }, { name = "github-nvim-theme", url = "projekt0n/github-nvim-theme", @@ -223,6 +235,10 @@ return name = "gitlinker.nvim", url = "linrongbin16/gitlinker.nvim", version = "4.13.1-1" + }, { + name = "gitsigns.nvim", + url = "lewis6991/gitsigns.nvim", + version = "0.9.0-1" }, { name = "glow.nvim", url = "ellisonleao/glow.nvim", @@ -258,7 +274,7 @@ return }, { name = "headlines.nvim", url = "lukas-reineke/headlines.nvim", - version = "4.0.1-1" + version = "4.0.2-1" }, { name = "heirline.nvim", url = "rebelot/heirline.nvim", @@ -278,11 +294,11 @@ return }, { name = "hotpot.nvim", url = "rktjmp/hotpot.nvim", - version = "0.14.3-1" + version = "0.14.5-1" }, { name = "hurl.nvim", url = "jellydn/hurl.nvim", - version = "1.7.0-1" + version = "1.7.1-1" }, { name = "hydra.nvim", url = "nvimtools/hydra.nvim", @@ -303,6 +319,10 @@ return name = "kai.nvim", url = "Kamilcuk/kai.nvim", version = "0.0.6-1" + }, { + name = "kanban.nvim", + url = "Kibadda/kanban.nvim", + version = "1.3.0-1" }, { name = "lazy.nvim", url = "folke/lazy.nvim", @@ -326,11 +346,7 @@ return }, { name = "live-command.nvim", url = "smjonas/live-command.nvim", - version = "1.2.1-1" - }, { - name = "logger.nvim", - url = "jnpngshiii/logger.nvim", - version = "0.4.6-1" + version = "2.0.0-1" }, { name = "logging.nvim", url = "NTBBloodbath/logging.nvim", @@ -386,11 +402,11 @@ return }, { name = "markview.nvim", url = "OXY2DEV/markview.nvim", - version = "22.0.1-1" + version = "23.1.0-1" }, { name = "mason-lspconfig.nvim", url = "williamboman/mason-lspconfig.nvim", - version = "1.30.0-1" + version = "1.31.0-1" }, { name = "mason-nvim-dap.nvim", url = "jay-babu/mason-nvim-dap.nvim", @@ -399,10 +415,6 @@ return name = "mason.nvim", url = "williamboman/mason.nvim", version = "1.10.0-1" - }, { - name = "mindmap.nvim", - url = "jnpngshiii/mindmap.nvim", - version = "0.7.1-1" }, { name = "mini.nvim", url = "echasnovski/mini.nvim", @@ -454,11 +466,11 @@ return }, { name = "neorg-conceal-wrap", url = "benlubas/neorg-conceal-wrap", - version = "1.0.0-1" + version = "1.0.1-1" }, { name = "neorg-interim-ls", url = "benlubas/neorg-interim-ls", - version = "1.2.0-1" + version = "1.2.1-1" }, { name = "neorg-se", url = "benlubas/neorg-se", @@ -482,11 +494,11 @@ return }, { name = "neotest-busted", url = "MisanthropicBit/neotest-busted", - version = "0.1.0-1" + version = "0.2.0-1" }, { name = "neotest-golang", url = "fredrikaverpil/neotest-golang", - version = "1.0.0-1" + version = "1.1.1-1" }, { name = "neotest-haskell", url = "mrcjkb/neotest-haskell", @@ -494,7 +506,7 @@ return }, { name = "neotest-java", url = "rcasia/neotest-java", - version = "0.14.1-1" + version = "0.15.6-1" }, { name = "netman.nvim", url = "miversen33/netman.nvim", @@ -506,7 +518,7 @@ return }, { name = "no-neck-pain.nvim", url = "shortcuts/no-neck-pain.nvim", - version = "1.16.0-1" + version = "2.0.1-1" }, { name = "noice.nvim", url = "folke/noice.nvim", @@ -586,7 +598,7 @@ return }, { name = "nvim-lspconfig", url = "neovim/nvim-lspconfig", - version = "0.1.8-1" + version = "1.0.0-1" }, { name = "nvim-metals", url = "scalameta/nvim-metals", @@ -618,7 +630,7 @@ return }, { name = "nvim-smuggler", url = "Klafyvel/nvim-smuggler", - version = "0.3.0-1" + version = "0.4.2-1" }, { name = "nvim-snippets", url = "garymjr/nvim-snippets", @@ -658,7 +670,7 @@ return }, { name = "oil.nvim", url = "stevearc/oil.nvim", - version = "2.12.1-1" + version = "2.12.2-1" }, { name = "onedarkpro.nvim", url = "olimorris/onedarkpro.nvim", @@ -690,7 +702,7 @@ return }, { name = "papis.nvim", url = "jghauser/papis.nvim", - version = "0.6.1-1" + version = "0.7.0-1" }, { name = "paq-nvim", url = "savq/paq-nvim", @@ -702,7 +714,7 @@ return }, { name = "persisted.nvim", url = "olimorris/persisted.nvim", - version = "1.1.0-1" + version = "2.0.0-1" }, { name = "persistence.nvim", url = "folke/persistence.nvim", @@ -715,6 +727,10 @@ return name = "pretty-fold.nvim", url = "anuvyklack/pretty-fold.nvim", version = "3.0-1" + }, { + name = "processing.nvim", + url = "sophieforrest/processing.nvim", + version = "1.1.0-1" }, { name = "quarry.nvim", url = "rudionrails/quarry.nvim", @@ -738,23 +754,23 @@ return }, { name = "render-markdown.nvim", url = "MeanderingProgrammer/render-markdown.nvim", - version = "6.3.0-1" + version = "7.0.0-1" }, { name = "rest.nvim", url = "rest-nvim/rest.nvim", - version = "3.2.1-1" + version = "3.7.0-1" }, { name = "rocks-config.nvim", url = "nvim-neorocks/rocks-config.nvim", - version = "2.2.0-1" + version = "2.3.1-1" }, { name = "rocks-dev.nvim", url = "nvim-neorocks/rocks-dev.nvim", - version = "1.5.0-1" + version = "1.7.0-1" }, { name = "rocks-git.nvim", url = "nvim-neorocks/rocks-git.nvim", - version = "2.0.1-1" + version = "2.2.0-1" }, { name = "rocks-lazy.nvim", url = "nvim-neorocks/rocks-lazy.nvim", @@ -762,19 +778,23 @@ return }, { name = "rocks-treesitter.nvim", url = "nvim-neorocks/rocks-treesitter.nvim", - version = "1.1.1-1" + version = "1.1.2-1" }, { name = "rocks.nvim", url = "nvim-neorocks/rocks.nvim", - version = "2.38.2-1" + version = "2.40.0-1" }, { name = "rtp.nvim", url = "nvim-neorocks/rtp.nvim", version = "1.2.0-1" + }, { + name = "runt.nvim", + url = "Julian/runt.nvim", + version = "2024.9.2-1" }, { name = "rustaceanvim", url = "mrcjkb/rustaceanvim", - version = "5.2.2-1" + version = "5.4.2-1" }, { name = "schemastore.nvim", url = "b0o/SchemaStore.nvim", @@ -794,7 +814,7 @@ return }, { name = "sf.nvim", url = "xixiaofinland/sf.nvim", - version = "1.5.0-1" + version = "1.6.0-1" }, { name = "sg.nvim", url = "sourcegraph/sg.nvim", @@ -807,6 +827,10 @@ return name = "squirrel.nvim", url = "xiaoshihou514/squirrel.nvim", version = "1.0.0-1" + }, { + name = "starter.nvim", + url = "Kibadda/starter.nvim", + version = "1.2.0-1" }, { name = "storm-mode.nvim", url = "HoppenR/storm-mode.nvim", @@ -858,647 +882,663 @@ return }, { name = "tree-sitter-ada", url = "briot/tree-sitter-ada", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-agda", url = "tree-sitter/tree-sitter-agda", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-angular", url = "dlvandenberg/tree-sitter-angular", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-apex", url = "aheber/tree-sitter-sfapex", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-arduino", url = "tree-sitter-grammars/tree-sitter-arduino", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-asm", url = "RubixDev/tree-sitter-asm", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-astro", url = "virchau13/tree-sitter-astro", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-authzed", url = "mleonidas/tree-sitter-authzed", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-awk", url = "Beaglefoot/tree-sitter-awk", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-bash", url = "tree-sitter/tree-sitter-bash", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-bass", url = "vito/tree-sitter-bass", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-beancount", url = "polarmutex/tree-sitter-beancount", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-bibtex", url = "latex-lsp/tree-sitter-bibtex", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-bicep", url = "tree-sitter-grammars/tree-sitter-bicep", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-bitbake", url = "tree-sitter-grammars/tree-sitter-bitbake", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-blueprint", url = "https://gitlab.com/gabmus/tree-sitter-blueprint/-/archive/60ba73739c6083c693d86a1a7cf039c07eb4ed59.zip", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-bp", url = "ambroisie/tree-sitter-bp", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-c", url = "tree-sitter/tree-sitter-c", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-c_sharp", url = "tree-sitter/tree-sitter-c-sharp", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-cairo", url = "tree-sitter-grammars/tree-sitter-cairo", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-capnp", url = "tree-sitter-grammars/tree-sitter-capnp", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-chatito", url = "tree-sitter-grammars/tree-sitter-chatito", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-clojure", url = "sogaiu/tree-sitter-clojure", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-cmake", url = "uyha/tree-sitter-cmake", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-comment", url = "stsewd/tree-sitter-comment", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-commonlisp", url = "tree-sitter-grammars/tree-sitter-commonlisp", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-cooklang", url = "addcninblue/tree-sitter-cooklang", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-corn", url = "jakestanger/tree-sitter-corn", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-cpon", url = "tree-sitter-grammars/tree-sitter-cpon", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-cpp", url = "tree-sitter/tree-sitter-cpp", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-css", url = "tree-sitter/tree-sitter-css", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-csv", url = "tree-sitter-grammars/tree-sitter-csv", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-cuda", url = "tree-sitter-grammars/tree-sitter-cuda", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-cue", url = "eonpatapon/tree-sitter-cue", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-d", url = "gdamore/tree-sitter-d", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-dart", url = "UserNobody14/tree-sitter-dart", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-devicetree", url = "joelspadin/tree-sitter-devicetree", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-dhall", url = "jbellerb/tree-sitter-dhall", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-diff", url = "the-mikedavis/tree-sitter-diff", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-disassembly", url = "ColinKennedy/tree-sitter-disassembly", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-djot", url = "treeman/tree-sitter-djot", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-dockerfile", url = "camdencheek/tree-sitter-dockerfile", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-dot", url = "rydesun/tree-sitter-dot", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-doxygen", url = "tree-sitter-grammars/tree-sitter-doxygen", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-dtd", url = "tree-sitter-grammars/tree-sitter-xml", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-earthfile", url = "glehmann/tree-sitter-earthfile", - version = "0.0.2-1" + version = "0.0.12-1" }, { name = "tree-sitter-ebnf", url = "RubixDev/ebnf", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-ecma", url = "nvim-neorocks/luarocks-stub", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-editorconfig", url = "ValdezFOmar/tree-sitter-editorconfig", - version = "0.0.4-1" + version = "0.0.10-1" }, { name = "tree-sitter-eds", url = "uyha/tree-sitter-eds", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-eex", url = "connorlay/tree-sitter-eex", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-elixir", url = "elixir-lang/tree-sitter-elixir", - version = "0.0.2-1" + version = "0.0.11-1" }, { name = "tree-sitter-elm", url = "elm-tooling/tree-sitter-elm", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-elsa", url = "glapa-grossklag/tree-sitter-elsa", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-elvish", url = "elves/tree-sitter-elvish", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-embedded_template", url = "tree-sitter/tree-sitter-embedded-template", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-erlang", url = "WhatsApp/tree-sitter-erlang", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-facility", url = "FacilityApi/tree-sitter-facility", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-faust", url = "khiner/tree-sitter-faust", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-fennel", url = "alexmozaidze/tree-sitter-fennel", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-fidl", url = "google/tree-sitter-fidl", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-firrtl", url = "tree-sitter-grammars/tree-sitter-firrtl", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-fish", url = "ram02z/tree-sitter-fish", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-foam", url = "FoamScience/tree-sitter-foam", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-forth", url = "AlexanderBrevig/tree-sitter-forth", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-fortran", url = "stadelmanma/tree-sitter-fortran", - version = "0.0.4-1" + version = "0.0.10-1" }, { name = "tree-sitter-fsh", url = "mgramigna/tree-sitter-fsh", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-func", url = "tree-sitter-grammars/tree-sitter-func", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-fusion", url = "https://gitlab.com/jirgn/tree-sitter-fusion/-/archive/19db2f47ba4c3a0f6238d4ae0e2abfca16e61dd6.zip", - version = "0.0.2-1" + version = "0.0.10-1" + }, { + name = "tree-sitter-gap", + url = "gap-system/tree-sitter-gap", + version = "0.0.10-1" + }, { + name = "tree-sitter-gaptst", + url = "gap-system/tree-sitter-gaptst", + version = "0.0.10-1" }, { name = "tree-sitter-gdscript", url = "PrestonKnopp/tree-sitter-gdscript", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-gdshader", url = "GodOfAvacyn/tree-sitter-gdshader", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-git_config", url = "the-mikedavis/tree-sitter-git-config", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-git_rebase", url = "the-mikedavis/tree-sitter-git-rebase", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-gitattributes", url = "tree-sitter-grammars/tree-sitter-gitattributes", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-gitcommit", url = "gbprod/tree-sitter-gitcommit", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-gitignore", url = "shunsambongi/tree-sitter-gitignore", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-gleam", url = "gleam-lang/tree-sitter-gleam", - version = "0.0.3-1" + version = "0.0.11-1" }, { name = "tree-sitter-glimmer", - url = "alexlafroscia/tree-sitter-glimmer", - version = "0.0.3-1" + url = "ember-tooling/tree-sitter-glimmer", + version = "0.0.10-1" + }, { + name = "tree-sitter-glimmer_javascript", + url = "NullVoxPopuli/tree-sitter-glimmer-javascript", + version = "0.0.10-1" + }, { + name = "tree-sitter-glimmer_typescript", + url = "NullVoxPopuli/tree-sitter-glimmer-typescript", + version = "0.0.10-1" }, { name = "tree-sitter-glsl", url = "tree-sitter-grammars/tree-sitter-glsl", - version = "0.0.3-1" + version = "0.0.11-1" }, { name = "tree-sitter-gn", url = "tree-sitter-grammars/tree-sitter-gn", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-gnuplot", url = "dpezto/tree-sitter-gnuplot", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-go", url = "tree-sitter/tree-sitter-go", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-goctl", url = "chaozwn/tree-sitter-goctl", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-godot_resource", url = "PrestonKnopp/tree-sitter-godot-resource", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-gomod", url = "camdencheek/tree-sitter-go-mod", - version = "0.0.3-1" + version = "0.0.11-1" }, { name = "tree-sitter-gosum", url = "tree-sitter-grammars/tree-sitter-go-sum", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-gotmpl", url = "ngalaiko/tree-sitter-go-template", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-gowork", url = "omertuc/tree-sitter-go-work", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-gpg", url = "tree-sitter-grammars/tree-sitter-gpg-config", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-graphql", url = "bkegley/tree-sitter-graphql", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-groovy", url = "murtaza64/tree-sitter-groovy", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-gstlaunch", url = "tree-sitter-grammars/tree-sitter-gstlaunch", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-hack", url = "slackhq/tree-sitter-hack", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-hare", url = "tree-sitter-grammars/tree-sitter-hare", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-haskell", url = "tree-sitter/tree-sitter-haskell", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-haskell_persistent", url = "MercuryTechnologies/tree-sitter-haskell-persistent", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-hcl", url = "tree-sitter-grammars/tree-sitter-hcl", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-heex", url = "connorlay/tree-sitter-heex", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-helm", url = "ngalaiko/tree-sitter-go-template", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-hjson", url = "winston0410/tree-sitter-hjson", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-hlsl", url = "tree-sitter-grammars/tree-sitter-hlsl", - version = "0.0.3-1" + version = "0.0.11-1" }, { name = "tree-sitter-hlsplaylist", url = "Freed-Wu/tree-sitter-hlsplaylist", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-hocon", url = "antosha417/tree-sitter-hocon", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-hoon", url = "urbit-pilled/tree-sitter-hoon", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-html", url = "tree-sitter/tree-sitter-html", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-html_tags", url = "nvim-neorocks/luarocks-stub", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-htmldjango", url = "interdependence/tree-sitter-htmldjango", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-http", url = "rest-nvim/tree-sitter-http", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-hurl", url = "pfeiferj/tree-sitter-hurl", - version = "0.0.3-1" + version = "0.0.11-1" }, { name = "tree-sitter-hyprlang", url = "tree-sitter-grammars/tree-sitter-hyprlang", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-idl", url = "cathaysia/tree-sitter-idl", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-ini", url = "justinmk/tree-sitter-ini", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-inko", url = "inko-lang/tree-sitter-inko", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-ispc", url = "tree-sitter-grammars/tree-sitter-ispc", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-janet_simple", url = "sogaiu/tree-sitter-janet-simple", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-java", url = "tree-sitter/tree-sitter-java", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-javascript", url = "tree-sitter/tree-sitter-javascript", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-jq", url = "flurie/tree-sitter-jq", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-jsdoc", url = "tree-sitter/tree-sitter-jsdoc", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-json", url = "tree-sitter/tree-sitter-json", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-json5", url = "Joakker/tree-sitter-json5", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-jsonc", url = "https://gitlab.com/WhyNotHugo/tree-sitter-jsonc/-/archive/02b01653c8a1c198ae7287d566efa86a135b30d5.zip", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-jsonnet", url = "sourcegraph/tree-sitter-jsonnet", - version = "0.0.4-1" + version = "0.0.10-1" }, { name = "tree-sitter-jsx", url = "nvim-neorocks/luarocks-stub", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-julia", url = "tree-sitter/tree-sitter-julia", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-just", url = "IndianBoy42/tree-sitter-just", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-kconfig", url = "tree-sitter-grammars/tree-sitter-kconfig", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-kdl", url = "tree-sitter-grammars/tree-sitter-kdl", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-kotlin", url = "fwcd/tree-sitter-kotlin", - version = "0.0.4-1" + version = "0.0.10-1" }, { name = "tree-sitter-koto", url = "koto-lang/tree-sitter-koto", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-kusto", url = "Willem-J-an/tree-sitter-kusto", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-lalrpop", url = "traxys/tree-sitter-lalrpop", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-latex", url = "latex-lsp/tree-sitter-latex", - version = "0.0.3-1" + version = "0.0.11-1" }, { name = "tree-sitter-ledger", url = "cbarrete/tree-sitter-ledger", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-leo", url = "r001/tree-sitter-leo", - version = "0.0.4-1" + version = "0.0.10-1" }, { name = "tree-sitter-linkerscript", url = "tree-sitter-grammars/tree-sitter-linkerscript", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-liquid", url = "hankthetank27/tree-sitter-liquid", - version = "0.0.5-1" + version = "0.0.10-1" }, { name = "tree-sitter-liquidsoap", url = "savonet/tree-sitter-liquidsoap", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-llvm", url = "benwilliamgraham/tree-sitter-llvm", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-lua", url = "tree-sitter-grammars/tree-sitter-lua", - version = "0.0.2-1" + version = "0.0.11-1" }, { name = "tree-sitter-luadoc", url = "tree-sitter-grammars/tree-sitter-luadoc", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-luap", url = "tree-sitter-grammars/tree-sitter-luap", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-luau", url = "tree-sitter-grammars/tree-sitter-luau", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-m68k", url = "grahambates/tree-sitter-m68k", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-make", url = "alemuller/tree-sitter-make", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-markdown", url = "tree-sitter-grammars/tree-sitter-markdown", - version = "0.0.2-1" + version = "0.0.13-1" }, { name = "tree-sitter-markdown_inline", url = "tree-sitter-grammars/tree-sitter-markdown", - version = "0.0.2-1" + version = "0.0.13-1" }, { name = "tree-sitter-matlab", url = "acristoffers/tree-sitter-matlab", - version = "0.0.4-1" + version = "0.0.10-1" }, { name = "tree-sitter-menhir", url = "Kerl13/tree-sitter-menhir", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-mermaid", url = "monaqa/tree-sitter-mermaid", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-meson", url = "tree-sitter-grammars/tree-sitter-meson", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-mlir", url = "artagnon/tree-sitter-mlir", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-muttrc", url = "neomutt/tree-sitter-muttrc", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-nasm", url = "naclsn/tree-sitter-nasm", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-nginx", url = "opa-oz/tree-sitter-nginx", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-nickel", url = "nickel-lang/tree-sitter-nickel", - version = "0.0.4-1" + version = "0.0.10-1" }, { name = "tree-sitter-nim", url = "alaviss/tree-sitter-nim", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-nim_format_string", url = "aMOPel/tree-sitter-nim-format-string", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-ninja", url = "alemuller/tree-sitter-ninja", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-nix", url = "cstrahan/tree-sitter-nix", - version = "0.0.5-1" + version = "0.0.10-1" }, { name = "tree-sitter-norg", url = "nvim-neorg/tree-sitter-norg", - version = "0.2.5-1" + version = "0.2.6-1" }, { name = "tree-sitter-norg-meta", url = "nvim-neorg/tree-sitter-norg-meta", @@ -1506,31 +1546,31 @@ return }, { name = "tree-sitter-nqc", url = "tree-sitter-grammars/tree-sitter-nqc", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-objc", url = "tree-sitter-grammars/tree-sitter-objc", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-objdump", url = "ColinKennedy/tree-sitter-objdump", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-ocaml", url = "tree-sitter/tree-sitter-ocaml", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-ocaml_interface", url = "tree-sitter/tree-sitter-ocaml", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-ocamllex", url = "atom-ocaml/tree-sitter-ocamllex", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-odin", url = "tree-sitter-grammars/tree-sitter-odin", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-org", url = "milisims/tree-sitter-org", @@ -1542,507 +1582,507 @@ return }, { name = "tree-sitter-pascal", url = "Isopod/tree-sitter-pascal", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-passwd", url = "ath3/tree-sitter-passwd", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-pem", url = "tree-sitter-grammars/tree-sitter-pem", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-perl", url = "tree-sitter-perl/tree-sitter-perl", - version = "0.0.4-1" + version = "0.0.12-1" }, { name = "tree-sitter-php", url = "tree-sitter/tree-sitter-php", - version = "0.0.4-1" + version = "0.0.10-1" }, { name = "tree-sitter-php_only", url = "tree-sitter/tree-sitter-php", - version = "0.0.4-1" + version = "0.0.10-1" }, { name = "tree-sitter-phpdoc", url = "claytonrcarter/tree-sitter-phpdoc", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-pioasm", url = "leo60228/tree-sitter-pioasm", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-po", url = "tree-sitter-grammars/tree-sitter-po", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-pod", url = "tree-sitter-perl/tree-sitter-pod", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-poe_filter", url = "tree-sitter-grammars/tree-sitter-poe-filter", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-pony", url = "tree-sitter-grammars/tree-sitter-pony", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-powershell", url = "airbus-cert/tree-sitter-powershell", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-printf", url = "tree-sitter-grammars/tree-sitter-printf", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-prisma", url = "victorhqc/tree-sitter-prisma", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-problog", url = "foxyseta/tree-sitter-prolog", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-prolog", url = "foxyseta/tree-sitter-prolog", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-promql", url = "MichaHoffmann/tree-sitter-promql", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-properties", url = "tree-sitter-grammars/tree-sitter-properties", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-proto", url = "treywood/tree-sitter-proto", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-prql", url = "PRQL/tree-sitter-prql", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-psv", url = "tree-sitter-grammars/tree-sitter-csv", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-pug", url = "zealot128/tree-sitter-pug", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-puppet", url = "tree-sitter-grammars/tree-sitter-puppet", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-purescript", url = "postsolar/tree-sitter-purescript", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-pymanifest", url = "tree-sitter-grammars/tree-sitter-pymanifest", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-python", url = "tree-sitter/tree-sitter-python", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-ql", url = "tree-sitter/tree-sitter-ql", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-qmldir", url = "tree-sitter-grammars/tree-sitter-qmldir", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-qmljs", url = "yuja/tree-sitter-qmljs", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-query", url = "tree-sitter-grammars/tree-sitter-query", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-r", url = "r-lib/tree-sitter-r", - version = "0.0.2-1" + version = "0.0.11-1" }, { name = "tree-sitter-racket", url = "6cdh/tree-sitter-racket", - version = "0.0.2-1" + version = "0.0.12-1" }, { name = "tree-sitter-ralph", url = "alephium/tree-sitter-ralph", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-rasi", url = "Fymyte/tree-sitter-rasi", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-rbs", url = "joker1007/tree-sitter-rbs", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-re2c", url = "tree-sitter-grammars/tree-sitter-re2c", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-readline", url = "tree-sitter-grammars/tree-sitter-readline", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-regex", url = "tree-sitter/tree-sitter-regex", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-rego", url = "FallenAngel97/tree-sitter-rego", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-requirements", url = "tree-sitter-grammars/tree-sitter-requirements", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-rescript", url = "rescript-lang/tree-sitter-rescript", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-rnoweb", url = "bamonroe/tree-sitter-rnoweb", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-robot", url = "Hubro/tree-sitter-robot", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-robots", url = "opa-oz/tree-sitter-robots-txt", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-roc", url = "faldor20/tree-sitter-roc", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-ron", url = "tree-sitter-grammars/tree-sitter-ron", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-rst", url = "stsewd/tree-sitter-rst", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-ruby", url = "tree-sitter/tree-sitter-ruby", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-rust", url = "tree-sitter/tree-sitter-rust", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-scala", url = "tree-sitter/tree-sitter-scala", - version = "0.0.3-1" + version = "0.0.13-1" }, { name = "tree-sitter-scfg", url = "rockorager/tree-sitter-scfg", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-scheme", url = "6cdh/tree-sitter-scheme", - version = "0.0.2-1" + version = "0.0.12-1" }, { name = "tree-sitter-scss", url = "serenadeai/tree-sitter-scss", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-sflog", url = "aheber/tree-sitter-sfapex", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-slang", url = "tree-sitter-grammars/tree-sitter-slang", - version = "0.0.3-1" + version = "0.0.11-1" }, { name = "tree-sitter-slint", url = "slint-ui/tree-sitter-slint", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-smali", url = "tree-sitter-grammars/tree-sitter-smali", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-smithy", url = "indoorvivants/tree-sitter-smithy", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-snakemake", url = "osthomas/tree-sitter-snakemake", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-solidity", url = "JoranHonig/tree-sitter-solidity", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-soql", url = "aheber/tree-sitter-sfapex", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-sosl", url = "aheber/tree-sitter-sfapex", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-sourcepawn", url = "nilshelmig/tree-sitter-sourcepawn", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-sparql", url = "GordianDziwis/tree-sitter-sparql", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-sql", url = "derekstride/tree-sitter-sql", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-squirrel", url = "tree-sitter-grammars/tree-sitter-squirrel", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-ssh_config", url = "tree-sitter-grammars/tree-sitter-ssh-config", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-starlark", url = "tree-sitter-grammars/tree-sitter-starlark", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-strace", url = "sigmaSd/tree-sitter-strace", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-styled", url = "mskelton/tree-sitter-styled", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-supercollider", url = "madskjeldgaard/tree-sitter-supercollider", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-surface", url = "connorlay/tree-sitter-surface", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-svelte", url = "tree-sitter-grammars/tree-sitter-svelte", - version = "0.0.3-1" + version = "0.0.12-1" }, { name = "tree-sitter-swift", url = "alex-pinkus/tree-sitter-swift", - version = "0.0.3-1" + version = "0.0.11-1" }, { name = "tree-sitter-sxhkdrc", url = "RaafatTurki/tree-sitter-sxhkdrc", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-systemtap", url = "ok-ryoko/tree-sitter-systemtap", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-systemverilog", url = "zhangwwpeng/tree-sitter-systemverilog", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-t32", url = "https://gitlab.com/xasc/tree-sitter-t32/-/archive/6182836f4128725f1e74ce986840d7317021a015.zip", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-tablegen", url = "tree-sitter-grammars/tree-sitter-tablegen", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-tact", url = "tact-lang/tree-sitter-tact", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-tcl", url = "tree-sitter-grammars/tree-sitter-tcl", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-teal", url = "euclidianAce/tree-sitter-teal", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-templ", url = "vrischmann/tree-sitter-templ", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-terraform", url = "MichaHoffmann/tree-sitter-hcl", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-textproto", url = "PorterAtGoogle/tree-sitter-textproto", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-thrift", url = "tree-sitter-grammars/tree-sitter-thrift", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-tiger", url = "ambroisie/tree-sitter-tiger", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-tlaplus", url = "tlaplus-community/tree-sitter-tlaplus", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-tmux", url = "Freed-Wu/tree-sitter-tmux", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-todotxt", url = "arnarg/tree-sitter-todotxt", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-toml", url = "tree-sitter-grammars/tree-sitter-toml", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-tsv", url = "tree-sitter-grammars/tree-sitter-csv", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-tsx", url = "tree-sitter/tree-sitter-typescript", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-turtle", url = "GordianDziwis/tree-sitter-turtle", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-twig", url = "gbprod/tree-sitter-twig", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-typescript", url = "tree-sitter/tree-sitter-typescript", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-typespec", url = "happenslol/tree-sitter-typespec", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-typoscript", url = "Teddytrombone/tree-sitter-typoscript", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-typst", url = "uben0/tree-sitter-typst", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-udev", url = "tree-sitter-grammars/tree-sitter-udev", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-ungrammar", url = "tree-sitter-grammars/tree-sitter-ungrammar", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-unison", url = "kylegoetz/tree-sitter-unison", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-usd", url = "ColinKennedy/tree-sitter-usd", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-uxntal", url = "tree-sitter-grammars/tree-sitter-uxntal", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-v", url = "vlang/v-analyzer", - version = "0.0.3-1" + version = "0.0.11-1" }, { name = "tree-sitter-vala", url = "vala-lang/tree-sitter-vala", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-vento", url = "ventojs/tree-sitter-vento", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-verilog", url = "tree-sitter/tree-sitter-verilog", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-vhdl", url = "jpt13653903/tree-sitter-vhdl", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-vhs", url = "charmbracelet/tree-sitter-vhs", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-vim", url = "tree-sitter-grammars/tree-sitter-vim", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-vimdoc", url = "neovim/tree-sitter-vimdoc", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-vrl", url = "belltoy/tree-sitter-vrl", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-vue", url = "tree-sitter-grammars/tree-sitter-vue", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-wgsl", url = "szebniok/tree-sitter-wgsl", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-wgsl_bevy", url = "tree-sitter-grammars/tree-sitter-wgsl-bevy", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-wing", url = "winglang/tree-sitter-wing", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-wit", url = "liamwh/tree-sitter-wit", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-xcompose", url = "tree-sitter-grammars/tree-sitter-xcompose", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-xml", url = "tree-sitter-grammars/tree-sitter-xml", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-yaml", url = "tree-sitter-grammars/tree-sitter-yaml", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-yang", url = "Hubro/tree-sitter-yang", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-yuck", url = "tree-sitter-grammars/tree-sitter-yuck", - version = "0.0.2-1" + version = "0.0.10-1" }, { name = "tree-sitter-zathurarc", url = "Freed-Wu/tree-sitter-zathurarc", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "tree-sitter-zig", url = "tree-sitter-grammars/tree-sitter-zig", - version = "0.0.3-1" + version = "0.0.10-1" }, { name = "trouble.nvim", url = "folke/trouble.nvim", @@ -2086,7 +2126,7 @@ return }, { name = "yazi.nvim", url = "mikavilpas/yazi.nvim", - version = "6.0.4-1" + version = "6.1.0-1" }, { name = "zen-mode.nvim", url = "folke/zen-mode.nvim", From e9fd76e239cc18da289f9a3f80f35fa16b003175 Mon Sep 17 00:00:00 2001 From: Luna Saphie Mittelbach Date: Wed, 2 Oct 2024 09:52:51 +0200 Subject: [PATCH 301/342] fix(completion): check if command string is a prefix of Lazy (#1760) Problem: Command completion doesn't work if the command name isn't written in full Solution: Use vim.startswith to check if the command is a prefix of 'Lazy' Fixes #1758 --- lua/lazy/view/commands.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/lazy/view/commands.lua b/lua/lazy/view/commands.lua index 9791924..fd4af3d 100644 --- a/lua/lazy/view/commands.lua +++ b/lua/lazy/view/commands.lua @@ -146,7 +146,7 @@ end ---@return string, string[] function M.parse(args) local parts = vim.split(vim.trim(args), "%s+") - if parts[1]:find("Lazy") then + if vim.startswith("Lazy", parts[1]) then table.remove(parts, 1) end if args:sub(-1) == " " then From 1159bdccd8910a0fd0914b24d6c3d186689023d9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 2 Oct 2024 07:54:44 +0000 Subject: [PATCH 302/342] chore(build): auto-generate rockspec mappings --- lua/lazy/community/_generated.lua | 676 +++++++++++++++--------------- 1 file changed, 346 insertions(+), 330 deletions(-) diff --git a/lua/lazy/community/_generated.lua b/lua/lazy/community/_generated.lua index 6b1d4fb..558ff33 100644 --- a/lua/lazy/community/_generated.lua +++ b/lua/lazy/community/_generated.lua @@ -18,7 +18,7 @@ return }, { name = "ai.nvim", url = "S1M0N38/ai.nvim", - version = "1.2.0-1" + version = "1.3.0-1" }, { name = "astral.nvim", url = "rootiest/astral.nvim", @@ -106,7 +106,7 @@ return }, { name = "dante.nvim", url = "S1M0N38/dante.nvim", - version = "1.0.1-1" + version = "1.2.0-1" }, { name = "daylight.nvim", url = "NTBBloodbath/daylight.nvim", @@ -138,11 +138,11 @@ return }, { name = "donut.nvim", url = "NStefan002/donut.nvim", - version = "2.1.0-1" + version = "2.2.1-1" }, { name = "dressing.nvim", url = "stevearc/dressing.nvim", - version = "2.2.2-1" + version = "3.0.0-1" }, { name = "dropbar.nvim", url = "Bekaboo/dropbar.nvim", @@ -167,6 +167,10 @@ return name = "elixir-tools.nvim", url = "elixir-tools/elixir-tools.nvim", version = "0.16.0-1" + }, { + name = "feed.nvim", + url = "noearc/feed.nvim", + version = "main-1" }, { name = "feline.nvim", url = "freddiehaddad/feline.nvim", @@ -226,7 +230,7 @@ return }, { name = "git.nvim", url = "Kibadda/git.nvim", - version = "3.3.2-1" + version = "4.1.0-1" }, { name = "github-nvim-theme", url = "projekt0n/github-nvim-theme", @@ -234,7 +238,7 @@ return }, { name = "gitlinker.nvim", url = "linrongbin16/gitlinker.nvim", - version = "4.13.1-1" + version = "4.13.2-1" }, { name = "gitsigns.nvim", url = "lewis6991/gitsigns.nvim", @@ -270,7 +274,7 @@ return }, { name = "haskell-tools.nvim", url = "mrcjkb/haskell-tools.nvim", - version = "4.0.1-1" + version = "4.1.0-1" }, { name = "headlines.nvim", url = "lukas-reineke/headlines.nvim", @@ -294,7 +298,7 @@ return }, { name = "hotpot.nvim", url = "rktjmp/hotpot.nvim", - version = "0.14.5-1" + version = "0.14.7-1" }, { name = "hurl.nvim", url = "jellydn/hurl.nvim", @@ -334,7 +338,7 @@ return }, { name = "lean.nvim", url = "Julian/lean.nvim", - version = "1.0.0-1" + version = "2024.9.2-1" }, { name = "leetcode.nvim", url = "kawre/leetcode.nvim", @@ -346,7 +350,7 @@ return }, { name = "live-command.nvim", url = "smjonas/live-command.nvim", - version = "2.0.0-1" + version = "2.2.0-1" }, { name = "logging.nvim", url = "NTBBloodbath/logging.nvim", @@ -446,7 +450,7 @@ return }, { name = "neoconf.nvim", url = "folke/neoconf.nvim", - version = "1.3.2-1" + version = "1.3.3-1" }, { name = "neodev.nvim", url = "folke/neodev.nvim", @@ -490,7 +494,7 @@ return }, { name = "neotest", url = "nvim-neotest/neotest", - version = "5.4.1-1" + version = "5.6.0-1" }, { name = "neotest-busted", url = "MisanthropicBit/neotest-busted", @@ -498,7 +502,7 @@ return }, { name = "neotest-golang", url = "fredrikaverpil/neotest-golang", - version = "1.1.1-1" + version = "1.2.0-1" }, { name = "neotest-haskell", url = "mrcjkb/neotest-haskell", @@ -506,7 +510,7 @@ return }, { name = "neotest-java", url = "rcasia/neotest-java", - version = "0.15.6-1" + version = "0.16.0-1" }, { name = "netman.nvim", url = "miversen33/netman.nvim", @@ -518,11 +522,11 @@ return }, { name = "no-neck-pain.nvim", url = "shortcuts/no-neck-pain.nvim", - version = "2.0.1-1" + version = "2.0.5-1" }, { name = "noice.nvim", url = "folke/noice.nvim", - version = "4.5.0-1" + version = "4.5.1-1" }, { name = "npackages.nvim", url = "diegofigs/npackages.nvim", @@ -535,6 +539,10 @@ return name = "nui.nvim", url = "MunifTanjim/nui.nvim", version = "0.3.0-1" + }, { + name = "nvim-a2-pack", + url = "dfgordon/nvim-a2-pack", + version = "0.0.2-1" }, { name = "nvim-bqf", url = "kevinhwang91/nvim-bqf", @@ -610,7 +618,7 @@ return }, { name = "nvim-notify", url = "rcarriga/nvim-notify", - version = "3.13.5-1" + version = "3.14.0-1" }, { name = "nvim-parinfer", url = "gpanders/nvim-parinfer", @@ -626,7 +634,7 @@ return }, { name = "nvim-scrollview", url = "dstein64/nvim-scrollview", - version = "5.2.1-1" + version = "5.2.2-1" }, { name = "nvim-smuggler", url = "Klafyvel/nvim-smuggler", @@ -734,7 +742,7 @@ return }, { name = "quarry.nvim", url = "rudionrails/quarry.nvim", - version = "2.3.0-1" + version = "3.0.1-1" }, { name = "quicker.nvim", url = "stevearc/quicker.nvim", @@ -742,7 +750,7 @@ return }, { name = "rainbow-delimiters.nvim", url = "HiPhish/rainbow-delimiters.nvim", - version = "0.6.1-1" + version = "0.6.2-1" }, { name = "remember.nvim", url = "vladdoster/remember.nvim", @@ -754,15 +762,19 @@ return }, { name = "render-markdown.nvim", url = "MeanderingProgrammer/render-markdown.nvim", - version = "7.0.0-1" + version = "7.2.0-1" }, { name = "rest.nvim", url = "rest-nvim/rest.nvim", - version = "3.7.0-1" + version = "3.8.2-1" + }, { + name = "rime.nvim", + url = "Freed-Wu/rime.nvim", + version = "0.0.1-1" }, { name = "rocks-config.nvim", url = "nvim-neorocks/rocks-config.nvim", - version = "2.3.1-1" + version = "3.0.0-1" }, { name = "rocks-dev.nvim", url = "nvim-neorocks/rocks-dev.nvim", @@ -770,19 +782,19 @@ return }, { name = "rocks-git.nvim", url = "nvim-neorocks/rocks-git.nvim", - version = "2.2.0-1" + version = "2.3.1-1" }, { name = "rocks-lazy.nvim", url = "nvim-neorocks/rocks-lazy.nvim", - version = "1.0.1-1" + version = "1.1.0-1" }, { name = "rocks-treesitter.nvim", url = "nvim-neorocks/rocks-treesitter.nvim", - version = "1.1.2-1" + version = "1.1.3-1" }, { name = "rocks.nvim", url = "nvim-neorocks/rocks.nvim", - version = "2.40.0-1" + version = "2.40.2-1" }, { name = "rtp.nvim", url = "nvim-neorocks/rtp.nvim", @@ -790,11 +802,11 @@ return }, { name = "runt.nvim", url = "Julian/runt.nvim", - version = "2024.9.2-1" + version = "2024.10.1-1" }, { name = "rustaceanvim", url = "mrcjkb/rustaceanvim", - version = "5.4.2-1" + version = "5.11.0-1" }, { name = "schemastore.nvim", url = "b0o/SchemaStore.nvim", @@ -814,7 +826,7 @@ return }, { name = "sf.nvim", url = "xixiaofinland/sf.nvim", - version = "1.6.0-1" + version = "1.7.0-1" }, { name = "sg.nvim", url = "sourcegraph/sg.nvim", @@ -870,7 +882,7 @@ return }, { name = "todo-comments.nvim", url = "folke/todo-comments.nvim", - version = "1.3.0-1" + version = "1.4.0-1" }, { name = "toggleterm.nvim", url = "akinsho/toggleterm.nvim", @@ -882,659 +894,663 @@ return }, { name = "tree-sitter-ada", url = "briot/tree-sitter-ada", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-agda", url = "tree-sitter/tree-sitter-agda", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-angular", url = "dlvandenberg/tree-sitter-angular", - version = "0.0.10-1" + version = "0.0.25-1" }, { name = "tree-sitter-apex", url = "aheber/tree-sitter-sfapex", - version = "0.0.10-1" + version = "0.0.26-1" }, { name = "tree-sitter-arduino", url = "tree-sitter-grammars/tree-sitter-arduino", - version = "0.0.10-1" + version = "0.0.25-1" }, { name = "tree-sitter-asm", url = "RubixDev/tree-sitter-asm", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-astro", url = "virchau13/tree-sitter-astro", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-authzed", url = "mleonidas/tree-sitter-authzed", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-awk", url = "Beaglefoot/tree-sitter-awk", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-bash", url = "tree-sitter/tree-sitter-bash", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-bass", url = "vito/tree-sitter-bass", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-beancount", url = "polarmutex/tree-sitter-beancount", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-bibtex", url = "latex-lsp/tree-sitter-bibtex", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-bicep", url = "tree-sitter-grammars/tree-sitter-bicep", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-bitbake", url = "tree-sitter-grammars/tree-sitter-bitbake", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-blueprint", url = "https://gitlab.com/gabmus/tree-sitter-blueprint/-/archive/60ba73739c6083c693d86a1a7cf039c07eb4ed59.zip", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-bp", url = "ambroisie/tree-sitter-bp", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-c", url = "tree-sitter/tree-sitter-c", - version = "0.0.10-1" + version = "0.0.25-1" }, { name = "tree-sitter-c_sharp", url = "tree-sitter/tree-sitter-c-sharp", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-cairo", url = "tree-sitter-grammars/tree-sitter-cairo", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-capnp", url = "tree-sitter-grammars/tree-sitter-capnp", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-chatito", url = "tree-sitter-grammars/tree-sitter-chatito", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-clojure", url = "sogaiu/tree-sitter-clojure", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-cmake", url = "uyha/tree-sitter-cmake", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-comment", url = "stsewd/tree-sitter-comment", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-commonlisp", url = "tree-sitter-grammars/tree-sitter-commonlisp", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-cooklang", url = "addcninblue/tree-sitter-cooklang", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-corn", url = "jakestanger/tree-sitter-corn", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-cpon", url = "tree-sitter-grammars/tree-sitter-cpon", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-cpp", url = "tree-sitter/tree-sitter-cpp", - version = "0.0.10-1" + version = "0.0.26-1" }, { name = "tree-sitter-css", url = "tree-sitter/tree-sitter-css", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-csv", url = "tree-sitter-grammars/tree-sitter-csv", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-cuda", url = "tree-sitter-grammars/tree-sitter-cuda", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-cue", url = "eonpatapon/tree-sitter-cue", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-d", url = "gdamore/tree-sitter-d", - version = "0.0.10-1" + version = "0.0.28-1" }, { name = "tree-sitter-dart", url = "UserNobody14/tree-sitter-dart", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-devicetree", url = "joelspadin/tree-sitter-devicetree", - version = "0.0.10-1" + version = "0.0.25-1" }, { name = "tree-sitter-dhall", url = "jbellerb/tree-sitter-dhall", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-diff", url = "the-mikedavis/tree-sitter-diff", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-disassembly", url = "ColinKennedy/tree-sitter-disassembly", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-djot", url = "treeman/tree-sitter-djot", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-dockerfile", url = "camdencheek/tree-sitter-dockerfile", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-dot", url = "rydesun/tree-sitter-dot", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-doxygen", url = "tree-sitter-grammars/tree-sitter-doxygen", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-dtd", url = "tree-sitter-grammars/tree-sitter-xml", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-earthfile", url = "glehmann/tree-sitter-earthfile", - version = "0.0.12-1" + version = "0.0.26-1" }, { name = "tree-sitter-ebnf", url = "RubixDev/ebnf", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-ecma", url = "nvim-neorocks/luarocks-stub", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-editorconfig", url = "ValdezFOmar/tree-sitter-editorconfig", - version = "0.0.10-1" + version = "0.0.25-1" }, { name = "tree-sitter-eds", url = "uyha/tree-sitter-eds", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-eex", url = "connorlay/tree-sitter-eex", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-elixir", url = "elixir-lang/tree-sitter-elixir", - version = "0.0.11-1" + version = "0.0.26-1" }, { name = "tree-sitter-elm", url = "elm-tooling/tree-sitter-elm", - version = "0.0.10-1" + version = "0.0.25-1" }, { name = "tree-sitter-elsa", url = "glapa-grossklag/tree-sitter-elsa", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-elvish", url = "elves/tree-sitter-elvish", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-embedded_template", url = "tree-sitter/tree-sitter-embedded-template", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-erlang", url = "WhatsApp/tree-sitter-erlang", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-facility", url = "FacilityApi/tree-sitter-facility", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-faust", url = "khiner/tree-sitter-faust", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-fennel", url = "alexmozaidze/tree-sitter-fennel", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-fidl", url = "google/tree-sitter-fidl", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-firrtl", url = "tree-sitter-grammars/tree-sitter-firrtl", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-fish", url = "ram02z/tree-sitter-fish", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-foam", url = "FoamScience/tree-sitter-foam", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-forth", url = "AlexanderBrevig/tree-sitter-forth", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-fortran", url = "stadelmanma/tree-sitter-fortran", - version = "0.0.10-1" + version = "0.0.27-1" }, { name = "tree-sitter-fsh", url = "mgramigna/tree-sitter-fsh", - version = "0.0.10-1" + version = "0.0.24-1" + }, { + name = "tree-sitter-fsharp", + url = "ionide/tree-sitter-fsharp", + version = "0.0.2-1" }, { name = "tree-sitter-func", url = "tree-sitter-grammars/tree-sitter-func", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-fusion", url = "https://gitlab.com/jirgn/tree-sitter-fusion/-/archive/19db2f47ba4c3a0f6238d4ae0e2abfca16e61dd6.zip", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-gap", url = "gap-system/tree-sitter-gap", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-gaptst", url = "gap-system/tree-sitter-gaptst", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-gdscript", url = "PrestonKnopp/tree-sitter-gdscript", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-gdshader", url = "GodOfAvacyn/tree-sitter-gdshader", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-git_config", url = "the-mikedavis/tree-sitter-git-config", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-git_rebase", url = "the-mikedavis/tree-sitter-git-rebase", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-gitattributes", url = "tree-sitter-grammars/tree-sitter-gitattributes", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-gitcommit", url = "gbprod/tree-sitter-gitcommit", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-gitignore", url = "shunsambongi/tree-sitter-gitignore", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-gleam", url = "gleam-lang/tree-sitter-gleam", - version = "0.0.11-1" + version = "0.0.26-1" }, { name = "tree-sitter-glimmer", url = "ember-tooling/tree-sitter-glimmer", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-glimmer_javascript", url = "NullVoxPopuli/tree-sitter-glimmer-javascript", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-glimmer_typescript", url = "NullVoxPopuli/tree-sitter-glimmer-typescript", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-glsl", url = "tree-sitter-grammars/tree-sitter-glsl", - version = "0.0.11-1" + version = "0.0.25-1" }, { name = "tree-sitter-gn", url = "tree-sitter-grammars/tree-sitter-gn", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-gnuplot", url = "dpezto/tree-sitter-gnuplot", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-go", url = "tree-sitter/tree-sitter-go", - version = "0.0.10-1" + version = "0.0.25-1" }, { name = "tree-sitter-goctl", url = "chaozwn/tree-sitter-goctl", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-godot_resource", url = "PrestonKnopp/tree-sitter-godot-resource", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-gomod", url = "camdencheek/tree-sitter-go-mod", - version = "0.0.11-1" + version = "0.0.25-1" }, { name = "tree-sitter-gosum", url = "tree-sitter-grammars/tree-sitter-go-sum", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-gotmpl", url = "ngalaiko/tree-sitter-go-template", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-gowork", url = "omertuc/tree-sitter-go-work", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-gpg", url = "tree-sitter-grammars/tree-sitter-gpg-config", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-graphql", url = "bkegley/tree-sitter-graphql", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-groovy", url = "murtaza64/tree-sitter-groovy", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-gstlaunch", url = "tree-sitter-grammars/tree-sitter-gstlaunch", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-hack", url = "slackhq/tree-sitter-hack", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-hare", url = "tree-sitter-grammars/tree-sitter-hare", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-haskell", url = "tree-sitter/tree-sitter-haskell", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-haskell_persistent", url = "MercuryTechnologies/tree-sitter-haskell-persistent", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-hcl", url = "tree-sitter-grammars/tree-sitter-hcl", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-heex", url = "connorlay/tree-sitter-heex", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-helm", url = "ngalaiko/tree-sitter-go-template", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-hjson", url = "winston0410/tree-sitter-hjson", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-hlsl", url = "tree-sitter-grammars/tree-sitter-hlsl", - version = "0.0.11-1" + version = "0.0.25-1" }, { name = "tree-sitter-hlsplaylist", url = "Freed-Wu/tree-sitter-hlsplaylist", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-hocon", url = "antosha417/tree-sitter-hocon", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-hoon", url = "urbit-pilled/tree-sitter-hoon", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-html", url = "tree-sitter/tree-sitter-html", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-html_tags", url = "nvim-neorocks/luarocks-stub", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-htmldjango", url = "interdependence/tree-sitter-htmldjango", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-http", url = "rest-nvim/tree-sitter-http", - version = "0.0.10-1" + version = "0.0.26-1" }, { name = "tree-sitter-hurl", url = "pfeiferj/tree-sitter-hurl", - version = "0.0.11-1" + version = "0.0.25-1" }, { name = "tree-sitter-hyprlang", url = "tree-sitter-grammars/tree-sitter-hyprlang", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-idl", url = "cathaysia/tree-sitter-idl", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-ini", url = "justinmk/tree-sitter-ini", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-inko", url = "inko-lang/tree-sitter-inko", - version = "0.0.10-1" + version = "0.0.26-1" }, { name = "tree-sitter-ispc", url = "tree-sitter-grammars/tree-sitter-ispc", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-janet_simple", url = "sogaiu/tree-sitter-janet-simple", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-java", url = "tree-sitter/tree-sitter-java", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-javascript", url = "tree-sitter/tree-sitter-javascript", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-jq", url = "flurie/tree-sitter-jq", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-jsdoc", url = "tree-sitter/tree-sitter-jsdoc", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-json", url = "tree-sitter/tree-sitter-json", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-json5", url = "Joakker/tree-sitter-json5", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-jsonc", url = "https://gitlab.com/WhyNotHugo/tree-sitter-jsonc/-/archive/02b01653c8a1c198ae7287d566efa86a135b30d5.zip", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-jsonnet", url = "sourcegraph/tree-sitter-jsonnet", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-jsx", url = "nvim-neorocks/luarocks-stub", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-julia", url = "tree-sitter/tree-sitter-julia", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-just", url = "IndianBoy42/tree-sitter-just", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-kconfig", url = "tree-sitter-grammars/tree-sitter-kconfig", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-kdl", url = "tree-sitter-grammars/tree-sitter-kdl", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-kotlin", url = "fwcd/tree-sitter-kotlin", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-koto", url = "koto-lang/tree-sitter-koto", - version = "0.0.10-1" + version = "0.0.25-1" }, { name = "tree-sitter-kusto", url = "Willem-J-an/tree-sitter-kusto", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-lalrpop", url = "traxys/tree-sitter-lalrpop", - version = "0.0.10-1" + version = "0.0.25-1" }, { name = "tree-sitter-latex", url = "latex-lsp/tree-sitter-latex", - version = "0.0.11-1" + version = "0.0.25-1" }, { name = "tree-sitter-ledger", url = "cbarrete/tree-sitter-ledger", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-leo", url = "r001/tree-sitter-leo", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-linkerscript", url = "tree-sitter-grammars/tree-sitter-linkerscript", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-liquid", url = "hankthetank27/tree-sitter-liquid", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-liquidsoap", url = "savonet/tree-sitter-liquidsoap", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-llvm", url = "benwilliamgraham/tree-sitter-llvm", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-lua", url = "tree-sitter-grammars/tree-sitter-lua", - version = "0.0.11-1" + version = "0.0.25-1" }, { name = "tree-sitter-luadoc", url = "tree-sitter-grammars/tree-sitter-luadoc", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-luap", url = "tree-sitter-grammars/tree-sitter-luap", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-luau", url = "tree-sitter-grammars/tree-sitter-luau", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-m68k", url = "grahambates/tree-sitter-m68k", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-make", url = "alemuller/tree-sitter-make", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-markdown", url = "tree-sitter-grammars/tree-sitter-markdown", - version = "0.0.13-1" + version = "0.0.28-1" }, { name = "tree-sitter-markdown_inline", url = "tree-sitter-grammars/tree-sitter-markdown", - version = "0.0.13-1" + version = "0.0.28-1" }, { name = "tree-sitter-matlab", url = "acristoffers/tree-sitter-matlab", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-menhir", url = "Kerl13/tree-sitter-menhir", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-mermaid", url = "monaqa/tree-sitter-mermaid", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-meson", url = "tree-sitter-grammars/tree-sitter-meson", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-mlir", url = "artagnon/tree-sitter-mlir", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-muttrc", url = "neomutt/tree-sitter-muttrc", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-nasm", url = "naclsn/tree-sitter-nasm", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-nginx", url = "opa-oz/tree-sitter-nginx", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-nickel", url = "nickel-lang/tree-sitter-nickel", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-nim", url = "alaviss/tree-sitter-nim", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-nim_format_string", url = "aMOPel/tree-sitter-nim-format-string", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-ninja", url = "alemuller/tree-sitter-ninja", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-nix", url = "cstrahan/tree-sitter-nix", - version = "0.0.10-1" + version = "0.0.29-1" }, { name = "tree-sitter-norg", url = "nvim-neorg/tree-sitter-norg", @@ -1546,31 +1562,31 @@ return }, { name = "tree-sitter-nqc", url = "tree-sitter-grammars/tree-sitter-nqc", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-objc", url = "tree-sitter-grammars/tree-sitter-objc", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-objdump", url = "ColinKennedy/tree-sitter-objdump", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-ocaml", url = "tree-sitter/tree-sitter-ocaml", - version = "0.0.10-1" + version = "0.0.27-1" }, { name = "tree-sitter-ocaml_interface", url = "tree-sitter/tree-sitter-ocaml", - version = "0.0.10-1" + version = "0.0.27-1" }, { name = "tree-sitter-ocamllex", url = "atom-ocaml/tree-sitter-ocamllex", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-odin", url = "tree-sitter-grammars/tree-sitter-odin", - version = "0.0.10-1" + version = "0.0.25-1" }, { name = "tree-sitter-org", url = "milisims/tree-sitter-org", @@ -1582,507 +1598,507 @@ return }, { name = "tree-sitter-pascal", url = "Isopod/tree-sitter-pascal", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-passwd", url = "ath3/tree-sitter-passwd", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-pem", url = "tree-sitter-grammars/tree-sitter-pem", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-perl", url = "tree-sitter-perl/tree-sitter-perl", - version = "0.0.12-1" + version = "0.0.28-1" }, { name = "tree-sitter-php", url = "tree-sitter/tree-sitter-php", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-php_only", url = "tree-sitter/tree-sitter-php", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-phpdoc", url = "claytonrcarter/tree-sitter-phpdoc", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-pioasm", url = "leo60228/tree-sitter-pioasm", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-po", url = "tree-sitter-grammars/tree-sitter-po", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-pod", url = "tree-sitter-perl/tree-sitter-pod", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-poe_filter", url = "tree-sitter-grammars/tree-sitter-poe-filter", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-pony", url = "tree-sitter-grammars/tree-sitter-pony", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-powershell", url = "airbus-cert/tree-sitter-powershell", - version = "0.0.10-1" + version = "0.0.25-1" }, { name = "tree-sitter-printf", url = "tree-sitter-grammars/tree-sitter-printf", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-prisma", url = "victorhqc/tree-sitter-prisma", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-problog", url = "foxyseta/tree-sitter-prolog", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-prolog", url = "foxyseta/tree-sitter-prolog", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-promql", url = "MichaHoffmann/tree-sitter-promql", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-properties", url = "tree-sitter-grammars/tree-sitter-properties", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-proto", url = "treywood/tree-sitter-proto", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-prql", url = "PRQL/tree-sitter-prql", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-psv", url = "tree-sitter-grammars/tree-sitter-csv", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-pug", url = "zealot128/tree-sitter-pug", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-puppet", url = "tree-sitter-grammars/tree-sitter-puppet", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-purescript", url = "postsolar/tree-sitter-purescript", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-pymanifest", url = "tree-sitter-grammars/tree-sitter-pymanifest", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-python", url = "tree-sitter/tree-sitter-python", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-ql", url = "tree-sitter/tree-sitter-ql", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-qmldir", url = "tree-sitter-grammars/tree-sitter-qmldir", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-qmljs", url = "yuja/tree-sitter-qmljs", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-query", url = "tree-sitter-grammars/tree-sitter-query", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-r", url = "r-lib/tree-sitter-r", - version = "0.0.11-1" + version = "0.0.26-1" }, { name = "tree-sitter-racket", url = "6cdh/tree-sitter-racket", - version = "0.0.12-1" + version = "0.0.26-1" }, { name = "tree-sitter-ralph", url = "alephium/tree-sitter-ralph", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-rasi", url = "Fymyte/tree-sitter-rasi", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-rbs", url = "joker1007/tree-sitter-rbs", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-re2c", url = "tree-sitter-grammars/tree-sitter-re2c", - version = "0.0.10-1" + version = "0.0.25-1" }, { name = "tree-sitter-readline", url = "tree-sitter-grammars/tree-sitter-readline", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-regex", url = "tree-sitter/tree-sitter-regex", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-rego", url = "FallenAngel97/tree-sitter-rego", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-requirements", url = "tree-sitter-grammars/tree-sitter-requirements", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-rescript", url = "rescript-lang/tree-sitter-rescript", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-rnoweb", url = "bamonroe/tree-sitter-rnoweb", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-robot", url = "Hubro/tree-sitter-robot", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-robots", url = "opa-oz/tree-sitter-robots-txt", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-roc", url = "faldor20/tree-sitter-roc", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-ron", url = "tree-sitter-grammars/tree-sitter-ron", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-rst", url = "stsewd/tree-sitter-rst", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-ruby", url = "tree-sitter/tree-sitter-ruby", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-rust", url = "tree-sitter/tree-sitter-rust", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-scala", url = "tree-sitter/tree-sitter-scala", - version = "0.0.13-1" + version = "0.0.27-1" }, { name = "tree-sitter-scfg", url = "rockorager/tree-sitter-scfg", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-scheme", url = "6cdh/tree-sitter-scheme", - version = "0.0.12-1" + version = "0.0.26-1" }, { name = "tree-sitter-scss", url = "serenadeai/tree-sitter-scss", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-sflog", url = "aheber/tree-sitter-sfapex", - version = "0.0.10-1" + version = "0.0.26-1" }, { name = "tree-sitter-slang", url = "tree-sitter-grammars/tree-sitter-slang", - version = "0.0.11-1" + version = "0.0.25-1" }, { name = "tree-sitter-slint", url = "slint-ui/tree-sitter-slint", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-smali", url = "tree-sitter-grammars/tree-sitter-smali", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-smithy", url = "indoorvivants/tree-sitter-smithy", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-snakemake", url = "osthomas/tree-sitter-snakemake", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-solidity", url = "JoranHonig/tree-sitter-solidity", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-soql", url = "aheber/tree-sitter-sfapex", - version = "0.0.10-1" + version = "0.0.26-1" }, { name = "tree-sitter-sosl", url = "aheber/tree-sitter-sfapex", - version = "0.0.10-1" + version = "0.0.26-1" }, { name = "tree-sitter-sourcepawn", url = "nilshelmig/tree-sitter-sourcepawn", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-sparql", url = "GordianDziwis/tree-sitter-sparql", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-sql", url = "derekstride/tree-sitter-sql", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-squirrel", url = "tree-sitter-grammars/tree-sitter-squirrel", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-ssh_config", url = "tree-sitter-grammars/tree-sitter-ssh-config", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-starlark", url = "tree-sitter-grammars/tree-sitter-starlark", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-strace", url = "sigmaSd/tree-sitter-strace", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-styled", url = "mskelton/tree-sitter-styled", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-supercollider", url = "madskjeldgaard/tree-sitter-supercollider", - version = "0.0.10-1" + version = "0.0.25-1" }, { name = "tree-sitter-surface", url = "connorlay/tree-sitter-surface", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-svelte", url = "tree-sitter-grammars/tree-sitter-svelte", - version = "0.0.12-1" + version = "0.0.26-1" }, { name = "tree-sitter-swift", url = "alex-pinkus/tree-sitter-swift", - version = "0.0.11-1" + version = "0.0.26-1" }, { name = "tree-sitter-sxhkdrc", url = "RaafatTurki/tree-sitter-sxhkdrc", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-systemtap", url = "ok-ryoko/tree-sitter-systemtap", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-systemverilog", url = "zhangwwpeng/tree-sitter-systemverilog", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-t32", url = "https://gitlab.com/xasc/tree-sitter-t32/-/archive/6182836f4128725f1e74ce986840d7317021a015.zip", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-tablegen", url = "tree-sitter-grammars/tree-sitter-tablegen", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-tact", url = "tact-lang/tree-sitter-tact", - version = "0.0.10-1" + version = "0.0.25-1" }, { name = "tree-sitter-tcl", url = "tree-sitter-grammars/tree-sitter-tcl", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-teal", url = "euclidianAce/tree-sitter-teal", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-templ", url = "vrischmann/tree-sitter-templ", - version = "0.0.10-1" + version = "0.0.26-1" }, { name = "tree-sitter-terraform", url = "MichaHoffmann/tree-sitter-hcl", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-textproto", url = "PorterAtGoogle/tree-sitter-textproto", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-thrift", url = "tree-sitter-grammars/tree-sitter-thrift", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-tiger", url = "ambroisie/tree-sitter-tiger", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-tlaplus", url = "tlaplus-community/tree-sitter-tlaplus", - version = "0.0.10-1" + version = "0.0.26-1" }, { name = "tree-sitter-tmux", url = "Freed-Wu/tree-sitter-tmux", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-todotxt", url = "arnarg/tree-sitter-todotxt", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-toml", url = "tree-sitter-grammars/tree-sitter-toml", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-tsv", url = "tree-sitter-grammars/tree-sitter-csv", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-tsx", url = "tree-sitter/tree-sitter-typescript", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-turtle", url = "GordianDziwis/tree-sitter-turtle", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-twig", url = "gbprod/tree-sitter-twig", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-typescript", url = "tree-sitter/tree-sitter-typescript", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-typespec", url = "happenslol/tree-sitter-typespec", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-typoscript", url = "Teddytrombone/tree-sitter-typoscript", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-typst", url = "uben0/tree-sitter-typst", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-udev", url = "tree-sitter-grammars/tree-sitter-udev", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-ungrammar", url = "tree-sitter-grammars/tree-sitter-ungrammar", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-unison", url = "kylegoetz/tree-sitter-unison", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-usd", url = "ColinKennedy/tree-sitter-usd", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-uxntal", url = "tree-sitter-grammars/tree-sitter-uxntal", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-v", url = "vlang/v-analyzer", - version = "0.0.11-1" + version = "0.0.27-1" }, { name = "tree-sitter-vala", url = "vala-lang/tree-sitter-vala", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-vento", url = "ventojs/tree-sitter-vento", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-verilog", url = "tree-sitter/tree-sitter-verilog", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-vhdl", url = "jpt13653903/tree-sitter-vhdl", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-vhs", url = "charmbracelet/tree-sitter-vhs", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-vim", url = "tree-sitter-grammars/tree-sitter-vim", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-vimdoc", url = "neovim/tree-sitter-vimdoc", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-vrl", url = "belltoy/tree-sitter-vrl", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-vue", url = "tree-sitter-grammars/tree-sitter-vue", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-wgsl", url = "szebniok/tree-sitter-wgsl", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-wgsl_bevy", url = "tree-sitter-grammars/tree-sitter-wgsl-bevy", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-wing", url = "winglang/tree-sitter-wing", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-wit", url = "liamwh/tree-sitter-wit", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-xcompose", url = "tree-sitter-grammars/tree-sitter-xcompose", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-xml", url = "tree-sitter-grammars/tree-sitter-xml", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-yaml", url = "tree-sitter-grammars/tree-sitter-yaml", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-yang", url = "Hubro/tree-sitter-yang", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-yuck", url = "tree-sitter-grammars/tree-sitter-yuck", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-zathurarc", url = "Freed-Wu/tree-sitter-zathurarc", - version = "0.0.10-1" + version = "0.0.24-1" }, { name = "tree-sitter-zig", url = "tree-sitter-grammars/tree-sitter-zig", - version = "0.0.10-1" + version = "0.0.25-1" }, { name = "trouble.nvim", url = "folke/trouble.nvim", @@ -2110,7 +2126,7 @@ return }, { name = "which-key.nvim", url = "folke/which-key.nvim", - version = "3.13.2-1" + version = "3.13.3-1" }, { name = "windline.nvim", url = "windwp/windline.nvim", @@ -2126,7 +2142,7 @@ return }, { name = "yazi.nvim", url = "mikavilpas/yazi.nvim", - version = "6.1.0-1" + version = "6.3.0-1" }, { name = "zen-mode.nvim", url = "folke/zen-mode.nvim", From 40dab7450e6da28364539664d9f51be596b4686b Mon Sep 17 00:00:00 2001 From: Lorenzo Zabot Date: Tue, 22 Oct 2024 12:43:33 +0200 Subject: [PATCH 303/342] style(typos): correct a few typos (#1776) ## Description This PR just fixes a few typos :) `dont => don't` ## Related Issue(s) ## Screenshots --- lua/lazy/core/config.lua | 2 +- lua/lazy/manage/task/git.lua | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 16cc012..5bb1d91 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -218,7 +218,7 @@ M.defaults = { enabled = true, root = vim.fn.stdpath("state") .. "/lazy/readme", files = { "README.md", "lua/**/README.md" }, - -- only generate markdown helptags for plugins that dont have docs + -- only generate markdown helptags for plugins that don't have docs skip_if_doc_exists = true, }, state = vim.fn.stdpath("state") .. "/lazy/state.json", -- state info for checker and other things diff --git a/lua/lazy/manage/task/git.lua b/lua/lazy/manage/task/git.lua index c54c809..ef848f9 100644 --- a/lua/lazy/manage/task/git.lua +++ b/lua/lazy/manage/task/git.lua @@ -335,7 +335,7 @@ M.checkout = { end end - -- dont run checkout if target is already reached. + -- don't run checkout if target is already reached. -- unless we just cloned, since then we won't have any data yet if Git.eq(info, target) and info.branch == target.branch then self.plugin._.updated = { From cf8ecc2c5e4332760431a33534240b0cbc6680ab Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 22 Oct 2024 10:47:57 +0000 Subject: [PATCH 304/342] chore(build): auto-generate rockspec mappings --- lua/lazy/community/_generated.lua | 700 ++++++++++++++++-------------- 1 file changed, 374 insertions(+), 326 deletions(-) diff --git a/lua/lazy/community/_generated.lua b/lua/lazy/community/_generated.lua index 558ff33..c105756 100644 --- a/lua/lazy/community/_generated.lua +++ b/lua/lazy/community/_generated.lua @@ -14,7 +14,7 @@ return }, { name = "aerial.nvim", url = "stevearc/aerial.nvim", - version = "2.3.0-1" + version = "2.3.1-1" }, { name = "ai.nvim", url = "S1M0N38/ai.nvim", @@ -115,6 +115,10 @@ return name = "deadcolumn.nvim", url = "Bekaboo/deadcolumn.nvim", version = "1.0.0-1" + }, { + name = "decasify.nvim", + url = "alerque/decasify", + version = "0.7.3-1" }, { name = "decipher.nvim", url = "MisanthropicBit/decipher.nvim", @@ -139,6 +143,10 @@ return name = "donut.nvim", url = "NStefan002/donut.nvim", version = "2.2.1-1" + }, { + name = "doris.nvim", + url = "jackokring/doris.nvim", + version = "0.0.0-1" }, { name = "dressing.nvim", url = "stevearc/dressing.nvim", @@ -166,11 +174,11 @@ return }, { name = "elixir-tools.nvim", url = "elixir-tools/elixir-tools.nvim", - version = "0.16.0-1" + version = "0.16.1-1" }, { name = "feed.nvim", - url = "noearc/feed.nvim", - version = "main-1" + url = "neo451/feed.nvim", + version = "1.5.1-1" }, { name = "feline.nvim", url = "freddiehaddad/feline.nvim", @@ -230,7 +238,7 @@ return }, { name = "git.nvim", url = "Kibadda/git.nvim", - version = "4.1.0-1" + version = "5.0.1-1" }, { name = "github-nvim-theme", url = "projekt0n/github-nvim-theme", @@ -263,6 +271,10 @@ return name = "gruvbox.nvim", url = "ellisonleao/gruvbox.nvim", version = "2.0.0-1" + }, { + name = "guard.nvim", + url = "nvimdev/guard.nvim", + version = "1.0.1-1" }, { name = "hardhat.nvim", url = "TheSnakeWitcher/hardhat.nvim", @@ -274,7 +286,7 @@ return }, { name = "haskell-tools.nvim", url = "mrcjkb/haskell-tools.nvim", - version = "4.1.0-1" + version = "4.3.1-1" }, { name = "headlines.nvim", url = "lukas-reineke/headlines.nvim", @@ -318,7 +330,7 @@ return }, { name = "indent-blankline.nvim", url = "lukas-reineke/indent-blankline.nvim", - version = "3.7.2-1" + version = "3.8.2-1" }, { name = "kai.nvim", url = "Kamilcuk/kai.nvim", @@ -327,6 +339,10 @@ return name = "kanban.nvim", url = "Kibadda/kanban.nvim", version = "1.3.0-1" + }, { + name = "kube.nvim", + url = "mimparat132/kube.nvim", + version = "1.2.0-1" }, { name = "lazy.nvim", url = "folke/lazy.nvim", @@ -395,6 +411,10 @@ return name = "luarocks-build-treesitter-parser-cpp", url = "nvim-neorocks/luarocks-build-treesitter-parser-cpp", version = "2.0.4-1" + }, { + name = "magazine.nvim", + url = "iguanacucumber/magazine.nvim", + version = "0.1-1" }, { name = "mapx.nvim", url = "b0o/mapx.nvim", @@ -406,7 +426,7 @@ return }, { name = "markview.nvim", url = "OXY2DEV/markview.nvim", - version = "23.1.0-1" + version = "24.0.0-1" }, { name = "mason-lspconfig.nvim", url = "williamboman/mason-lspconfig.nvim", @@ -494,15 +514,15 @@ return }, { name = "neotest", url = "nvim-neotest/neotest", - version = "5.6.0-1" + version = "5.6.1-1" }, { name = "neotest-busted", url = "MisanthropicBit/neotest-busted", - version = "0.2.0-1" + version = "0.2.1-1" }, { name = "neotest-golang", url = "fredrikaverpil/neotest-golang", - version = "1.2.0-1" + version = "1.3.0-1" }, { name = "neotest-haskell", url = "mrcjkb/neotest-haskell", @@ -510,7 +530,7 @@ return }, { name = "neotest-java", url = "rcasia/neotest-java", - version = "0.16.0-1" + version = "0.17.4-1" }, { name = "netman.nvim", url = "miversen33/netman.nvim", @@ -522,11 +542,11 @@ return }, { name = "no-neck-pain.nvim", url = "shortcuts/no-neck-pain.nvim", - version = "2.0.5-1" + version = "2.0.6-1" }, { name = "noice.nvim", url = "folke/noice.nvim", - version = "4.5.1-1" + version = "4.5.2-1" }, { name = "npackages.nvim", url = "diegofigs/npackages.nvim", @@ -542,7 +562,7 @@ return }, { name = "nvim-a2-pack", url = "dfgordon/nvim-a2-pack", - version = "0.0.2-1" + version = "0.2.0-1" }, { name = "nvim-bqf", url = "kevinhwang91/nvim-bqf", @@ -634,7 +654,7 @@ return }, { name = "nvim-scrollview", url = "dstein64/nvim-scrollview", - version = "5.2.2-1" + version = "6.0.0-1" }, { name = "nvim-smuggler", url = "Klafyvel/nvim-smuggler", @@ -682,7 +702,7 @@ return }, { name = "onedarkpro.nvim", url = "olimorris/onedarkpro.nvim", - version = "1.0.0-1" + version = "2.0.0-1" }, { name = "onenord.nvim", url = "rmehri01/onenord.nvim", @@ -722,7 +742,7 @@ return }, { name = "persisted.nvim", url = "olimorris/persisted.nvim", - version = "2.0.0-1" + version = "2.0.1-1" }, { name = "persistence.nvim", url = "folke/persistence.nvim", @@ -762,11 +782,11 @@ return }, { name = "render-markdown.nvim", url = "MeanderingProgrammer/render-markdown.nvim", - version = "7.2.0-1" + version = "7.4.0-1" }, { name = "rest.nvim", url = "rest-nvim/rest.nvim", - version = "3.8.2-1" + version = "3.8.3-1" }, { name = "rime.nvim", url = "Freed-Wu/rime.nvim", @@ -782,11 +802,11 @@ return }, { name = "rocks-git.nvim", url = "nvim-neorocks/rocks-git.nvim", - version = "2.3.1-1" + version = "2.4.2-1" }, { name = "rocks-lazy.nvim", url = "nvim-neorocks/rocks-lazy.nvim", - version = "1.1.0-1" + version = "1.1.1-1" }, { name = "rocks-treesitter.nvim", url = "nvim-neorocks/rocks-treesitter.nvim", @@ -794,7 +814,7 @@ return }, { name = "rocks.nvim", url = "nvim-neorocks/rocks.nvim", - version = "2.40.2-1" + version = "2.40.5-1" }, { name = "rtp.nvim", url = "nvim-neorocks/rtp.nvim", @@ -806,7 +826,7 @@ return }, { name = "rustaceanvim", url = "mrcjkb/rustaceanvim", - version = "5.11.0-1" + version = "5.13.0-1" }, { name = "schemastore.nvim", url = "b0o/SchemaStore.nvim", @@ -826,7 +846,7 @@ return }, { name = "sf.nvim", url = "xixiaofinland/sf.nvim", - version = "1.7.0-1" + version = "1.8.0-1" }, { name = "sg.nvim", url = "sourcegraph/sg.nvim", @@ -835,6 +855,10 @@ return name = "smart-splits.nvim", url = "mrjones2014/smart-splits.nvim", version = "1.6.0-1" + }, { + name = "sos.nvim", + url = "tmillr/sos.nvim", + version = "1.0.0-1" }, { name = "squirrel.nvim", url = "xiaoshihou514/squirrel.nvim", @@ -894,663 +918,667 @@ return }, { name = "tree-sitter-ada", url = "briot/tree-sitter-ada", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-agda", url = "tree-sitter/tree-sitter-agda", - version = "0.0.24-1" + version = "0.0.30-1" }, { name = "tree-sitter-angular", url = "dlvandenberg/tree-sitter-angular", - version = "0.0.25-1" + version = "0.0.30-1" }, { name = "tree-sitter-apex", url = "aheber/tree-sitter-sfapex", - version = "0.0.26-1" + version = "0.0.36-1" }, { name = "tree-sitter-arduino", url = "tree-sitter-grammars/tree-sitter-arduino", - version = "0.0.25-1" + version = "0.0.30-1" }, { name = "tree-sitter-asm", url = "RubixDev/tree-sitter-asm", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-astro", url = "virchau13/tree-sitter-astro", - version = "0.0.24-1" + version = "0.0.30-1" }, { name = "tree-sitter-authzed", url = "mleonidas/tree-sitter-authzed", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-awk", url = "Beaglefoot/tree-sitter-awk", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-bash", url = "tree-sitter/tree-sitter-bash", - version = "0.0.24-1" + version = "0.0.30-1" }, { name = "tree-sitter-bass", url = "vito/tree-sitter-bass", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-beancount", url = "polarmutex/tree-sitter-beancount", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-bibtex", url = "latex-lsp/tree-sitter-bibtex", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-bicep", url = "tree-sitter-grammars/tree-sitter-bicep", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-bitbake", url = "tree-sitter-grammars/tree-sitter-bitbake", - version = "0.0.24-1" + version = "0.0.30-1" }, { name = "tree-sitter-blueprint", url = "https://gitlab.com/gabmus/tree-sitter-blueprint/-/archive/60ba73739c6083c693d86a1a7cf039c07eb4ed59.zip", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-bp", url = "ambroisie/tree-sitter-bp", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-c", url = "tree-sitter/tree-sitter-c", - version = "0.0.25-1" + version = "0.0.32-1" }, { name = "tree-sitter-c_sharp", url = "tree-sitter/tree-sitter-c-sharp", - version = "0.0.24-1" + version = "0.0.30-1" }, { name = "tree-sitter-cairo", url = "tree-sitter-grammars/tree-sitter-cairo", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-capnp", url = "tree-sitter-grammars/tree-sitter-capnp", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-chatito", url = "tree-sitter-grammars/tree-sitter-chatito", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-clojure", url = "sogaiu/tree-sitter-clojure", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-cmake", url = "uyha/tree-sitter-cmake", - version = "0.0.24-1" + version = "0.0.31-1" }, { name = "tree-sitter-comment", url = "stsewd/tree-sitter-comment", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-commonlisp", url = "tree-sitter-grammars/tree-sitter-commonlisp", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-cooklang", url = "addcninblue/tree-sitter-cooklang", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-corn", url = "jakestanger/tree-sitter-corn", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-cpon", url = "tree-sitter-grammars/tree-sitter-cpon", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-cpp", url = "tree-sitter/tree-sitter-cpp", - version = "0.0.26-1" + version = "0.0.32-1" }, { name = "tree-sitter-css", url = "tree-sitter/tree-sitter-css", - version = "0.0.24-1" + version = "0.0.30-1" }, { name = "tree-sitter-csv", url = "tree-sitter-grammars/tree-sitter-csv", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-cuda", url = "tree-sitter-grammars/tree-sitter-cuda", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-cue", url = "eonpatapon/tree-sitter-cue", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-d", url = "gdamore/tree-sitter-d", - version = "0.0.28-1" + version = "0.0.33-1" }, { name = "tree-sitter-dart", url = "UserNobody14/tree-sitter-dart", - version = "0.0.24-1" + version = "0.0.32-1" }, { name = "tree-sitter-devicetree", url = "joelspadin/tree-sitter-devicetree", - version = "0.0.25-1" + version = "0.0.31-1" }, { name = "tree-sitter-dhall", url = "jbellerb/tree-sitter-dhall", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-diff", url = "the-mikedavis/tree-sitter-diff", - version = "0.0.24-1" + version = "0.0.31-1" }, { name = "tree-sitter-disassembly", url = "ColinKennedy/tree-sitter-disassembly", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-djot", url = "treeman/tree-sitter-djot", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-dockerfile", url = "camdencheek/tree-sitter-dockerfile", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-dot", url = "rydesun/tree-sitter-dot", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-doxygen", url = "tree-sitter-grammars/tree-sitter-doxygen", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-dtd", url = "tree-sitter-grammars/tree-sitter-xml", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-earthfile", url = "glehmann/tree-sitter-earthfile", - version = "0.0.26-1" + version = "0.0.31-1" }, { name = "tree-sitter-ebnf", url = "RubixDev/ebnf", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-ecma", url = "nvim-neorocks/luarocks-stub", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-editorconfig", url = "ValdezFOmar/tree-sitter-editorconfig", - version = "0.0.25-1" + version = "0.0.34-1" }, { name = "tree-sitter-eds", url = "uyha/tree-sitter-eds", - version = "0.0.24-1" + version = "0.0.30-1" }, { name = "tree-sitter-eex", url = "connorlay/tree-sitter-eex", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-elixir", url = "elixir-lang/tree-sitter-elixir", - version = "0.0.26-1" + version = "0.0.33-1" }, { name = "tree-sitter-elm", url = "elm-tooling/tree-sitter-elm", - version = "0.0.25-1" + version = "0.0.30-1" }, { name = "tree-sitter-elsa", url = "glapa-grossklag/tree-sitter-elsa", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-elvish", url = "elves/tree-sitter-elvish", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-embedded_template", url = "tree-sitter/tree-sitter-embedded-template", - version = "0.0.24-1" + version = "0.0.30-1" }, { name = "tree-sitter-erlang", url = "WhatsApp/tree-sitter-erlang", - version = "0.0.24-1" + version = "0.0.31-1" }, { name = "tree-sitter-facility", url = "FacilityApi/tree-sitter-facility", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-faust", url = "khiner/tree-sitter-faust", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-fennel", url = "alexmozaidze/tree-sitter-fennel", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-fidl", url = "google/tree-sitter-fidl", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-firrtl", url = "tree-sitter-grammars/tree-sitter-firrtl", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-fish", url = "ram02z/tree-sitter-fish", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-foam", url = "FoamScience/tree-sitter-foam", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-forth", url = "AlexanderBrevig/tree-sitter-forth", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-fortran", url = "stadelmanma/tree-sitter-fortran", - version = "0.0.27-1" + version = "0.0.32-1" }, { name = "tree-sitter-fsh", url = "mgramigna/tree-sitter-fsh", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-fsharp", url = "ionide/tree-sitter-fsharp", - version = "0.0.2-1" + version = "0.0.9-1" }, { name = "tree-sitter-func", url = "tree-sitter-grammars/tree-sitter-func", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-fusion", url = "https://gitlab.com/jirgn/tree-sitter-fusion/-/archive/19db2f47ba4c3a0f6238d4ae0e2abfca16e61dd6.zip", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-gap", url = "gap-system/tree-sitter-gap", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-gaptst", url = "gap-system/tree-sitter-gaptst", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-gdscript", url = "PrestonKnopp/tree-sitter-gdscript", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-gdshader", url = "GodOfAvacyn/tree-sitter-gdshader", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-git_config", url = "the-mikedavis/tree-sitter-git-config", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-git_rebase", url = "the-mikedavis/tree-sitter-git-rebase", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-gitattributes", url = "tree-sitter-grammars/tree-sitter-gitattributes", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-gitcommit", url = "gbprod/tree-sitter-gitcommit", - version = "0.0.24-1" + version = "0.0.32-1" }, { name = "tree-sitter-gitignore", url = "shunsambongi/tree-sitter-gitignore", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-gleam", url = "gleam-lang/tree-sitter-gleam", - version = "0.0.26-1" + version = "0.0.31-1" }, { name = "tree-sitter-glimmer", url = "ember-tooling/tree-sitter-glimmer", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-glimmer_javascript", url = "NullVoxPopuli/tree-sitter-glimmer-javascript", - version = "0.0.24-1" + version = "0.0.30-1" }, { name = "tree-sitter-glimmer_typescript", url = "NullVoxPopuli/tree-sitter-glimmer-typescript", - version = "0.0.24-1" + version = "0.0.30-1" }, { name = "tree-sitter-glsl", url = "tree-sitter-grammars/tree-sitter-glsl", - version = "0.0.25-1" + version = "0.0.30-1" }, { name = "tree-sitter-gn", url = "tree-sitter-grammars/tree-sitter-gn", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-gnuplot", url = "dpezto/tree-sitter-gnuplot", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-go", url = "tree-sitter/tree-sitter-go", - version = "0.0.25-1" + version = "0.0.31-1" }, { name = "tree-sitter-goctl", url = "chaozwn/tree-sitter-goctl", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-godot_resource", url = "PrestonKnopp/tree-sitter-godot-resource", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-gomod", url = "camdencheek/tree-sitter-go-mod", - version = "0.0.25-1" + version = "0.0.30-1" }, { name = "tree-sitter-gosum", url = "tree-sitter-grammars/tree-sitter-go-sum", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-gotmpl", url = "ngalaiko/tree-sitter-go-template", - version = "0.0.24-1" + version = "0.0.30-1" }, { name = "tree-sitter-gowork", url = "omertuc/tree-sitter-go-work", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-gpg", url = "tree-sitter-grammars/tree-sitter-gpg-config", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-graphql", url = "bkegley/tree-sitter-graphql", - version = "0.0.24-1" + version = "0.0.29-1" + }, { + name = "tree-sitter-gren", + url = "MaeBrooks/tree-sitter-gren", + version = "0.0.2-1" }, { name = "tree-sitter-groovy", url = "murtaza64/tree-sitter-groovy", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-gstlaunch", url = "tree-sitter-grammars/tree-sitter-gstlaunch", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-hack", url = "slackhq/tree-sitter-hack", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-hare", url = "tree-sitter-grammars/tree-sitter-hare", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-haskell", url = "tree-sitter/tree-sitter-haskell", - version = "0.0.24-1" + version = "0.0.30-1" }, { name = "tree-sitter-haskell_persistent", url = "MercuryTechnologies/tree-sitter-haskell-persistent", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-hcl", url = "tree-sitter-grammars/tree-sitter-hcl", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-heex", url = "connorlay/tree-sitter-heex", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-helm", url = "ngalaiko/tree-sitter-go-template", - version = "0.0.24-1" + version = "0.0.30-1" }, { name = "tree-sitter-hjson", url = "winston0410/tree-sitter-hjson", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-hlsl", url = "tree-sitter-grammars/tree-sitter-hlsl", - version = "0.0.25-1" + version = "0.0.31-1" }, { name = "tree-sitter-hlsplaylist", url = "Freed-Wu/tree-sitter-hlsplaylist", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-hocon", url = "antosha417/tree-sitter-hocon", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-hoon", url = "urbit-pilled/tree-sitter-hoon", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-html", url = "tree-sitter/tree-sitter-html", - version = "0.0.24-1" + version = "0.0.30-1" }, { name = "tree-sitter-html_tags", url = "nvim-neorocks/luarocks-stub", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-htmldjango", url = "interdependence/tree-sitter-htmldjango", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-http", url = "rest-nvim/tree-sitter-http", - version = "0.0.26-1" + version = "0.0.31-1" }, { name = "tree-sitter-hurl", url = "pfeiferj/tree-sitter-hurl", - version = "0.0.25-1" + version = "0.0.30-1" }, { name = "tree-sitter-hyprlang", url = "tree-sitter-grammars/tree-sitter-hyprlang", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-idl", url = "cathaysia/tree-sitter-idl", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-ini", url = "justinmk/tree-sitter-ini", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-inko", url = "inko-lang/tree-sitter-inko", - version = "0.0.26-1" + version = "0.0.31-1" }, { name = "tree-sitter-ispc", url = "tree-sitter-grammars/tree-sitter-ispc", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-janet_simple", url = "sogaiu/tree-sitter-janet-simple", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-java", url = "tree-sitter/tree-sitter-java", - version = "0.0.24-1" + version = "0.0.32-1" }, { name = "tree-sitter-javascript", url = "tree-sitter/tree-sitter-javascript", - version = "0.0.24-1" + version = "0.0.30-1" }, { name = "tree-sitter-jq", url = "flurie/tree-sitter-jq", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-jsdoc", url = "tree-sitter/tree-sitter-jsdoc", - version = "0.0.24-1" + version = "0.0.30-1" }, { name = "tree-sitter-json", url = "tree-sitter/tree-sitter-json", - version = "0.0.24-1" + version = "0.0.30-1" }, { name = "tree-sitter-json5", url = "Joakker/tree-sitter-json5", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-jsonc", url = "https://gitlab.com/WhyNotHugo/tree-sitter-jsonc/-/archive/02b01653c8a1c198ae7287d566efa86a135b30d5.zip", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-jsonnet", url = "sourcegraph/tree-sitter-jsonnet", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-jsx", url = "nvim-neorocks/luarocks-stub", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-julia", url = "tree-sitter/tree-sitter-julia", - version = "0.0.24-1" + version = "0.0.30-1" }, { name = "tree-sitter-just", url = "IndianBoy42/tree-sitter-just", - version = "0.0.24-1" + version = "0.0.30-1" }, { name = "tree-sitter-kconfig", url = "tree-sitter-grammars/tree-sitter-kconfig", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-kdl", url = "tree-sitter-grammars/tree-sitter-kdl", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-kotlin", url = "fwcd/tree-sitter-kotlin", - version = "0.0.24-1" + version = "0.0.30-1" }, { name = "tree-sitter-koto", url = "koto-lang/tree-sitter-koto", - version = "0.0.25-1" + version = "0.0.30-1" }, { name = "tree-sitter-kusto", url = "Willem-J-an/tree-sitter-kusto", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-lalrpop", url = "traxys/tree-sitter-lalrpop", - version = "0.0.25-1" + version = "0.0.30-1" }, { name = "tree-sitter-latex", url = "latex-lsp/tree-sitter-latex", - version = "0.0.25-1" + version = "0.0.32-1" }, { name = "tree-sitter-ledger", url = "cbarrete/tree-sitter-ledger", - version = "0.0.24-1" + version = "0.0.30-1" }, { name = "tree-sitter-leo", url = "r001/tree-sitter-leo", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-linkerscript", url = "tree-sitter-grammars/tree-sitter-linkerscript", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-liquid", url = "hankthetank27/tree-sitter-liquid", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-liquidsoap", url = "savonet/tree-sitter-liquidsoap", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-llvm", url = "benwilliamgraham/tree-sitter-llvm", - version = "0.0.24-1" + version = "0.0.30-1" }, { name = "tree-sitter-lua", url = "tree-sitter-grammars/tree-sitter-lua", - version = "0.0.25-1" + version = "0.0.30-1" }, { name = "tree-sitter-luadoc", url = "tree-sitter-grammars/tree-sitter-luadoc", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-luap", url = "tree-sitter-grammars/tree-sitter-luap", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-luau", url = "tree-sitter-grammars/tree-sitter-luau", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-m68k", url = "grahambates/tree-sitter-m68k", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-make", url = "alemuller/tree-sitter-make", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-markdown", url = "tree-sitter-grammars/tree-sitter-markdown", - version = "0.0.28-1" + version = "0.0.34-1" }, { name = "tree-sitter-markdown_inline", url = "tree-sitter-grammars/tree-sitter-markdown", - version = "0.0.28-1" + version = "0.0.34-1" }, { name = "tree-sitter-matlab", url = "acristoffers/tree-sitter-matlab", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-menhir", url = "Kerl13/tree-sitter-menhir", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-mermaid", url = "monaqa/tree-sitter-mermaid", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-meson", url = "tree-sitter-grammars/tree-sitter-meson", - version = "0.0.24-1" + version = "0.0.30-1" }, { name = "tree-sitter-mlir", url = "artagnon/tree-sitter-mlir", - version = "0.0.24-1" + version = "0.0.34-1" }, { name = "tree-sitter-muttrc", url = "neomutt/tree-sitter-muttrc", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-nasm", url = "naclsn/tree-sitter-nasm", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-nginx", url = "opa-oz/tree-sitter-nginx", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-nickel", url = "nickel-lang/tree-sitter-nickel", - version = "0.0.24-1" + version = "0.0.30-1" }, { name = "tree-sitter-nim", url = "alaviss/tree-sitter-nim", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-nim_format_string", url = "aMOPel/tree-sitter-nim-format-string", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-ninja", url = "alemuller/tree-sitter-ninja", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-nix", url = "cstrahan/tree-sitter-nix", - version = "0.0.29-1" + version = "0.0.42-1" }, { name = "tree-sitter-norg", url = "nvim-neorg/tree-sitter-norg", @@ -1562,31 +1590,31 @@ return }, { name = "tree-sitter-nqc", url = "tree-sitter-grammars/tree-sitter-nqc", - version = "0.0.24-1" + version = "0.0.30-1" }, { name = "tree-sitter-objc", url = "tree-sitter-grammars/tree-sitter-objc", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-objdump", url = "ColinKennedy/tree-sitter-objdump", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-ocaml", url = "tree-sitter/tree-sitter-ocaml", - version = "0.0.27-1" + version = "0.0.32-1" }, { name = "tree-sitter-ocaml_interface", url = "tree-sitter/tree-sitter-ocaml", - version = "0.0.27-1" + version = "0.0.33-1" }, { name = "tree-sitter-ocamllex", url = "atom-ocaml/tree-sitter-ocamllex", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-odin", url = "tree-sitter-grammars/tree-sitter-odin", - version = "0.0.25-1" + version = "0.0.30-1" }, { name = "tree-sitter-org", url = "milisims/tree-sitter-org", @@ -1598,507 +1626,527 @@ return }, { name = "tree-sitter-pascal", url = "Isopod/tree-sitter-pascal", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-passwd", url = "ath3/tree-sitter-passwd", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-pem", url = "tree-sitter-grammars/tree-sitter-pem", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-perl", url = "tree-sitter-perl/tree-sitter-perl", - version = "0.0.28-1" + version = "0.0.35-1" }, { name = "tree-sitter-php", url = "tree-sitter/tree-sitter-php", - version = "0.0.24-1" + version = "0.0.33-1" }, { name = "tree-sitter-php_only", url = "tree-sitter/tree-sitter-php", - version = "0.0.24-1" + version = "0.0.33-1" }, { name = "tree-sitter-phpdoc", url = "claytonrcarter/tree-sitter-phpdoc", - version = "0.0.24-1" + version = "0.0.30-1" }, { name = "tree-sitter-pioasm", url = "leo60228/tree-sitter-pioasm", - version = "0.0.24-1" + version = "0.0.30-1" }, { name = "tree-sitter-po", url = "tree-sitter-grammars/tree-sitter-po", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-pod", url = "tree-sitter-perl/tree-sitter-pod", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-poe_filter", url = "tree-sitter-grammars/tree-sitter-poe-filter", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-pony", url = "tree-sitter-grammars/tree-sitter-pony", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-powershell", url = "airbus-cert/tree-sitter-powershell", - version = "0.0.25-1" + version = "0.0.30-1" }, { name = "tree-sitter-printf", url = "tree-sitter-grammars/tree-sitter-printf", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-prisma", url = "victorhqc/tree-sitter-prisma", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-problog", url = "foxyseta/tree-sitter-prolog", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-prolog", url = "foxyseta/tree-sitter-prolog", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-promql", url = "MichaHoffmann/tree-sitter-promql", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-properties", url = "tree-sitter-grammars/tree-sitter-properties", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-proto", url = "treywood/tree-sitter-proto", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-prql", url = "PRQL/tree-sitter-prql", - version = "0.0.24-1" + version = "0.0.30-1" }, { name = "tree-sitter-psv", url = "tree-sitter-grammars/tree-sitter-csv", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-pug", url = "zealot128/tree-sitter-pug", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-puppet", url = "tree-sitter-grammars/tree-sitter-puppet", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-purescript", url = "postsolar/tree-sitter-purescript", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-pymanifest", url = "tree-sitter-grammars/tree-sitter-pymanifest", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-python", url = "tree-sitter/tree-sitter-python", - version = "0.0.24-1" + version = "0.0.30-1" }, { name = "tree-sitter-ql", url = "tree-sitter/tree-sitter-ql", - version = "0.0.24-1" + version = "0.0.30-1" }, { name = "tree-sitter-qmldir", url = "tree-sitter-grammars/tree-sitter-qmldir", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-qmljs", url = "yuja/tree-sitter-qmljs", - version = "0.0.24-1" + version = "0.0.30-1" }, { name = "tree-sitter-query", url = "tree-sitter-grammars/tree-sitter-query", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-r", url = "r-lib/tree-sitter-r", - version = "0.0.26-1" + version = "0.0.31-1" }, { name = "tree-sitter-racket", url = "6cdh/tree-sitter-racket", - version = "0.0.26-1" + version = "0.0.31-1" }, { name = "tree-sitter-ralph", url = "alephium/tree-sitter-ralph", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-rasi", url = "Fymyte/tree-sitter-rasi", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-rbs", url = "joker1007/tree-sitter-rbs", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-re2c", url = "tree-sitter-grammars/tree-sitter-re2c", - version = "0.0.25-1" + version = "0.0.31-1" }, { name = "tree-sitter-readline", url = "tree-sitter-grammars/tree-sitter-readline", - version = "0.0.24-1" + version = "0.0.30-1" }, { name = "tree-sitter-regex", url = "tree-sitter/tree-sitter-regex", - version = "0.0.24-1" + version = "0.0.32-1" }, { name = "tree-sitter-rego", url = "FallenAngel97/tree-sitter-rego", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-requirements", url = "tree-sitter-grammars/tree-sitter-requirements", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-rescript", url = "rescript-lang/tree-sitter-rescript", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-rnoweb", url = "bamonroe/tree-sitter-rnoweb", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-robot", url = "Hubro/tree-sitter-robot", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-robots", url = "opa-oz/tree-sitter-robots-txt", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-roc", url = "faldor20/tree-sitter-roc", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-ron", url = "tree-sitter-grammars/tree-sitter-ron", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-rst", url = "stsewd/tree-sitter-rst", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-ruby", url = "tree-sitter/tree-sitter-ruby", - version = "0.0.24-1" + version = "0.0.31-1" }, { name = "tree-sitter-rust", url = "tree-sitter/tree-sitter-rust", - version = "0.0.24-1" + version = "0.0.30-1" }, { name = "tree-sitter-scala", url = "tree-sitter/tree-sitter-scala", - version = "0.0.27-1" + version = "0.0.36-1" }, { name = "tree-sitter-scfg", url = "rockorager/tree-sitter-scfg", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-scheme", url = "6cdh/tree-sitter-scheme", - version = "0.0.26-1" + version = "0.0.31-1" }, { name = "tree-sitter-scss", url = "serenadeai/tree-sitter-scss", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-sflog", url = "aheber/tree-sitter-sfapex", - version = "0.0.26-1" + version = "0.0.34-1" }, { name = "tree-sitter-slang", url = "tree-sitter-grammars/tree-sitter-slang", - version = "0.0.25-1" + version = "0.0.32-1" }, { name = "tree-sitter-slint", url = "slint-ui/tree-sitter-slint", - version = "0.0.24-1" + version = "0.0.31-1" }, { name = "tree-sitter-smali", url = "tree-sitter-grammars/tree-sitter-smali", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-smithy", url = "indoorvivants/tree-sitter-smithy", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-snakemake", url = "osthomas/tree-sitter-snakemake", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-solidity", url = "JoranHonig/tree-sitter-solidity", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-soql", url = "aheber/tree-sitter-sfapex", - version = "0.0.26-1" + version = "0.0.35-1" }, { name = "tree-sitter-sosl", url = "aheber/tree-sitter-sfapex", - version = "0.0.26-1" + version = "0.0.34-1" }, { name = "tree-sitter-sourcepawn", url = "nilshelmig/tree-sitter-sourcepawn", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-sparql", url = "GordianDziwis/tree-sitter-sparql", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-sql", url = "derekstride/tree-sitter-sql", - version = "0.0.24-1" + version = "0.0.30-1" }, { name = "tree-sitter-squirrel", url = "tree-sitter-grammars/tree-sitter-squirrel", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-ssh_config", url = "tree-sitter-grammars/tree-sitter-ssh-config", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-starlark", url = "tree-sitter-grammars/tree-sitter-starlark", - version = "0.0.24-1" + version = "0.0.30-1" }, { name = "tree-sitter-strace", url = "sigmaSd/tree-sitter-strace", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-styled", url = "mskelton/tree-sitter-styled", - version = "0.0.24-1" + version = "0.0.30-1" }, { name = "tree-sitter-supercollider", url = "madskjeldgaard/tree-sitter-supercollider", - version = "0.0.25-1" + version = "0.0.30-1" + }, { + name = "tree-sitter-superhtml", + url = "kristoff-it/superhtml", + version = "0.0.6-1" }, { name = "tree-sitter-surface", url = "connorlay/tree-sitter-surface", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-svelte", url = "tree-sitter-grammars/tree-sitter-svelte", - version = "0.0.26-1" + version = "0.0.32-1" }, { name = "tree-sitter-swift", url = "alex-pinkus/tree-sitter-swift", - version = "0.0.26-1" + version = "0.0.35-1" }, { name = "tree-sitter-sxhkdrc", url = "RaafatTurki/tree-sitter-sxhkdrc", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-systemtap", url = "ok-ryoko/tree-sitter-systemtap", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-systemverilog", url = "zhangwwpeng/tree-sitter-systemverilog", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-t32", - url = "https://gitlab.com/xasc/tree-sitter-t32/-/archive/6182836f4128725f1e74ce986840d7317021a015.zip", - version = "0.0.24-1" + url = "https://gitlab.com/xasc/tree-sitter-t32/-/archive/0f6a5b1e031c97ebf58d3c76eadb2c6bf1e4f780.zip", + version = "0.0.30-1" }, { name = "tree-sitter-tablegen", url = "tree-sitter-grammars/tree-sitter-tablegen", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-tact", url = "tact-lang/tree-sitter-tact", - version = "0.0.25-1" + version = "0.0.33-1" }, { name = "tree-sitter-tcl", url = "tree-sitter-grammars/tree-sitter-tcl", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-teal", url = "euclidianAce/tree-sitter-teal", - version = "0.0.24-1" + version = "0.0.30-1" }, { name = "tree-sitter-templ", url = "vrischmann/tree-sitter-templ", - version = "0.0.26-1" + version = "0.0.33-1" }, { name = "tree-sitter-terraform", url = "MichaHoffmann/tree-sitter-hcl", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-textproto", url = "PorterAtGoogle/tree-sitter-textproto", - version = "0.0.24-1" + version = "0.0.31-1" }, { name = "tree-sitter-thrift", url = "tree-sitter-grammars/tree-sitter-thrift", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-tiger", url = "ambroisie/tree-sitter-tiger", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-tlaplus", url = "tlaplus-community/tree-sitter-tlaplus", - version = "0.0.26-1" + version = "0.0.34-1" }, { name = "tree-sitter-tmux", url = "Freed-Wu/tree-sitter-tmux", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-todotxt", url = "arnarg/tree-sitter-todotxt", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-toml", url = "tree-sitter-grammars/tree-sitter-toml", - version = "0.0.24-1" + version = "0.0.30-1" }, { name = "tree-sitter-tsv", url = "tree-sitter-grammars/tree-sitter-csv", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-tsx", url = "tree-sitter/tree-sitter-typescript", - version = "0.0.24-1" + version = "0.0.30-1" }, { name = "tree-sitter-turtle", url = "GordianDziwis/tree-sitter-turtle", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-twig", url = "gbprod/tree-sitter-twig", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-typescript", url = "tree-sitter/tree-sitter-typescript", - version = "0.0.24-1" + version = "0.0.30-1" }, { name = "tree-sitter-typespec", url = "happenslol/tree-sitter-typespec", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-typoscript", url = "Teddytrombone/tree-sitter-typoscript", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-typst", url = "uben0/tree-sitter-typst", - version = "0.0.24-1" + version = "0.0.31-1" }, { name = "tree-sitter-udev", url = "tree-sitter-grammars/tree-sitter-udev", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-ungrammar", url = "tree-sitter-grammars/tree-sitter-ungrammar", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-unison", url = "kylegoetz/tree-sitter-unison", - version = "0.0.24-1" + version = "0.0.31-1" }, { name = "tree-sitter-usd", url = "ColinKennedy/tree-sitter-usd", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-uxntal", url = "tree-sitter-grammars/tree-sitter-uxntal", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-v", url = "vlang/v-analyzer", - version = "0.0.27-1" + version = "0.0.34-1" }, { name = "tree-sitter-vala", url = "vala-lang/tree-sitter-vala", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-vento", url = "ventojs/tree-sitter-vento", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-verilog", - url = "tree-sitter/tree-sitter-verilog", - version = "0.0.24-1" + url = "gmlarumbe/tree-sitter-systemverilog", + version = "0.0.33-1" }, { name = "tree-sitter-vhdl", url = "jpt13653903/tree-sitter-vhdl", - version = "0.0.24-1" + version = "0.0.30-1" }, { name = "tree-sitter-vhs", url = "charmbracelet/tree-sitter-vhs", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-vim", url = "tree-sitter-grammars/tree-sitter-vim", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-vimdoc", url = "neovim/tree-sitter-vimdoc", - version = "0.0.24-1" + version = "0.0.30-1" }, { name = "tree-sitter-vrl", url = "belltoy/tree-sitter-vrl", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-vue", url = "tree-sitter-grammars/tree-sitter-vue", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-wgsl", url = "szebniok/tree-sitter-wgsl", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-wgsl_bevy", url = "tree-sitter-grammars/tree-sitter-wgsl-bevy", - version = "0.0.24-1" + version = "0.0.30-1" }, { name = "tree-sitter-wing", url = "winglang/tree-sitter-wing", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-wit", url = "liamwh/tree-sitter-wit", - version = "0.0.24-1" + version = "0.0.30-1" }, { name = "tree-sitter-xcompose", url = "tree-sitter-grammars/tree-sitter-xcompose", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-xml", url = "tree-sitter-grammars/tree-sitter-xml", - version = "0.0.24-1" + version = "0.0.30-1" + }, { + name = "tree-sitter-xresources", + url = "ValdezFOmar/tree-sitter-xresources", + version = "0.0.3-1" }, { name = "tree-sitter-yaml", url = "tree-sitter-grammars/tree-sitter-yaml", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-yang", url = "Hubro/tree-sitter-yang", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-yuck", url = "tree-sitter-grammars/tree-sitter-yuck", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-zathurarc", url = "Freed-Wu/tree-sitter-zathurarc", - version = "0.0.24-1" + version = "0.0.29-1" }, { name = "tree-sitter-zig", url = "tree-sitter-grammars/tree-sitter-zig", - version = "0.0.25-1" + version = "0.0.30-1" + }, { + name = "tree-sitter-ziggy", + url = "kristoff-it/ziggy", + version = "0.0.6-1" + }, { + name = "tree-sitter-ziggy_schema", + url = "kristoff-it/ziggy", + version = "0.0.6-1" + }, { + name = "treedoc.nvim", + url = "neo451/treedoc.nvim", + version = "1.0.0-1" }, { name = "trouble.nvim", url = "folke/trouble.nvim", @@ -2142,7 +2190,7 @@ return }, { name = "yazi.nvim", url = "mikavilpas/yazi.nvim", - version = "6.3.0-1" + version = "6.4.3-1" }, { name = "zen-mode.nvim", url = "folke/zen-mode.nvim", From 408449a59adb8c2a31c32fff606676b32ce4552a Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Mon, 4 Nov 2024 11:46:48 +0100 Subject: [PATCH 305/342] fix(rockspec): allow binary lua files. Fixes #1800 --- lua/lazy/pkg/rockspec.lua | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lua/lazy/pkg/rockspec.lua b/lua/lazy/pkg/rockspec.lua index d7ecfdb..e8ece1b 100644 --- a/lua/lazy/pkg/rockspec.lua +++ b/lua/lazy/pkg/rockspec.lua @@ -224,9 +224,10 @@ end ---@return table? function M.parse(file) local ret = {} - return pcall(function() - loadfile(file, "t", ret)() + local ok = pcall(function() + loadfile(file, nil, ret)() end) and ret or nil + return ok and ret or nil end ---@param plugin LazyPlugin From b1134ab82ee4279e31f7ddf7e34b2a99eb9b7bc9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 4 Nov 2024 10:49:21 +0000 Subject: [PATCH 306/342] chore(build): auto-generate rockspec mappings --- lua/lazy/community/_generated.lua | 176 ++++++++++++++++++------------ 1 file changed, 108 insertions(+), 68 deletions(-) diff --git a/lua/lazy/community/_generated.lua b/lua/lazy/community/_generated.lua index c105756..908d5d7 100644 --- a/lua/lazy/community/_generated.lua +++ b/lua/lazy/community/_generated.lua @@ -27,6 +27,10 @@ return name = "auto-hlsearch.nvim", url = "asiryk/auto-hlsearch.nvim", version = "1.1.0-1" + }, { + name = "autosave.nvim", + url = "brianhuster/autosave.nvim", + version = "0.1.1-1" }, { name = "banana.nvim", url = "CWood-sdf/banana.nvim", @@ -42,11 +46,11 @@ return }, { name = "better-escape.nvim", url = "max397574/better-escape.nvim", - version = "2.3.2-1" + version = "2.3.3-1" }, { name = "bufferline.nvim", url = "akinsho/bufferline.nvim", - version = "4.7.0-1" + version = "4.8.0-1" }, { name = "care.nvim", url = "max397574/care.nvim", @@ -79,6 +83,10 @@ return name = "colortils.nvim", url = "nvim-colortils/colortils.nvim", version = "1.1.0-1" + }, { + name = "command.nvim", + url = "cultab/command.nvim", + version = "0.1.1-1" }, { name = "commander.nvim", url = "FeiyouG/commander.nvim", @@ -114,11 +122,11 @@ return }, { name = "deadcolumn.nvim", url = "Bekaboo/deadcolumn.nvim", - version = "1.0.0-1" + version = "1.0.1-1" }, { name = "decasify.nvim", url = "alerque/decasify", - version = "0.7.3-1" + version = "0.8.0-1" }, { name = "decipher.nvim", url = "MisanthropicBit/decipher.nvim", @@ -154,7 +162,7 @@ return }, { name = "dropbar.nvim", url = "Bekaboo/dropbar.nvim", - version = "8.6.1-1" + version = "9.0.0-1" }, { name = "duck.nvim", url = "tamton-aquib/duck.nvim", @@ -178,7 +186,7 @@ return }, { name = "feed.nvim", url = "neo451/feed.nvim", - version = "1.5.1-1" + version = "1.6.3-1" }, { name = "feline.nvim", url = "freddiehaddad/feline.nvim", @@ -238,7 +246,7 @@ return }, { name = "git.nvim", url = "Kibadda/git.nvim", - version = "5.0.1-1" + version = "5.1.0-1" }, { name = "github-nvim-theme", url = "projekt0n/github-nvim-theme", @@ -274,7 +282,7 @@ return }, { name = "guard.nvim", url = "nvimdev/guard.nvim", - version = "1.0.1-1" + version = "1.0.3-1" }, { name = "hardhat.nvim", url = "TheSnakeWitcher/hardhat.nvim", @@ -314,7 +322,7 @@ return }, { name = "hurl.nvim", url = "jellydn/hurl.nvim", - version = "1.7.1-1" + version = "1.8.0-1" }, { name = "hydra.nvim", url = "nvimtools/hydra.nvim", @@ -330,7 +338,7 @@ return }, { name = "indent-blankline.nvim", url = "lukas-reineke/indent-blankline.nvim", - version = "3.8.2-1" + version = "3.8.3-1" }, { name = "kai.nvim", url = "Kamilcuk/kai.nvim", @@ -354,7 +362,7 @@ return }, { name = "lean.nvim", url = "Julian/lean.nvim", - version = "2024.9.2-1" + version = "2024.10.1-1" }, { name = "leetcode.nvim", url = "kawre/leetcode.nvim", @@ -367,6 +375,10 @@ return name = "live-command.nvim", url = "smjonas/live-command.nvim", version = "2.2.0-1" + }, { + name = "live-preview.nvim", + url = "brianhuster/live-preview.nvim", + version = "0.8.1-1" }, { name = "logging.nvim", url = "NTBBloodbath/logging.nvim", @@ -411,10 +423,18 @@ return name = "luarocks-build-treesitter-parser-cpp", url = "nvim-neorocks/luarocks-build-treesitter-parser-cpp", version = "2.0.4-1" + }, { + name = "mag-nvim-lsp", + url = "iguanacucumber/mag-nvim-lsp", + version = "0.1-1" + }, { + name = "mag-nvim-lua", + url = "iguanacucumber/mag-nvim-lua", + version = "0.1-1" }, { name = "magazine.nvim", url = "iguanacucumber/magazine.nvim", - version = "0.1-1" + version = "0.2.1-1" }, { name = "mapx.nvim", url = "b0o/mapx.nvim", @@ -522,7 +542,7 @@ return }, { name = "neotest-golang", url = "fredrikaverpil/neotest-golang", - version = "1.3.0-1" + version = "1.5.0-1" }, { name = "neotest-haskell", url = "mrcjkb/neotest-haskell", @@ -530,7 +550,11 @@ return }, { name = "neotest-java", url = "rcasia/neotest-java", - version = "0.17.4-1" + version = "0.17.5-1" + }, { + name = "neotest-zig", + url = "lawrence-laz/neotest-zig", + version = "1.3.0-1" }, { name = "netman.nvim", url = "miversen33/netman.nvim", @@ -546,7 +570,7 @@ return }, { name = "noice.nvim", url = "folke/noice.nvim", - version = "4.5.2-1" + version = "4.6.0-1" }, { name = "npackages.nvim", url = "diegofigs/npackages.nvim", @@ -563,6 +587,10 @@ return name = "nvim-a2-pack", url = "dfgordon/nvim-a2-pack", version = "0.2.0-1" + }, { + name = "nvim-best-practices-plugin-template", + url = "ColinKennedy/nvim-best-practices-plugin-template", + version = "1.3.1-1" }, { name = "nvim-bqf", url = "kevinhwang91/nvim-bqf", @@ -650,7 +678,7 @@ return }, { name = "nvim-possession", url = "gennaro-tedesco/nvim-possession", - version = "0.0.14-1" + version = "0.0.15-1" }, { name = "nvim-scrollview", url = "dstein64/nvim-scrollview", @@ -702,7 +730,7 @@ return }, { name = "onedarkpro.nvim", url = "olimorris/onedarkpro.nvim", - version = "2.0.0-1" + version = "2.0.1-1" }, { name = "onenord.nvim", url = "rmehri01/onenord.nvim", @@ -762,7 +790,7 @@ return }, { name = "quarry.nvim", url = "rudionrails/quarry.nvim", - version = "3.0.1-1" + version = "4.0.0-1" }, { name = "quicker.nvim", url = "stevearc/quicker.nvim", @@ -770,7 +798,7 @@ return }, { name = "rainbow-delimiters.nvim", url = "HiPhish/rainbow-delimiters.nvim", - version = "0.6.2-1" + version = "0.7.0-1" }, { name = "remember.nvim", url = "vladdoster/remember.nvim", @@ -802,7 +830,7 @@ return }, { name = "rocks-git.nvim", url = "nvim-neorocks/rocks-git.nvim", - version = "2.4.2-1" + version = "2.5.1-1" }, { name = "rocks-lazy.nvim", url = "nvim-neorocks/rocks-lazy.nvim", @@ -814,7 +842,7 @@ return }, { name = "rocks.nvim", url = "nvim-neorocks/rocks.nvim", - version = "2.40.5-1" + version = "2.41.1-1" }, { name = "rtp.nvim", url = "nvim-neorocks/rtp.nvim", @@ -822,11 +850,11 @@ return }, { name = "runt.nvim", url = "Julian/runt.nvim", - version = "2024.10.1-1" + version = "2024.10.2-1" }, { name = "rustaceanvim", url = "mrcjkb/rustaceanvim", - version = "5.13.0-1" + version = "5.13.1-1" }, { name = "schemastore.nvim", url = "b0o/SchemaStore.nvim", @@ -855,6 +883,10 @@ return name = "smart-splits.nvim", url = "mrjones2014/smart-splits.nvim", version = "1.6.0-1" + }, { + name = "snippets.nvim", + url = "Kibadda/snippets.nvim", + version = "1.0.0-1" }, { name = "sos.nvim", url = "tmillr/sos.nvim", @@ -914,7 +946,7 @@ return }, { name = "tokyonight.nvim", url = "folke/tokyonight.nvim", - version = "4.8.0-1" + version = "4.9.0-1" }, { name = "tree-sitter-ada", url = "briot/tree-sitter-ada", @@ -950,11 +982,11 @@ return }, { name = "tree-sitter-awk", url = "Beaglefoot/tree-sitter-awk", - version = "0.0.29-1" + version = "0.0.31-1" }, { name = "tree-sitter-bash", url = "tree-sitter/tree-sitter-bash", - version = "0.0.30-1" + version = "0.0.32-1" }, { name = "tree-sitter-bass", url = "vito/tree-sitter-bass", @@ -962,7 +994,7 @@ return }, { name = "tree-sitter-beancount", url = "polarmutex/tree-sitter-beancount", - version = "0.0.29-1" + version = "0.0.30-1" }, { name = "tree-sitter-bibtex", url = "latex-lsp/tree-sitter-bibtex", @@ -986,7 +1018,7 @@ return }, { name = "tree-sitter-c", url = "tree-sitter/tree-sitter-c", - version = "0.0.32-1" + version = "0.0.33-1" }, { name = "tree-sitter-c_sharp", url = "tree-sitter/tree-sitter-c-sharp", @@ -1051,6 +1083,10 @@ return name = "tree-sitter-cue", url = "eonpatapon/tree-sitter-cue", version = "0.0.29-1" + }, { + name = "tree-sitter-cylc", + url = "elliotfontaine/tree-sitter-cylc", + version = "0.0.1-1" }, { name = "tree-sitter-d", url = "gdamore/tree-sitter-d", @@ -1059,6 +1095,10 @@ return name = "tree-sitter-dart", url = "UserNobody14/tree-sitter-dart", version = "0.0.32-1" + }, { + name = "tree-sitter-desktop", + url = "ValdezFOmar/tree-sitter-desktop", + version = "0.0.4-1" }, { name = "tree-sitter-devicetree", url = "joelspadin/tree-sitter-devicetree", @@ -1094,7 +1134,7 @@ return }, { name = "tree-sitter-dtd", url = "tree-sitter-grammars/tree-sitter-xml", - version = "0.0.29-1" + version = "0.0.31-1" }, { name = "tree-sitter-earthfile", url = "glehmann/tree-sitter-earthfile", @@ -1110,7 +1150,7 @@ return }, { name = "tree-sitter-editorconfig", url = "ValdezFOmar/tree-sitter-editorconfig", - version = "0.0.34-1" + version = "0.0.37-1" }, { name = "tree-sitter-eds", url = "uyha/tree-sitter-eds", @@ -1122,7 +1162,7 @@ return }, { name = "tree-sitter-elixir", url = "elixir-lang/tree-sitter-elixir", - version = "0.0.33-1" + version = "0.0.34-1" }, { name = "tree-sitter-elm", url = "elm-tooling/tree-sitter-elm", @@ -1142,7 +1182,7 @@ return }, { name = "tree-sitter-erlang", url = "WhatsApp/tree-sitter-erlang", - version = "0.0.31-1" + version = "0.0.33-1" }, { name = "tree-sitter-facility", url = "FacilityApi/tree-sitter-facility", @@ -1178,7 +1218,7 @@ return }, { name = "tree-sitter-fortran", url = "stadelmanma/tree-sitter-fortran", - version = "0.0.32-1" + version = "0.0.34-1" }, { name = "tree-sitter-fsh", url = "mgramigna/tree-sitter-fsh", @@ -1206,7 +1246,7 @@ return }, { name = "tree-sitter-gdscript", url = "PrestonKnopp/tree-sitter-gdscript", - version = "0.0.29-1" + version = "0.0.30-1" }, { name = "tree-sitter-gdshader", url = "GodOfAvacyn/tree-sitter-gdshader", @@ -1226,7 +1266,7 @@ return }, { name = "tree-sitter-gitcommit", url = "gbprod/tree-sitter-gitcommit", - version = "0.0.32-1" + version = "0.0.33-1" }, { name = "tree-sitter-gitignore", url = "shunsambongi/tree-sitter-gitignore", @@ -1234,7 +1274,7 @@ return }, { name = "tree-sitter-gleam", url = "gleam-lang/tree-sitter-gleam", - version = "0.0.31-1" + version = "0.0.32-1" }, { name = "tree-sitter-glimmer", url = "ember-tooling/tree-sitter-glimmer", @@ -1302,7 +1342,7 @@ return }, { name = "tree-sitter-groovy", url = "murtaza64/tree-sitter-groovy", - version = "0.0.29-1" + version = "0.0.30-1" }, { name = "tree-sitter-gstlaunch", url = "tree-sitter-grammars/tree-sitter-gstlaunch", @@ -1330,11 +1370,11 @@ return }, { name = "tree-sitter-heex", url = "connorlay/tree-sitter-heex", - version = "0.0.29-1" + version = "0.0.30-1" }, { name = "tree-sitter-helm", url = "ngalaiko/tree-sitter-go-template", - version = "0.0.30-1" + version = "0.0.31-1" }, { name = "tree-sitter-hjson", url = "winston0410/tree-sitter-hjson", @@ -1394,7 +1434,7 @@ return }, { name = "tree-sitter-ispc", url = "tree-sitter-grammars/tree-sitter-ispc", - version = "0.0.29-1" + version = "0.0.30-1" }, { name = "tree-sitter-janet_simple", url = "sogaiu/tree-sitter-janet-simple", @@ -1406,7 +1446,7 @@ return }, { name = "tree-sitter-javascript", url = "tree-sitter/tree-sitter-javascript", - version = "0.0.30-1" + version = "0.0.31-1" }, { name = "tree-sitter-jq", url = "flurie/tree-sitter-jq", @@ -1442,7 +1482,7 @@ return }, { name = "tree-sitter-just", url = "IndianBoy42/tree-sitter-just", - version = "0.0.30-1" + version = "0.0.31-1" }, { name = "tree-sitter-kconfig", url = "tree-sitter-grammars/tree-sitter-kconfig", @@ -1458,7 +1498,7 @@ return }, { name = "tree-sitter-koto", url = "koto-lang/tree-sitter-koto", - version = "0.0.30-1" + version = "0.0.33-1" }, { name = "tree-sitter-kusto", url = "Willem-J-an/tree-sitter-kusto", @@ -1498,7 +1538,7 @@ return }, { name = "tree-sitter-lua", url = "tree-sitter-grammars/tree-sitter-lua", - version = "0.0.30-1" + version = "0.0.31-1" }, { name = "tree-sitter-luadoc", url = "tree-sitter-grammars/tree-sitter-luadoc", @@ -1522,11 +1562,11 @@ return }, { name = "tree-sitter-markdown", url = "tree-sitter-grammars/tree-sitter-markdown", - version = "0.0.34-1" + version = "0.0.35-1" }, { name = "tree-sitter-markdown_inline", url = "tree-sitter-grammars/tree-sitter-markdown", - version = "0.0.34-1" + version = "0.0.35-1" }, { name = "tree-sitter-matlab", url = "acristoffers/tree-sitter-matlab", @@ -1546,7 +1586,7 @@ return }, { name = "tree-sitter-mlir", url = "artagnon/tree-sitter-mlir", - version = "0.0.34-1" + version = "0.0.35-1" }, { name = "tree-sitter-muttrc", url = "neomutt/tree-sitter-muttrc", @@ -1578,7 +1618,7 @@ return }, { name = "tree-sitter-nix", url = "cstrahan/tree-sitter-nix", - version = "0.0.42-1" + version = "0.0.45-1" }, { name = "tree-sitter-norg", url = "nvim-neorg/tree-sitter-norg", @@ -1674,7 +1714,7 @@ return }, { name = "tree-sitter-powershell", url = "airbus-cert/tree-sitter-powershell", - version = "0.0.30-1" + version = "0.0.31-1" }, { name = "tree-sitter-printf", url = "tree-sitter-grammars/tree-sitter-printf", @@ -1778,7 +1818,7 @@ return }, { name = "tree-sitter-regex", url = "tree-sitter/tree-sitter-regex", - version = "0.0.32-1" + version = "0.0.33-1" }, { name = "tree-sitter-rego", url = "FallenAngel97/tree-sitter-rego", @@ -1814,15 +1854,15 @@ return }, { name = "tree-sitter-rst", url = "stsewd/tree-sitter-rst", - version = "0.0.29-1" + version = "0.0.30-1" }, { name = "tree-sitter-ruby", url = "tree-sitter/tree-sitter-ruby", - version = "0.0.31-1" + version = "0.0.32-1" }, { name = "tree-sitter-rust", url = "tree-sitter/tree-sitter-rust", - version = "0.0.30-1" + version = "0.0.33-1" }, { name = "tree-sitter-scala", url = "tree-sitter/tree-sitter-scala", @@ -1886,7 +1926,7 @@ return }, { name = "tree-sitter-sql", url = "derekstride/tree-sitter-sql", - version = "0.0.30-1" + version = "0.0.31-1" }, { name = "tree-sitter-squirrel", url = "tree-sitter-grammars/tree-sitter-squirrel", @@ -1906,7 +1946,7 @@ return }, { name = "tree-sitter-styled", url = "mskelton/tree-sitter-styled", - version = "0.0.30-1" + version = "0.0.31-1" }, { name = "tree-sitter-supercollider", url = "madskjeldgaard/tree-sitter-supercollider", @@ -1914,7 +1954,7 @@ return }, { name = "tree-sitter-superhtml", url = "kristoff-it/superhtml", - version = "0.0.6-1" + version = "0.0.9-1" }, { name = "tree-sitter-surface", url = "connorlay/tree-sitter-surface", @@ -1926,7 +1966,7 @@ return }, { name = "tree-sitter-swift", url = "alex-pinkus/tree-sitter-swift", - version = "0.0.35-1" + version = "0.0.36-1" }, { name = "tree-sitter-sxhkdrc", url = "RaafatTurki/tree-sitter-sxhkdrc", @@ -1941,8 +1981,8 @@ return version = "0.0.29-1" }, { name = "tree-sitter-t32", - url = "https://gitlab.com/xasc/tree-sitter-t32/-/archive/0f6a5b1e031c97ebf58d3c76eadb2c6bf1e4f780.zip", - version = "0.0.30-1" + url = "https://gitlab.com/xasc/tree-sitter-t32/-/archive/e455373021812abf4a0b5170caa0d882a9578bab.zip", + version = "0.0.31-1" }, { name = "tree-sitter-tablegen", url = "tree-sitter-grammars/tree-sitter-tablegen", @@ -1962,7 +2002,7 @@ return }, { name = "tree-sitter-templ", url = "vrischmann/tree-sitter-templ", - version = "0.0.33-1" + version = "0.0.34-1" }, { name = "tree-sitter-terraform", url = "MichaHoffmann/tree-sitter-hcl", @@ -1974,7 +2014,7 @@ return }, { name = "tree-sitter-thrift", url = "tree-sitter-grammars/tree-sitter-thrift", - version = "0.0.29-1" + version = "0.0.30-1" }, { name = "tree-sitter-tiger", url = "ambroisie/tree-sitter-tiger", @@ -1982,7 +2022,7 @@ return }, { name = "tree-sitter-tlaplus", url = "tlaplus-community/tree-sitter-tlaplus", - version = "0.0.34-1" + version = "0.0.36-1" }, { name = "tree-sitter-tmux", url = "Freed-Wu/tree-sitter-tmux", @@ -2054,7 +2094,7 @@ return }, { name = "tree-sitter-vala", url = "vala-lang/tree-sitter-vala", - version = "0.0.29-1" + version = "0.0.30-1" }, { name = "tree-sitter-vento", url = "ventojs/tree-sitter-vento", @@ -2066,7 +2106,7 @@ return }, { name = "tree-sitter-vhdl", url = "jpt13653903/tree-sitter-vhdl", - version = "0.0.30-1" + version = "0.0.31-1" }, { name = "tree-sitter-vhs", url = "charmbracelet/tree-sitter-vhs", @@ -2078,7 +2118,7 @@ return }, { name = "tree-sitter-vimdoc", url = "neovim/tree-sitter-vimdoc", - version = "0.0.30-1" + version = "0.0.31-1" }, { name = "tree-sitter-vrl", url = "belltoy/tree-sitter-vrl", @@ -2110,11 +2150,11 @@ return }, { name = "tree-sitter-xml", url = "tree-sitter-grammars/tree-sitter-xml", - version = "0.0.30-1" + version = "0.0.32-1" }, { name = "tree-sitter-xresources", url = "ValdezFOmar/tree-sitter-xresources", - version = "0.0.3-1" + version = "0.0.4-1" }, { name = "tree-sitter-yaml", url = "tree-sitter-grammars/tree-sitter-yaml", @@ -2146,7 +2186,7 @@ return }, { name = "treedoc.nvim", url = "neo451/treedoc.nvim", - version = "1.0.0-1" + version = "1.0.1-1" }, { name = "trouble.nvim", url = "folke/trouble.nvim", From 60cf258a9ae7fffe04bb31141141a91845158dcc Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sun, 10 Nov 2024 07:28:51 +0100 Subject: [PATCH 307/342] fix(docs): always update helptags for local plugins --- lua/lazy/manage/task/plugin.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/lazy/manage/task/plugin.lua b/lua/lazy/manage/task/plugin.lua index 69a93a5..c8a2bdb 100644 --- a/lua/lazy/manage/task/plugin.lua +++ b/lua/lazy/manage/task/plugin.lua @@ -87,7 +87,7 @@ M.build = { M.docs = { skip = function(plugin) - return not plugin._.dirty + return not plugin._.is_local and not plugin._.dirty end, run = function(self) local docs = self.plugin.dir .. "/doc" From 7967abe55752aa90532e6bb4bd4663fe27a264cb Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 11 Nov 2024 11:07:59 +0100 Subject: [PATCH 308/342] chore(main): release 11.14.2 (#1730) :robot: I have created a release *beep* *boop* --- ## [11.14.2](https://github.com/folke/lazy.nvim/compare/v11.14.1...v11.14.2) (2024-11-10) ### Bug Fixes * **bootstrap:** single forward slash. Fixes [#1747](https://github.com/folke/lazy.nvim/issues/1747) ([aca30f6](https://github.com/folke/lazy.nvim/commit/aca30f63619a7492ecdea8833a065cf83c80f764)) * **completion:** check if command string is a prefix of Lazy ([#1760](https://github.com/folke/lazy.nvim/issues/1760)) ([e9fd76e](https://github.com/folke/lazy.nvim/commit/e9fd76e239cc18da289f9a3f80f35fa16b003175)), closes [#1758](https://github.com/folke/lazy.nvim/issues/1758) * **docs:** always update helptags for local plugins ([60cf258](https://github.com/folke/lazy.nvim/commit/60cf258a9ae7fffe04bb31141141a91845158dcc)) * **luarocks:** try to install from root manifest ([#1687](https://github.com/folke/lazy.nvim/issues/1687)) ([591ef40](https://github.com/folke/lazy.nvim/commit/591ef40f2da3a26fbcc0466988cd6fe45ca68cae)) * **rocks:** add lib64 plugin directory to package.cpath ([#1717](https://github.com/folke/lazy.nvim/issues/1717)) ([80da254](https://github.com/folke/lazy.nvim/commit/80da254e645f579c28394ee0f08f75a9c9481744)) * **rockspec:** allow binary lua files. Fixes [#1800](https://github.com/folke/lazy.nvim/issues/1800) ([408449a](https://github.com/folke/lazy.nvim/commit/408449a59adb8c2a31c32fff606676b32ce4552a)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 12 ++++++++++++ lua/lazy/core/config.lua | 2 +- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index fe56f44..87f2b31 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "11.14.1" + ".": "11.14.2" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 83a3375..f76a332 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,17 @@ # Changelog +## [11.14.2](https://github.com/folke/lazy.nvim/compare/v11.14.1...v11.14.2) (2024-11-10) + + +### Bug Fixes + +* **bootstrap:** single forward slash. Fixes [#1747](https://github.com/folke/lazy.nvim/issues/1747) ([aca30f6](https://github.com/folke/lazy.nvim/commit/aca30f63619a7492ecdea8833a065cf83c80f764)) +* **completion:** check if command string is a prefix of Lazy ([#1760](https://github.com/folke/lazy.nvim/issues/1760)) ([e9fd76e](https://github.com/folke/lazy.nvim/commit/e9fd76e239cc18da289f9a3f80f35fa16b003175)), closes [#1758](https://github.com/folke/lazy.nvim/issues/1758) +* **docs:** always update helptags for local plugins ([60cf258](https://github.com/folke/lazy.nvim/commit/60cf258a9ae7fffe04bb31141141a91845158dcc)) +* **luarocks:** try to install from root manifest ([#1687](https://github.com/folke/lazy.nvim/issues/1687)) ([591ef40](https://github.com/folke/lazy.nvim/commit/591ef40f2da3a26fbcc0466988cd6fe45ca68cae)) +* **rocks:** add lib64 plugin directory to package.cpath ([#1717](https://github.com/folke/lazy.nvim/issues/1717)) ([80da254](https://github.com/folke/lazy.nvim/commit/80da254e645f579c28394ee0f08f75a9c9481744)) +* **rockspec:** allow binary lua files. Fixes [#1800](https://github.com/folke/lazy.nvim/issues/1800) ([408449a](https://github.com/folke/lazy.nvim/commit/408449a59adb8c2a31c32fff606676b32ce4552a)) + ## [11.14.1](https://github.com/folke/lazy.nvim/compare/v11.14.0...v11.14.1) (2024-07-25) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 5bb1d91..8f56d52 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -241,7 +241,7 @@ function M.hererocks() return M.options.rocks.hererocks end -M.version = "11.14.1" -- x-release-please-version +M.version = "11.14.2" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From e41dffcbafd7123c9c0ffb0bb1624b8e3d08c884 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Wed, 20 Nov 2024 09:08:44 +0100 Subject: [PATCH 309/342] docs: fix hl_group docgen --- lua/lazy/docs.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/lua/lazy/docs.lua b/lua/lazy/docs.lua index 36880a1..7791b62 100644 --- a/lua/lazy/docs.lua +++ b/lua/lazy/docs.lua @@ -131,6 +131,7 @@ function M.colors(opts) { "---", "---", "---" }, } Util.foreach(require(opts.modname).colors, function(group, link) + link = type(link) == "table" and vim.inspect(link) or link lines[#lines + 1] = { "**" .. opts.name .. group .. "**", "***" .. link .. "***", comments[group] or "" } end) return { content = M.table(lines) } From 25749704e442b5c8e2db49a6fe11260760c73d5f Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Wed, 20 Nov 2024 09:11:45 +0100 Subject: [PATCH 310/342] docs: docgen --- lua/lazy/docs.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/lazy/docs.lua b/lua/lazy/docs.lua index 7791b62..b3b4d09 100644 --- a/lua/lazy/docs.lua +++ b/lua/lazy/docs.lua @@ -131,7 +131,7 @@ function M.colors(opts) { "---", "---", "---" }, } Util.foreach(require(opts.modname).colors, function(group, link) - link = type(link) == "table" and vim.inspect(link) or link + link = type(link) == "table" and vim.inspect(link):gsub("%s+", " ") or link lines[#lines + 1] = { "**" .. opts.name .. group .. "**", "***" .. link .. "***", comments[group] or "" } end) return { content = M.table(lines) } From 8e11d208d63de693127761cd9a5621117bf6c625 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 20 Nov 2024 08:13:59 +0000 Subject: [PATCH 311/342] chore(build): auto-generate docs --- doc/lazy.nvim.txt | 61 +++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 54 insertions(+), 7 deletions(-) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index c2c9695..7722a40 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -646,24 +646,42 @@ will be added to the plugin’s spec. -- then set the below to false. This should work, but is NOT supported and will -- increase downloads a lot. filter = true, + -- rate of network related git operations (clone, fetch, checkout) + throttle = { + enabled = false, -- not enabled by default + -- max 2 ops every 5 seconds + rate = 2, + duration = 5 * 1000, -- in ms + }, + -- Time in seconds to wait before running fetch again for a plugin. + -- Repeated update/check operations will not run again until this + -- cooldown period has passed. + cooldown = 0, }, pkg = { enabled = true, cache = vim.fn.stdpath("state") .. "/lazy/pkg-cache.lua", - versions = true, -- Honor versions in pkg sources -- the first package source that is found for a plugin will be used. sources = { "lazy", - "rockspec", + "rockspec", -- will only be used when rocks.enabled is true "packspec", }, }, rocks = { + enabled = true, root = vim.fn.stdpath("data") .. "/lazy-rocks", server = "https://nvim-neorocks.github.io/rocks-binaries/", + -- use hererocks to install luarocks? + -- set to `nil` to use hererocks when luarocks is not found + -- set to `true` to always use hererocks + -- set to `false` to always use luarocks + hererocks = nil, }, dev = { - ---@type string | fun(plugin: LazyPlugin): string directory where you store your local plugin projects + -- Directory where you store your local plugin projects. If a function is used, + -- the plugin directory (e.g. `~/projects/plugin-name`) must be returned. + ---@type string | fun(plugin: LazyPlugin): string path = "~/projects", ---@type string[] plugins that match these patterns will use your local versions instead of being fetched from GitHub patterns = {}, -- For example {"folke"} @@ -715,7 +733,7 @@ will be added to the plugin’s spec. -- leave nil, to automatically select a browser depending on your OS. -- If you want to use a specific browser, you can define it here browser = nil, ---@type string? - throttle = 20, -- how frequently should the ui process render events + throttle = 1000 / 30, -- how frequently should the ui process render events custom_keys = { -- You can define custom key maps here. If present, the description will -- be shown in the help menu. @@ -730,6 +748,16 @@ will be added to the plugin’s spec. desc = "Open lazygit log", }, + ["i"] = { + function(plugin) + Util.notify(vim.inspect(plugin), { + title = "Inspect " .. plugin.name, + lang = "lua", + }) + end, + desc = "Inspect Plugin", + }, + ["t"] = { function(plugin) require("lazy.util").float_term(nil, { @@ -740,6 +768,17 @@ will be added to the plugin’s spec. }, }, }, + -- Output options for headless mode + headless = { + -- show the output from process commands like git + process = true, + -- show log messages + log = true, + -- show task start/end + task = true, + -- use ansi colors + colors = true, + }, diff = { -- diff command can be one of: -- * browser: opens the github compare view. Note that this is always mapped to as well, @@ -791,7 +830,7 @@ will be added to the plugin’s spec. enabled = true, root = vim.fn.stdpath("state") .. "/lazy/readme", files = { "README.md", "lua/**/README.md" }, - -- only generate markdown helptags for plugins that dont have docs + -- only generate markdown helptags for plugins that don't have docs skip_if_doc_exists = true, }, state = vim.fn.stdpath("state") .. "/lazy/state.json", -- state info for checker and other things @@ -837,6 +876,8 @@ If you don’t want to use a Nerd Font, you can replace the icons with Unicode s ----------------------------------------------------------------------- Highlight Group Default Group Description ----------------------- ----------------------- ----------------------- + LazyBold { bold = true } + LazyButton CursorLine LazyButtonActive Visual @@ -857,10 +898,16 @@ If you don’t want to use a Nerd Font, you can replace the icons with Unicode s LazyDir @markup.link directory + LazyError DiagnosticError task errors + LazyH1 IncSearch home button LazyH2 Bold titles + LazyInfo DiagnosticInfo task errors + + LazyItalic { italic = true } + LazyLocal Constant LazyNoCond DiagnosticWarn unloaded icon for a @@ -897,13 +944,13 @@ If you don’t want to use a Nerd Font, you can replace the icons with Unicode s LazySpecial @punctuation.special - LazyTaskError ErrorMsg task errors - LazyTaskOutput MsgArea task output LazyUrl @markup.link url LazyValue @string value of a property + + LazyWarning DiagnosticWarn task errors ----------------------------------------------------------------------- ============================================================================== From 7d0fe7615a600e72c920dd0099181ae64c96ddb0 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Wed, 20 Nov 2024 09:24:25 +0100 Subject: [PATCH 312/342] ci: docgen fixes --- lua/lazy/docs.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lua/lazy/docs.lua b/lua/lazy/docs.lua index b3b4d09..afee2d4 100644 --- a/lua/lazy/docs.lua +++ b/lua/lazy/docs.lua @@ -131,8 +131,8 @@ function M.colors(opts) { "---", "---", "---" }, } Util.foreach(require(opts.modname).colors, function(group, link) - link = type(link) == "table" and vim.inspect(link):gsub("%s+", " ") or link - lines[#lines + 1] = { "**" .. opts.name .. group .. "**", "***" .. link .. "***", comments[group] or "" } + link = type(link) == "table" and "`" .. vim.inspect(link):gsub("%s+", " ") .. "`" or "***" .. link .. "***" + lines[#lines + 1] = { "**" .. opts.name .. group .. "**", link, comments[group] or "" } end) return { content = M.table(lines) } end From 56ead98e05bb37a4ec28930a54d836d033cf00f2 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 20 Nov 2024 08:28:09 +0000 Subject: [PATCH 313/342] chore(build): auto-generate rockspec mappings --- lua/lazy/community/_generated.lua | 256 +++++++++++++++++------------- 1 file changed, 148 insertions(+), 108 deletions(-) diff --git a/lua/lazy/community/_generated.lua b/lua/lazy/community/_generated.lua index 908d5d7..5c2bed1 100644 --- a/lua/lazy/community/_generated.lua +++ b/lua/lazy/community/_generated.lua @@ -10,11 +10,15 @@ return }, { name = "adopure.nvim", url = "Willem-J-an/adopure.nvim", - version = "1.1.2-1" + version = "1.2.0-1" }, { name = "aerial.nvim", url = "stevearc/aerial.nvim", version = "2.3.1-1" + }, { + name = "age.nvim", + url = "KingMichaelPark/age.nvim", + version = "0.1.0-1" }, { name = "ai.nvim", url = "S1M0N38/ai.nvim", @@ -30,7 +34,7 @@ return }, { name = "autosave.nvim", url = "brianhuster/autosave.nvim", - version = "0.1.1-1" + version = "0.4.1-1" }, { name = "banana.nvim", url = "CWood-sdf/banana.nvim", @@ -106,7 +110,11 @@ return }, { name = "conform.nvim", url = "stevearc/conform.nvim", - version = "8.1.0-1" + version = "8.2.0-1" + }, { + name = "cursor-text-objects.nvim", + url = "ColinKennedy/cursor-text-objects.nvim", + version = "1.1.0-1" }, { name = "cybu.nvim", url = "ghillb/cybu.nvim", @@ -154,15 +162,15 @@ return }, { name = "doris.nvim", url = "jackokring/doris.nvim", - version = "0.0.0-1" + version = "0.2.0-1" }, { name = "dressing.nvim", url = "stevearc/dressing.nvim", - version = "3.0.0-1" + version = "3.1.0-1" }, { name = "dropbar.nvim", url = "Bekaboo/dropbar.nvim", - version = "9.0.0-1" + version = "9.0.1-1" }, { name = "duck.nvim", url = "tamton-aquib/duck.nvim", @@ -178,19 +186,23 @@ return }, { name = "efmls-configs-nvim", url = "creativenull/efmls-configs-nvim", - version = "1.7.0-1" + version = "1.8.0-1" }, { name = "elixir-tools.nvim", url = "elixir-tools/elixir-tools.nvim", version = "0.16.1-1" + }, { + name = "fake.nvim", + url = "Kibadda/fake.nvim", + version = "1.0.0-1" }, { name = "feed.nvim", url = "neo451/feed.nvim", - version = "1.6.3-1" + version = "1.9.1-1" }, { name = "feline.nvim", url = "freddiehaddad/feline.nvim", - version = "1.6.3-1" + version = "1.7.0-1" }, { name = "fidget.nvim", url = "j-hui/fidget.nvim", @@ -302,7 +314,7 @@ return }, { name = "heirline.nvim", url = "rebelot/heirline.nvim", - version = "1.0.6-1" + version = "1.0.7-1" }, { name = "helpview.nvim", url = "OXY2DEV/helpview.nvim", @@ -322,7 +334,7 @@ return }, { name = "hurl.nvim", url = "jellydn/hurl.nvim", - version = "1.8.0-1" + version = "2.0.0-1" }, { name = "hydra.nvim", url = "nvimtools/hydra.nvim", @@ -338,7 +350,7 @@ return }, { name = "indent-blankline.nvim", url = "lukas-reineke/indent-blankline.nvim", - version = "3.8.3-1" + version = "3.8.5-1" }, { name = "kai.nvim", url = "Kamilcuk/kai.nvim", @@ -354,7 +366,7 @@ return }, { name = "lazy.nvim", url = "folke/lazy.nvim", - version = "11.14.1-1" + version = "11.14.2-1" }, { name = "lazydev.nvim", url = "folke/lazydev.nvim", @@ -378,7 +390,7 @@ return }, { name = "live-preview.nvim", url = "brianhuster/live-preview.nvim", - version = "0.8.1-1" + version = "0.8.3-1" }, { name = "logging.nvim", url = "NTBBloodbath/logging.nvim", @@ -403,6 +415,10 @@ return name = "ltreesitter", url = "euclidianAce/ltreesitter", version = "0.0.7-1" + }, { + name = "lua-console.nvim", + url = "YaroSpace/lua-console.nvim", + version = "1.1.0-1" }, { name = "lua-obfuscator.nvim", url = "git+ssh://git@github.com/kdssoftware/lua-obfuscator.nvim.git", @@ -434,7 +450,7 @@ return }, { name = "magazine.nvim", url = "iguanacucumber/magazine.nvim", - version = "0.2.1-1" + version = "0.4.1-1" }, { name = "mapx.nvim", url = "b0o/mapx.nvim", @@ -538,7 +554,7 @@ return }, { name = "neotest-busted", url = "MisanthropicBit/neotest-busted", - version = "0.2.1-1" + version = "0.3.0-1" }, { name = "neotest-golang", url = "fredrikaverpil/neotest-golang", @@ -550,11 +566,11 @@ return }, { name = "neotest-java", url = "rcasia/neotest-java", - version = "0.17.5-1" + version = "0.17.6-1" }, { name = "neotest-zig", url = "lawrence-laz/neotest-zig", - version = "1.3.0-1" + version = "1.3.1-1" }, { name = "netman.nvim", url = "miversen33/netman.nvim", @@ -570,7 +586,7 @@ return }, { name = "noice.nvim", url = "folke/noice.nvim", - version = "4.6.0-1" + version = "4.7.2-1" }, { name = "npackages.nvim", url = "diegofigs/npackages.nvim", @@ -586,11 +602,11 @@ return }, { name = "nvim-a2-pack", url = "dfgordon/nvim-a2-pack", - version = "0.2.0-1" + version = "0.3.0-1" }, { name = "nvim-best-practices-plugin-template", url = "ColinKennedy/nvim-best-practices-plugin-template", - version = "1.3.1-1" + version = "1.3.2-1" }, { name = "nvim-bqf", url = "kevinhwang91/nvim-bqf", @@ -726,11 +742,11 @@ return }, { name = "oil.nvim", url = "stevearc/oil.nvim", - version = "2.12.2-1" + version = "2.13.0-1" }, { name = "onedarkpro.nvim", url = "olimorris/onedarkpro.nvim", - version = "2.0.1-1" + version = "2.3.0-1" }, { name = "onenord.nvim", url = "rmehri01/onenord.nvim", @@ -742,7 +758,7 @@ return }, { name = "overseer.nvim", url = "stevearc/overseer.nvim", - version = "1.4.0-1" + version = "1.5.0-1" }, { name = "oz.nvim", url = "luxluth/oz.nvim", @@ -794,7 +810,7 @@ return }, { name = "quicker.nvim", url = "stevearc/quicker.nvim", - version = "1.1.1-1" + version = "1.2.0-1" }, { name = "rainbow-delimiters.nvim", url = "HiPhish/rainbow-delimiters.nvim", @@ -810,11 +826,11 @@ return }, { name = "render-markdown.nvim", url = "MeanderingProgrammer/render-markdown.nvim", - version = "7.4.0-1" + version = "7.5.0-1" }, { name = "rest.nvim", url = "rest-nvim/rest.nvim", - version = "3.8.3-1" + version = "3.8.4-1" }, { name = "rime.nvim", url = "Freed-Wu/rime.nvim", @@ -838,11 +854,11 @@ return }, { name = "rocks-treesitter.nvim", url = "nvim-neorocks/rocks-treesitter.nvim", - version = "1.1.3-1" + version = "1.2.0-1" }, { name = "rocks.nvim", url = "nvim-neorocks/rocks.nvim", - version = "2.41.1-1" + version = "2.42.2-1" }, { name = "rtp.nvim", url = "nvim-neorocks/rtp.nvim", @@ -854,7 +870,7 @@ return }, { name = "rustaceanvim", url = "mrcjkb/rustaceanvim", - version = "5.13.1-1" + version = "5.15.0-1" }, { name = "schemastore.nvim", url = "b0o/SchemaStore.nvim", @@ -874,7 +890,7 @@ return }, { name = "sf.nvim", url = "xixiaofinland/sf.nvim", - version = "1.8.0-1" + version = "1.9.0-1" }, { name = "sg.nvim", url = "sourcegraph/sg.nvim", @@ -884,9 +900,9 @@ return url = "mrjones2014/smart-splits.nvim", version = "1.6.0-1" }, { - name = "snippets.nvim", - url = "Kibadda/snippets.nvim", - version = "1.0.0-1" + name = "snacks.nvim", + url = "folke/snacks.nvim", + version = "2.4.0-1" }, { name = "sos.nvim", url = "tmillr/sos.nvim", @@ -927,6 +943,10 @@ return name = "tangerine.nvim", url = "udayvir-singh/tangerine.nvim", version = "2.9-1" + }, { + name = "teacup.neovim", + url = "Clivern/teacup.neovim", + version = "0.0.1-1" }, { name = "telescope-zf-native.nvim", url = "natecraddock/telescope-zf-native.nvim", @@ -942,11 +962,11 @@ return }, { name = "toggleterm.nvim", url = "akinsho/toggleterm.nvim", - version = "2.12.0-1" + version = "2.13.0-1" }, { name = "tokyonight.nvim", url = "folke/tokyonight.nvim", - version = "4.9.0-1" + version = "4.10.0-1" }, { name = "tree-sitter-ada", url = "briot/tree-sitter-ada", @@ -954,7 +974,7 @@ return }, { name = "tree-sitter-agda", url = "tree-sitter/tree-sitter-agda", - version = "0.0.30-1" + version = "0.0.31-1" }, { name = "tree-sitter-angular", url = "dlvandenberg/tree-sitter-angular", @@ -986,7 +1006,7 @@ return }, { name = "tree-sitter-bash", url = "tree-sitter/tree-sitter-bash", - version = "0.0.32-1" + version = "0.0.35-1" }, { name = "tree-sitter-bass", url = "vito/tree-sitter-bass", @@ -1018,11 +1038,11 @@ return }, { name = "tree-sitter-c", url = "tree-sitter/tree-sitter-c", - version = "0.0.33-1" + version = "0.0.34-1" }, { name = "tree-sitter-c_sharp", url = "tree-sitter/tree-sitter-c-sharp", - version = "0.0.30-1" + version = "0.0.32-1" }, { name = "tree-sitter-cairo", url = "tree-sitter-grammars/tree-sitter-cairo", @@ -1066,11 +1086,11 @@ return }, { name = "tree-sitter-cpp", url = "tree-sitter/tree-sitter-cpp", - version = "0.0.32-1" + version = "0.0.35-1" }, { name = "tree-sitter-css", url = "tree-sitter/tree-sitter-css", - version = "0.0.30-1" + version = "0.0.31-1" }, { name = "tree-sitter-csv", url = "tree-sitter-grammars/tree-sitter-csv", @@ -1094,19 +1114,19 @@ return }, { name = "tree-sitter-dart", url = "UserNobody14/tree-sitter-dart", - version = "0.0.32-1" + version = "0.0.34-1" }, { name = "tree-sitter-desktop", url = "ValdezFOmar/tree-sitter-desktop", - version = "0.0.4-1" + version = "0.0.6-1" }, { name = "tree-sitter-devicetree", url = "joelspadin/tree-sitter-devicetree", - version = "0.0.31-1" + version = "0.0.32-1" }, { name = "tree-sitter-dhall", url = "jbellerb/tree-sitter-dhall", - version = "0.0.29-1" + version = "0.0.31-1" }, { name = "tree-sitter-diff", url = "the-mikedavis/tree-sitter-diff", @@ -1134,11 +1154,11 @@ return }, { name = "tree-sitter-dtd", url = "tree-sitter-grammars/tree-sitter-xml", - version = "0.0.31-1" + version = "0.0.32-1" }, { name = "tree-sitter-earthfile", url = "glehmann/tree-sitter-earthfile", - version = "0.0.31-1" + version = "0.0.33-1" }, { name = "tree-sitter-ebnf", url = "RubixDev/ebnf", @@ -1150,7 +1170,7 @@ return }, { name = "tree-sitter-editorconfig", url = "ValdezFOmar/tree-sitter-editorconfig", - version = "0.0.37-1" + version = "0.0.41-1" }, { name = "tree-sitter-eds", url = "uyha/tree-sitter-eds", @@ -1178,7 +1198,7 @@ return }, { name = "tree-sitter-embedded_template", url = "tree-sitter/tree-sitter-embedded-template", - version = "0.0.30-1" + version = "0.0.32-1" }, { name = "tree-sitter-erlang", url = "WhatsApp/tree-sitter-erlang", @@ -1210,7 +1230,7 @@ return }, { name = "tree-sitter-foam", url = "FoamScience/tree-sitter-foam", - version = "0.0.29-1" + version = "0.0.30-1" }, { name = "tree-sitter-forth", url = "AlexanderBrevig/tree-sitter-forth", @@ -1246,7 +1266,7 @@ return }, { name = "tree-sitter-gdscript", url = "PrestonKnopp/tree-sitter-gdscript", - version = "0.0.30-1" + version = "0.0.32-1" }, { name = "tree-sitter-gdshader", url = "GodOfAvacyn/tree-sitter-gdshader", @@ -1262,7 +1282,7 @@ return }, { name = "tree-sitter-gitattributes", url = "tree-sitter-grammars/tree-sitter-gitattributes", - version = "0.0.29-1" + version = "0.0.30-1" }, { name = "tree-sitter-gitcommit", url = "gbprod/tree-sitter-gitcommit", @@ -1302,7 +1322,7 @@ return }, { name = "tree-sitter-go", url = "tree-sitter/tree-sitter-go", - version = "0.0.31-1" + version = "0.0.34-1" }, { name = "tree-sitter-goctl", url = "chaozwn/tree-sitter-goctl", @@ -1338,7 +1358,7 @@ return }, { name = "tree-sitter-gren", url = "MaeBrooks/tree-sitter-gren", - version = "0.0.2-1" + version = "0.0.3-1" }, { name = "tree-sitter-groovy", url = "murtaza64/tree-sitter-groovy", @@ -1358,7 +1378,7 @@ return }, { name = "tree-sitter-haskell", url = "tree-sitter/tree-sitter-haskell", - version = "0.0.30-1" + version = "0.0.31-1" }, { name = "tree-sitter-haskell_persistent", url = "MercuryTechnologies/tree-sitter-haskell-persistent", @@ -1398,7 +1418,7 @@ return }, { name = "tree-sitter-html", url = "tree-sitter/tree-sitter-html", - version = "0.0.30-1" + version = "0.0.33-1" }, { name = "tree-sitter-html_tags", url = "nvim-neorocks/luarocks-stub", @@ -1422,7 +1442,7 @@ return }, { name = "tree-sitter-idl", url = "cathaysia/tree-sitter-idl", - version = "0.0.29-1" + version = "0.0.31-1" }, { name = "tree-sitter-ini", url = "justinmk/tree-sitter-ini", @@ -1430,7 +1450,7 @@ return }, { name = "tree-sitter-inko", url = "inko-lang/tree-sitter-inko", - version = "0.0.31-1" + version = "0.0.32-1" }, { name = "tree-sitter-ispc", url = "tree-sitter-grammars/tree-sitter-ispc", @@ -1442,11 +1462,11 @@ return }, { name = "tree-sitter-java", url = "tree-sitter/tree-sitter-java", - version = "0.0.32-1" + version = "0.0.34-1" }, { name = "tree-sitter-javascript", url = "tree-sitter/tree-sitter-javascript", - version = "0.0.31-1" + version = "0.0.33-1" }, { name = "tree-sitter-jq", url = "flurie/tree-sitter-jq", @@ -1454,11 +1474,11 @@ return }, { name = "tree-sitter-jsdoc", url = "tree-sitter/tree-sitter-jsdoc", - version = "0.0.30-1" + version = "0.0.32-1" }, { name = "tree-sitter-json", url = "tree-sitter/tree-sitter-json", - version = "0.0.30-1" + version = "0.0.33-1" }, { name = "tree-sitter-json5", url = "Joakker/tree-sitter-json5", @@ -1478,11 +1498,11 @@ return }, { name = "tree-sitter-julia", url = "tree-sitter/tree-sitter-julia", - version = "0.0.30-1" + version = "0.0.34-1" }, { name = "tree-sitter-just", url = "IndianBoy42/tree-sitter-just", - version = "0.0.31-1" + version = "0.0.33-1" }, { name = "tree-sitter-kconfig", url = "tree-sitter-grammars/tree-sitter-kconfig", @@ -1510,7 +1530,7 @@ return }, { name = "tree-sitter-latex", url = "latex-lsp/tree-sitter-latex", - version = "0.0.32-1" + version = "0.0.33-1" }, { name = "tree-sitter-ledger", url = "cbarrete/tree-sitter-ledger", @@ -1586,7 +1606,7 @@ return }, { name = "tree-sitter-mlir", url = "artagnon/tree-sitter-mlir", - version = "0.0.35-1" + version = "0.0.38-1" }, { name = "tree-sitter-muttrc", url = "neomutt/tree-sitter-muttrc", @@ -1618,7 +1638,7 @@ return }, { name = "tree-sitter-nix", url = "cstrahan/tree-sitter-nix", - version = "0.0.45-1" + version = "0.0.50-1" }, { name = "tree-sitter-norg", url = "nvim-neorg/tree-sitter-norg", @@ -1631,6 +1651,10 @@ return name = "tree-sitter-nqc", url = "tree-sitter-grammars/tree-sitter-nqc", version = "0.0.30-1" + }, { + name = "tree-sitter-nu", + url = "nushell/tree-sitter-nu", + version = "0.0.12-1" }, { name = "tree-sitter-objc", url = "tree-sitter-grammars/tree-sitter-objc", @@ -1642,11 +1666,11 @@ return }, { name = "tree-sitter-ocaml", url = "tree-sitter/tree-sitter-ocaml", - version = "0.0.32-1" + version = "0.0.34-1" }, { name = "tree-sitter-ocaml_interface", url = "tree-sitter/tree-sitter-ocaml", - version = "0.0.33-1" + version = "0.0.35-1" }, { name = "tree-sitter-ocamllex", url = "atom-ocaml/tree-sitter-ocamllex", @@ -1678,15 +1702,15 @@ return }, { name = "tree-sitter-perl", url = "tree-sitter-perl/tree-sitter-perl", - version = "0.0.35-1" + version = "0.0.36-1" }, { name = "tree-sitter-php", url = "tree-sitter/tree-sitter-php", - version = "0.0.33-1" + version = "0.0.34-1" }, { name = "tree-sitter-php_only", url = "tree-sitter/tree-sitter-php", - version = "0.0.33-1" + version = "0.0.34-1" }, { name = "tree-sitter-phpdoc", url = "claytonrcarter/tree-sitter-phpdoc", @@ -1718,7 +1742,7 @@ return }, { name = "tree-sitter-printf", url = "tree-sitter-grammars/tree-sitter-printf", - version = "0.0.29-1" + version = "0.0.31-1" }, { name = "tree-sitter-prisma", url = "victorhqc/tree-sitter-prisma", @@ -1738,7 +1762,7 @@ return }, { name = "tree-sitter-properties", url = "tree-sitter-grammars/tree-sitter-properties", - version = "0.0.29-1" + version = "0.0.30-1" }, { name = "tree-sitter-proto", url = "treywood/tree-sitter-proto", @@ -1754,7 +1778,7 @@ return }, { name = "tree-sitter-pug", url = "zealot128/tree-sitter-pug", - version = "0.0.29-1" + version = "0.0.30-1" }, { name = "tree-sitter-puppet", url = "tree-sitter-grammars/tree-sitter-puppet", @@ -1770,11 +1794,11 @@ return }, { name = "tree-sitter-python", url = "tree-sitter/tree-sitter-python", - version = "0.0.30-1" + version = "0.0.32-1" }, { name = "tree-sitter-ql", url = "tree-sitter/tree-sitter-ql", - version = "0.0.30-1" + version = "0.0.31-1" }, { name = "tree-sitter-qmldir", url = "tree-sitter-grammars/tree-sitter-qmldir", @@ -1786,11 +1810,11 @@ return }, { name = "tree-sitter-query", url = "tree-sitter-grammars/tree-sitter-query", - version = "0.0.29-1" + version = "0.0.30-1" }, { name = "tree-sitter-r", url = "r-lib/tree-sitter-r", - version = "0.0.31-1" + version = "0.0.32-1" }, { name = "tree-sitter-racket", url = "6cdh/tree-sitter-racket", @@ -1818,7 +1842,7 @@ return }, { name = "tree-sitter-regex", url = "tree-sitter/tree-sitter-regex", - version = "0.0.33-1" + version = "0.0.37-1" }, { name = "tree-sitter-rego", url = "FallenAngel97/tree-sitter-rego", @@ -1858,15 +1882,19 @@ return }, { name = "tree-sitter-ruby", url = "tree-sitter/tree-sitter-ruby", - version = "0.0.32-1" + version = "0.0.33-1" + }, { + name = "tree-sitter-runescript", + url = "2004Scape/tree-sitter-runescript", + version = "0.0.1-1" }, { name = "tree-sitter-rust", url = "tree-sitter/tree-sitter-rust", - version = "0.0.33-1" + version = "0.0.35-1" }, { name = "tree-sitter-scala", url = "tree-sitter/tree-sitter-scala", - version = "0.0.36-1" + version = "0.0.37-1" }, { name = "tree-sitter-scfg", url = "rockorager/tree-sitter-scfg", @@ -1926,7 +1954,7 @@ return }, { name = "tree-sitter-sql", url = "derekstride/tree-sitter-sql", - version = "0.0.31-1" + version = "0.0.33-1" }, { name = "tree-sitter-squirrel", url = "tree-sitter-grammars/tree-sitter-squirrel", @@ -1934,7 +1962,7 @@ return }, { name = "tree-sitter-ssh_config", url = "tree-sitter-grammars/tree-sitter-ssh-config", - version = "0.0.29-1" + version = "0.0.30-1" }, { name = "tree-sitter-starlark", url = "tree-sitter-grammars/tree-sitter-starlark", @@ -1954,7 +1982,7 @@ return }, { name = "tree-sitter-superhtml", url = "kristoff-it/superhtml", - version = "0.0.9-1" + version = "0.0.10-1" }, { name = "tree-sitter-surface", url = "connorlay/tree-sitter-surface", @@ -1963,10 +1991,14 @@ return name = "tree-sitter-svelte", url = "tree-sitter-grammars/tree-sitter-svelte", version = "0.0.32-1" + }, { + name = "tree-sitter-sway", + url = "FuelLabs/tree-sitter-sway", + version = "0.0.3-1" }, { name = "tree-sitter-swift", url = "alex-pinkus/tree-sitter-swift", - version = "0.0.36-1" + version = "0.0.38-1" }, { name = "tree-sitter-sxhkdrc", url = "RaafatTurki/tree-sitter-sxhkdrc", @@ -1981,8 +2013,8 @@ return version = "0.0.29-1" }, { name = "tree-sitter-t32", - url = "https://gitlab.com/xasc/tree-sitter-t32/-/archive/e455373021812abf4a0b5170caa0d882a9578bab.zip", - version = "0.0.31-1" + url = "https://gitlab.com/xasc/tree-sitter-t32/-/archive/476f0d8ab4b012d3b6f9598890217ada70f1a8ba.zip", + version = "0.0.34-1" }, { name = "tree-sitter-tablegen", url = "tree-sitter-grammars/tree-sitter-tablegen", @@ -1994,15 +2026,15 @@ return }, { name = "tree-sitter-tcl", url = "tree-sitter-grammars/tree-sitter-tcl", - version = "0.0.29-1" + version = "0.0.30-1" }, { name = "tree-sitter-teal", url = "euclidianAce/tree-sitter-teal", - version = "0.0.30-1" + version = "0.0.31-1" }, { name = "tree-sitter-templ", url = "vrischmann/tree-sitter-templ", - version = "0.0.34-1" + version = "0.0.37-1" }, { name = "tree-sitter-terraform", url = "MichaHoffmann/tree-sitter-hcl", @@ -2042,7 +2074,7 @@ return }, { name = "tree-sitter-tsx", url = "tree-sitter/tree-sitter-typescript", - version = "0.0.30-1" + version = "0.0.31-1" }, { name = "tree-sitter-turtle", url = "GordianDziwis/tree-sitter-turtle", @@ -2054,7 +2086,7 @@ return }, { name = "tree-sitter-typescript", url = "tree-sitter/tree-sitter-typescript", - version = "0.0.30-1" + version = "0.0.31-1" }, { name = "tree-sitter-typespec", url = "happenslol/tree-sitter-typespec", @@ -2066,11 +2098,11 @@ return }, { name = "tree-sitter-typst", url = "uben0/tree-sitter-typst", - version = "0.0.31-1" + version = "0.0.32-1" }, { name = "tree-sitter-udev", url = "tree-sitter-grammars/tree-sitter-udev", - version = "0.0.29-1" + version = "0.0.30-1" }, { name = "tree-sitter-ungrammar", url = "tree-sitter-grammars/tree-sitter-ungrammar", @@ -2078,7 +2110,7 @@ return }, { name = "tree-sitter-unison", url = "kylegoetz/tree-sitter-unison", - version = "0.0.31-1" + version = "0.0.33-1" }, { name = "tree-sitter-usd", url = "ColinKennedy/tree-sitter-usd", @@ -2090,7 +2122,7 @@ return }, { name = "tree-sitter-v", url = "vlang/v-analyzer", - version = "0.0.34-1" + version = "0.0.38-1" }, { name = "tree-sitter-vala", url = "vala-lang/tree-sitter-vala", @@ -2106,7 +2138,7 @@ return }, { name = "tree-sitter-vhdl", url = "jpt13653903/tree-sitter-vhdl", - version = "0.0.31-1" + version = "0.0.33-1" }, { name = "tree-sitter-vhs", url = "charmbracelet/tree-sitter-vhs", @@ -2130,7 +2162,7 @@ return }, { name = "tree-sitter-wgsl", url = "szebniok/tree-sitter-wgsl", - version = "0.0.29-1" + version = "0.0.31-1" }, { name = "tree-sitter-wgsl_bevy", url = "tree-sitter-grammars/tree-sitter-wgsl-bevy", @@ -2150,11 +2182,11 @@ return }, { name = "tree-sitter-xml", url = "tree-sitter-grammars/tree-sitter-xml", - version = "0.0.32-1" + version = "0.0.33-1" }, { name = "tree-sitter-xresources", url = "ValdezFOmar/tree-sitter-xresources", - version = "0.0.4-1" + version = "0.0.10-1" }, { name = "tree-sitter-yaml", url = "tree-sitter-grammars/tree-sitter-yaml", @@ -2174,19 +2206,19 @@ return }, { name = "tree-sitter-zig", url = "tree-sitter-grammars/tree-sitter-zig", - version = "0.0.30-1" + version = "0.0.31-1" }, { name = "tree-sitter-ziggy", url = "kristoff-it/ziggy", - version = "0.0.6-1" + version = "0.0.7-1" }, { name = "tree-sitter-ziggy_schema", url = "kristoff-it/ziggy", - version = "0.0.6-1" + version = "0.0.7-1" }, { name = "treedoc.nvim", url = "neo451/treedoc.nvim", - version = "1.0.1-1" + version = "1.0.3-1" }, { name = "trouble.nvim", url = "folke/trouble.nvim", @@ -2203,6 +2235,10 @@ return name = "twilight.nvim", url = "folke/twilight.nvim", version = "1.0.0-1" + }, { + name = "u.nvim", + url = "jrop/u.nvim", + version = "0.2.0-1" }, { name = "unimpaired.nvim", url = "tummetott/unimpaired.nvim", @@ -2219,6 +2255,10 @@ return name = "windline.nvim", url = "windwp/windline.nvim", version = "1.1.0-1" + }, { + name = "wormhole.nvim", + url = "NStefan002/wormhole.nvim", + version = "1.1.1-1" }, { name = "wrapping-paper.nvim", url = "benlubas/wrapping-paper.nvim", @@ -2230,7 +2270,7 @@ return }, { name = "yazi.nvim", url = "mikavilpas/yazi.nvim", - version = "6.4.3-1" + version = "6.6.0-1" }, { name = "zen-mode.nvim", url = "folke/zen-mode.nvim", From 9570a5ae7b17dcde4718c7458fd986c10f015a99 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Thu, 5 Dec 2024 09:06:28 +0100 Subject: [PATCH 314/342] feat(plugin): show error for local plugins that don't exist. Fixes #1773 --- lua/lazy/core/plugin.lua | 1 + lua/lazy/manage/init.lua | 3 +++ lua/lazy/manage/task/plugin.lua | 11 +++++++++++ 3 files changed, 15 insertions(+) diff --git a/lua/lazy/core/plugin.lua b/lua/lazy/core/plugin.lua index 97347a7..a282132 100644 --- a/lua/lazy/core/plugin.lua +++ b/lua/lazy/core/plugin.lua @@ -243,6 +243,7 @@ function M.update_state() else plugin._.is_local = true plugin._.installed = true -- local plugins are managed by the user + plugin._.installed = vim.fn.isdirectory(plugin.dir) == 1 end end diff --git a/lua/lazy/manage/init.lua b/lua/lazy/manage/init.lua index ac9ba14..e28d9dd 100644 --- a/lua/lazy/manage/init.lua +++ b/lua/lazy/manage/init.lua @@ -80,6 +80,7 @@ function M.install(opts) opts = M.opts(opts, { mode = "install" }) return M.run({ pipeline = { + "plugin.exists", "git.clone", { "git.checkout", lockfile = opts.lockfile }, "plugin.docs", @@ -108,6 +109,7 @@ function M.update(opts) opts = M.opts(opts, { mode = "update" }) return M.run({ pipeline = { + "plugin.exists", "git.origin", "git.branch", "git.fetch", @@ -147,6 +149,7 @@ function M.check(opts) opts = opts or {} return M.run({ pipeline = { + "plugin.exists", { "git.origin", check = true }, "git.fetch", "git.status", diff --git a/lua/lazy/manage/task/plugin.lua b/lua/lazy/manage/task/plugin.lua index c8a2bdb..841cc6c 100644 --- a/lua/lazy/manage/task/plugin.lua +++ b/lua/lazy/manage/task/plugin.lua @@ -97,4 +97,15 @@ M.docs = { end, } +M.exists = { + skip = function(plugin) + return not plugin._.is_local + end, + run = function(self) + if not Util.file_exists(self.plugin.dir) then + self:error("Local plugin does not exist at `" .. self.plugin.dir .. "`") + end + end, +} + return M From a44e9cd165e11fa61ccfbea2a3cc1aaa3bcfc4f1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 5 Dec 2024 09:10:16 +0100 Subject: [PATCH 315/342] chore(main): release 11.15.0 (#1835) :robot: I have created a release *beep* *boop* --- ## [11.15.0](https://github.com/folke/lazy.nvim/compare/v11.14.2...v11.15.0) (2024-12-05) ### Features * **plugin:** show error for local plugins that don't exist. Fixes [#1773](https://github.com/folke/lazy.nvim/issues/1773) ([9570a5a](https://github.com/folke/lazy.nvim/commit/9570a5ae7b17dcde4718c7458fd986c10f015a99)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 7 +++++++ lua/lazy/core/config.lua | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index 87f2b31..23b0e13 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "11.14.2" + ".": "11.15.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index f76a332..6ec2c9c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [11.15.0](https://github.com/folke/lazy.nvim/compare/v11.14.2...v11.15.0) (2024-12-05) + + +### Features + +* **plugin:** show error for local plugins that don't exist. Fixes [#1773](https://github.com/folke/lazy.nvim/issues/1773) ([9570a5a](https://github.com/folke/lazy.nvim/commit/9570a5ae7b17dcde4718c7458fd986c10f015a99)) + ## [11.14.2](https://github.com/folke/lazy.nvim/compare/v11.14.1...v11.14.2) (2024-11-10) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 8f56d52..3b32f5c 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -241,7 +241,7 @@ function M.hererocks() return M.options.rocks.hererocks end -M.version = "11.14.2" -- x-release-please-version +M.version = "11.15.0" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 3388a26417c48b15d5266d954f62a4d47fe99490 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 5 Dec 2024 08:11:36 +0000 Subject: [PATCH 316/342] chore(build): auto-generate rockspec mappings --- lua/lazy/community/_generated.lua | 184 ++++++++++++++++-------------- 1 file changed, 100 insertions(+), 84 deletions(-) diff --git a/lua/lazy/community/_generated.lua b/lua/lazy/community/_generated.lua index 5c2bed1..6cfdb3f 100644 --- a/lua/lazy/community/_generated.lua +++ b/lua/lazy/community/_generated.lua @@ -34,7 +34,7 @@ return }, { name = "autosave.nvim", url = "brianhuster/autosave.nvim", - version = "0.4.1-1" + version = "0.4.2-1" }, { name = "banana.nvim", url = "CWood-sdf/banana.nvim", @@ -54,7 +54,7 @@ return }, { name = "bufferline.nvim", url = "akinsho/bufferline.nvim", - version = "4.8.0-1" + version = "4.9.0-1" }, { name = "care.nvim", url = "max397574/care.nvim", @@ -106,7 +106,7 @@ return }, { name = "commons.nvim", url = "linrongbin16/commons.nvim", - version = "19.0.0-1" + version = "21.1.0-1" }, { name = "conform.nvim", url = "stevearc/conform.nvim", @@ -114,7 +114,7 @@ return }, { name = "cursor-text-objects.nvim", url = "ColinKennedy/cursor-text-objects.nvim", - version = "1.1.0-1" + version = "1.3.0-1" }, { name = "cybu.nvim", url = "ghillb/cybu.nvim", @@ -162,7 +162,7 @@ return }, { name = "doris.nvim", url = "jackokring/doris.nvim", - version = "0.2.0-1" + version = "0.3.2-1" }, { name = "dressing.nvim", url = "stevearc/dressing.nvim", @@ -170,7 +170,7 @@ return }, { name = "dropbar.nvim", url = "Bekaboo/dropbar.nvim", - version = "9.0.1-1" + version = "9.0.2-1" }, { name = "duck.nvim", url = "tamton-aquib/duck.nvim", @@ -198,7 +198,7 @@ return }, { name = "feed.nvim", url = "neo451/feed.nvim", - version = "1.9.1-1" + version = "1.12.0-1" }, { name = "feline.nvim", url = "freddiehaddad/feline.nvim", @@ -242,7 +242,7 @@ return }, { name = "fzfx.nvim", url = "linrongbin16/fzfx.nvim", - version = "6.4.0-1" + version = "7.0.0-1" }, { name = "galileo.nvim", url = "S1M0N38/galileo.nvim", @@ -266,7 +266,7 @@ return }, { name = "gitlinker.nvim", url = "linrongbin16/gitlinker.nvim", - version = "4.13.2-1" + version = "5.0.0-1" }, { name = "gitsigns.nvim", url = "lewis6991/gitsigns.nvim", @@ -294,7 +294,7 @@ return }, { name = "guard.nvim", url = "nvimdev/guard.nvim", - version = "1.0.3-1" + version = "1.0.4-1" }, { name = "hardhat.nvim", url = "TheSnakeWitcher/hardhat.nvim", @@ -306,7 +306,7 @@ return }, { name = "haskell-tools.nvim", url = "mrcjkb/haskell-tools.nvim", - version = "4.3.1-1" + version = "4.3.2-1" }, { name = "headlines.nvim", url = "lukas-reineke/headlines.nvim", @@ -350,7 +350,7 @@ return }, { name = "indent-blankline.nvim", url = "lukas-reineke/indent-blankline.nvim", - version = "3.8.5-1" + version = "3.8.6-1" }, { name = "kai.nvim", url = "Kamilcuk/kai.nvim", @@ -370,7 +370,7 @@ return }, { name = "lazydev.nvim", url = "folke/lazydev.nvim", - version = "1.8.0-1" + version = "1.9.0-1" }, { name = "lean.nvim", url = "Julian/lean.nvim", @@ -415,6 +415,10 @@ return name = "ltreesitter", url = "euclidianAce/ltreesitter", version = "0.0.7-1" + }, { + name = "ltreesitter-ts", + url = "FourierTransformer/ltreesitter-ts", + version = "0.0.1-1" }, { name = "lua-console.nvim", url = "YaroSpace/lua-console.nvim", @@ -431,6 +435,10 @@ return name = "lua-utils.nvim", url = "nvim-neorg/lua-utils.nvim", version = "1.0.2-1" + }, { + name = "luarocks-build-tree-sitter-cli", + url = "FourierTransformer/luarocks-build-tree-sitter-cli", + version = "0.0.2-1" }, { name = "luarocks-build-treesitter-parser", url = "nvim-neorocks/luarocks-build-treesitter-parser", @@ -530,7 +538,7 @@ return }, { name = "neorg-interim-ls", url = "benlubas/neorg-interim-ls", - version = "1.2.1-1" + version = "1.3.0-1" }, { name = "neorg-se", url = "benlubas/neorg-se", @@ -582,7 +590,7 @@ return }, { name = "no-neck-pain.nvim", url = "shortcuts/no-neck-pain.nvim", - version = "2.0.6-1" + version = "2.1.3-1" }, { name = "noice.nvim", url = "folke/noice.nvim", @@ -606,7 +614,7 @@ return }, { name = "nvim-best-practices-plugin-template", url = "ColinKennedy/nvim-best-practices-plugin-template", - version = "1.3.2-1" + version = "1.4.0-1" }, { name = "nvim-bqf", url = "kevinhwang91/nvim-bqf", @@ -826,7 +834,7 @@ return }, { name = "render-markdown.nvim", url = "MeanderingProgrammer/render-markdown.nvim", - version = "7.5.0-1" + version = "7.6.0-1" }, { name = "rest.nvim", url = "rest-nvim/rest.nvim", @@ -838,7 +846,7 @@ return }, { name = "rocks-config.nvim", url = "nvim-neorocks/rocks-config.nvim", - version = "3.0.0-1" + version = "3.1.0-1" }, { name = "rocks-dev.nvim", url = "nvim-neorocks/rocks-dev.nvim", @@ -870,7 +878,7 @@ return }, { name = "rustaceanvim", url = "mrcjkb/rustaceanvim", - version = "5.15.0-1" + version = "5.17.1-1" }, { name = "schemastore.nvim", url = "b0o/SchemaStore.nvim", @@ -898,11 +906,11 @@ return }, { name = "smart-splits.nvim", url = "mrjones2014/smart-splits.nvim", - version = "1.6.0-1" + version = "1.7.0-1" }, { name = "snacks.nvim", url = "folke/snacks.nvim", - version = "2.4.0-1" + version = "2.6.0-1" }, { name = "sos.nvim", url = "tmillr/sos.nvim", @@ -982,11 +990,11 @@ return }, { name = "tree-sitter-apex", url = "aheber/tree-sitter-sfapex", - version = "0.0.36-1" + version = "0.0.39-1" }, { name = "tree-sitter-arduino", url = "tree-sitter-grammars/tree-sitter-arduino", - version = "0.0.30-1" + version = "0.0.31-1" }, { name = "tree-sitter-asm", url = "RubixDev/tree-sitter-asm", @@ -994,7 +1002,7 @@ return }, { name = "tree-sitter-astro", url = "virchau13/tree-sitter-astro", - version = "0.0.30-1" + version = "0.0.31-1" }, { name = "tree-sitter-authzed", url = "mleonidas/tree-sitter-authzed", @@ -1006,7 +1014,7 @@ return }, { name = "tree-sitter-bash", url = "tree-sitter/tree-sitter-bash", - version = "0.0.35-1" + version = "0.0.36-1" }, { name = "tree-sitter-bass", url = "vito/tree-sitter-bass", @@ -1042,7 +1050,7 @@ return }, { name = "tree-sitter-c_sharp", url = "tree-sitter/tree-sitter-c-sharp", - version = "0.0.32-1" + version = "0.0.34-1" }, { name = "tree-sitter-cairo", url = "tree-sitter-grammars/tree-sitter-cairo", @@ -1054,7 +1062,11 @@ return }, { name = "tree-sitter-chatito", url = "tree-sitter-grammars/tree-sitter-chatito", - version = "0.0.29-1" + version = "0.0.30-1" + }, { + name = "tree-sitter-cli", + url = "FourierTransformer/tree-sitter-cli", + version = "0.24.4-1" }, { name = "tree-sitter-clojure", url = "sogaiu/tree-sitter-clojure", @@ -1154,7 +1166,7 @@ return }, { name = "tree-sitter-dtd", url = "tree-sitter-grammars/tree-sitter-xml", - version = "0.0.32-1" + version = "0.0.33-1" }, { name = "tree-sitter-earthfile", url = "glehmann/tree-sitter-earthfile", @@ -1170,7 +1182,7 @@ return }, { name = "tree-sitter-editorconfig", url = "ValdezFOmar/tree-sitter-editorconfig", - version = "0.0.41-1" + version = "0.0.44-1" }, { name = "tree-sitter-eds", url = "uyha/tree-sitter-eds", @@ -1182,7 +1194,7 @@ return }, { name = "tree-sitter-elixir", url = "elixir-lang/tree-sitter-elixir", - version = "0.0.34-1" + version = "0.0.35-1" }, { name = "tree-sitter-elm", url = "elm-tooling/tree-sitter-elm", @@ -1238,7 +1250,7 @@ return }, { name = "tree-sitter-fortran", url = "stadelmanma/tree-sitter-fortran", - version = "0.0.34-1" + version = "0.0.36-1" }, { name = "tree-sitter-fsh", url = "mgramigna/tree-sitter-fsh", @@ -1294,7 +1306,7 @@ return }, { name = "tree-sitter-gleam", url = "gleam-lang/tree-sitter-gleam", - version = "0.0.32-1" + version = "0.0.33-1" }, { name = "tree-sitter-glimmer", url = "ember-tooling/tree-sitter-glimmer", @@ -1322,7 +1334,7 @@ return }, { name = "tree-sitter-go", url = "tree-sitter/tree-sitter-go", - version = "0.0.34-1" + version = "0.0.35-1" }, { name = "tree-sitter-goctl", url = "chaozwn/tree-sitter-goctl", @@ -1334,7 +1346,7 @@ return }, { name = "tree-sitter-gomod", url = "camdencheek/tree-sitter-go-mod", - version = "0.0.30-1" + version = "0.0.31-1" }, { name = "tree-sitter-gosum", url = "tree-sitter-grammars/tree-sitter-go-sum", @@ -1350,7 +1362,7 @@ return }, { name = "tree-sitter-gpg", url = "tree-sitter-grammars/tree-sitter-gpg-config", - version = "0.0.29-1" + version = "0.0.30-1" }, { name = "tree-sitter-graphql", url = "bkegley/tree-sitter-graphql", @@ -1414,7 +1426,7 @@ return }, { name = "tree-sitter-hoon", url = "urbit-pilled/tree-sitter-hoon", - version = "0.0.29-1" + version = "0.0.30-1" }, { name = "tree-sitter-html", url = "tree-sitter/tree-sitter-html", @@ -1430,7 +1442,7 @@ return }, { name = "tree-sitter-http", url = "rest-nvim/tree-sitter-http", - version = "0.0.31-1" + version = "0.0.32-1" }, { name = "tree-sitter-hurl", url = "pfeiferj/tree-sitter-hurl", @@ -1450,7 +1462,7 @@ return }, { name = "tree-sitter-inko", url = "inko-lang/tree-sitter-inko", - version = "0.0.32-1" + version = "0.0.36-1" }, { name = "tree-sitter-ispc", url = "tree-sitter-grammars/tree-sitter-ispc", @@ -1462,7 +1474,7 @@ return }, { name = "tree-sitter-java", url = "tree-sitter/tree-sitter-java", - version = "0.0.34-1" + version = "0.0.35-1" }, { name = "tree-sitter-javascript", url = "tree-sitter/tree-sitter-javascript", @@ -1474,7 +1486,7 @@ return }, { name = "tree-sitter-jsdoc", url = "tree-sitter/tree-sitter-jsdoc", - version = "0.0.32-1" + version = "0.0.33-1" }, { name = "tree-sitter-json", url = "tree-sitter/tree-sitter-json", @@ -1498,11 +1510,11 @@ return }, { name = "tree-sitter-julia", url = "tree-sitter/tree-sitter-julia", - version = "0.0.34-1" + version = "0.0.38-1" }, { name = "tree-sitter-just", url = "IndianBoy42/tree-sitter-just", - version = "0.0.33-1" + version = "0.0.34-1" }, { name = "tree-sitter-kconfig", url = "tree-sitter-grammars/tree-sitter-kconfig", @@ -1534,7 +1546,7 @@ return }, { name = "tree-sitter-ledger", url = "cbarrete/tree-sitter-ledger", - version = "0.0.30-1" + version = "0.0.33-1" }, { name = "tree-sitter-leo", url = "r001/tree-sitter-leo", @@ -1582,11 +1594,11 @@ return }, { name = "tree-sitter-markdown", url = "tree-sitter-grammars/tree-sitter-markdown", - version = "0.0.35-1" + version = "0.0.36-1" }, { name = "tree-sitter-markdown_inline", url = "tree-sitter-grammars/tree-sitter-markdown", - version = "0.0.35-1" + version = "0.0.36-1" }, { name = "tree-sitter-matlab", url = "acristoffers/tree-sitter-matlab", @@ -1606,7 +1618,7 @@ return }, { name = "tree-sitter-mlir", url = "artagnon/tree-sitter-mlir", - version = "0.0.38-1" + version = "0.0.40-1" }, { name = "tree-sitter-muttrc", url = "neomutt/tree-sitter-muttrc", @@ -1614,7 +1626,7 @@ return }, { name = "tree-sitter-nasm", url = "naclsn/tree-sitter-nasm", - version = "0.0.29-1" + version = "0.0.30-1" }, { name = "tree-sitter-nginx", url = "opa-oz/tree-sitter-nginx", @@ -1638,7 +1650,7 @@ return }, { name = "tree-sitter-nix", url = "cstrahan/tree-sitter-nix", - version = "0.0.50-1" + version = "0.0.51-1" }, { name = "tree-sitter-norg", url = "nvim-neorg/tree-sitter-norg", @@ -1654,7 +1666,7 @@ return }, { name = "tree-sitter-nu", url = "nushell/tree-sitter-nu", - version = "0.0.12-1" + version = "0.0.20-1" }, { name = "tree-sitter-objc", url = "tree-sitter-grammars/tree-sitter-objc", @@ -1698,19 +1710,19 @@ return }, { name = "tree-sitter-pem", url = "tree-sitter-grammars/tree-sitter-pem", - version = "0.0.29-1" + version = "0.0.30-1" }, { name = "tree-sitter-perl", url = "tree-sitter-perl/tree-sitter-perl", - version = "0.0.36-1" + version = "0.0.37-1" }, { name = "tree-sitter-php", url = "tree-sitter/tree-sitter-php", - version = "0.0.34-1" + version = "0.0.35-1" }, { name = "tree-sitter-php_only", url = "tree-sitter/tree-sitter-php", - version = "0.0.34-1" + version = "0.0.35-1" }, { name = "tree-sitter-phpdoc", url = "claytonrcarter/tree-sitter-phpdoc", @@ -1730,7 +1742,7 @@ return }, { name = "tree-sitter-poe_filter", url = "tree-sitter-grammars/tree-sitter-poe-filter", - version = "0.0.29-1" + version = "0.0.30-1" }, { name = "tree-sitter-pony", url = "tree-sitter-grammars/tree-sitter-pony", @@ -1738,7 +1750,7 @@ return }, { name = "tree-sitter-powershell", url = "airbus-cert/tree-sitter-powershell", - version = "0.0.31-1" + version = "0.0.32-1" }, { name = "tree-sitter-printf", url = "tree-sitter-grammars/tree-sitter-printf", @@ -1794,7 +1806,7 @@ return }, { name = "tree-sitter-python", url = "tree-sitter/tree-sitter-python", - version = "0.0.32-1" + version = "0.0.33-1" }, { name = "tree-sitter-ql", url = "tree-sitter/tree-sitter-ql", @@ -1814,7 +1826,7 @@ return }, { name = "tree-sitter-r", url = "r-lib/tree-sitter-r", - version = "0.0.32-1" + version = "0.0.34-1" }, { name = "tree-sitter-racket", url = "6cdh/tree-sitter-racket", @@ -1862,7 +1874,7 @@ return }, { name = "tree-sitter-robot", url = "Hubro/tree-sitter-robot", - version = "0.0.29-1" + version = "0.0.32-1" }, { name = "tree-sitter-robots", url = "opa-oz/tree-sitter-robots-txt", @@ -1890,11 +1902,11 @@ return }, { name = "tree-sitter-rust", url = "tree-sitter/tree-sitter-rust", - version = "0.0.35-1" + version = "0.0.37-1" }, { name = "tree-sitter-scala", url = "tree-sitter/tree-sitter-scala", - version = "0.0.37-1" + version = "0.0.39-1" }, { name = "tree-sitter-scfg", url = "rockorager/tree-sitter-scfg", @@ -1910,7 +1922,7 @@ return }, { name = "tree-sitter-sflog", url = "aheber/tree-sitter-sfapex", - version = "0.0.34-1" + version = "0.0.36-1" }, { name = "tree-sitter-slang", url = "tree-sitter-grammars/tree-sitter-slang", @@ -1934,15 +1946,15 @@ return }, { name = "tree-sitter-solidity", url = "JoranHonig/tree-sitter-solidity", - version = "0.0.29-1" + version = "0.0.31-1" }, { name = "tree-sitter-soql", url = "aheber/tree-sitter-sfapex", - version = "0.0.35-1" + version = "0.0.37-1" }, { name = "tree-sitter-sosl", url = "aheber/tree-sitter-sfapex", - version = "0.0.34-1" + version = "0.0.36-1" }, { name = "tree-sitter-sourcepawn", url = "nilshelmig/tree-sitter-sourcepawn", @@ -1954,7 +1966,7 @@ return }, { name = "tree-sitter-sql", url = "derekstride/tree-sitter-sql", - version = "0.0.33-1" + version = "0.0.37-1" }, { name = "tree-sitter-squirrel", url = "tree-sitter-grammars/tree-sitter-squirrel", @@ -1974,7 +1986,7 @@ return }, { name = "tree-sitter-styled", url = "mskelton/tree-sitter-styled", - version = "0.0.31-1" + version = "0.0.32-1" }, { name = "tree-sitter-supercollider", url = "madskjeldgaard/tree-sitter-supercollider", @@ -1982,7 +1994,7 @@ return }, { name = "tree-sitter-superhtml", url = "kristoff-it/superhtml", - version = "0.0.10-1" + version = "0.0.11-1" }, { name = "tree-sitter-surface", url = "connorlay/tree-sitter-surface", @@ -1998,7 +2010,7 @@ return }, { name = "tree-sitter-swift", url = "alex-pinkus/tree-sitter-swift", - version = "0.0.38-1" + version = "0.0.41-1" }, { name = "tree-sitter-sxhkdrc", url = "RaafatTurki/tree-sitter-sxhkdrc", @@ -2013,8 +2025,8 @@ return version = "0.0.29-1" }, { name = "tree-sitter-t32", - url = "https://gitlab.com/xasc/tree-sitter-t32/-/archive/476f0d8ab4b012d3b6f9598890217ada70f1a8ba.zip", - version = "0.0.34-1" + url = "https://gitlab.com/xasc/tree-sitter-t32/-/archive/7c8579685e34116c61971240780b316c54be698b.zip", + version = "0.0.37-1" }, { name = "tree-sitter-tablegen", url = "tree-sitter-grammars/tree-sitter-tablegen", @@ -2030,11 +2042,11 @@ return }, { name = "tree-sitter-teal", url = "euclidianAce/tree-sitter-teal", - version = "0.0.31-1" + version = "0.0.32-1" }, { name = "tree-sitter-templ", url = "vrischmann/tree-sitter-templ", - version = "0.0.37-1" + version = "0.0.38-1" }, { name = "tree-sitter-terraform", url = "MichaHoffmann/tree-sitter-hcl", @@ -2066,7 +2078,7 @@ return }, { name = "tree-sitter-toml", url = "tree-sitter-grammars/tree-sitter-toml", - version = "0.0.30-1" + version = "0.0.31-1" }, { name = "tree-sitter-tsv", url = "tree-sitter-grammars/tree-sitter-csv", @@ -2090,7 +2102,7 @@ return }, { name = "tree-sitter-typespec", url = "happenslol/tree-sitter-typespec", - version = "0.0.29-1" + version = "0.0.31-1" }, { name = "tree-sitter-typoscript", url = "Teddytrombone/tree-sitter-typoscript", @@ -2134,11 +2146,11 @@ return }, { name = "tree-sitter-verilog", url = "gmlarumbe/tree-sitter-systemverilog", - version = "0.0.33-1" + version = "0.0.34-1" }, { name = "tree-sitter-vhdl", url = "jpt13653903/tree-sitter-vhdl", - version = "0.0.33-1" + version = "0.0.34-1" }, { name = "tree-sitter-vhs", url = "charmbracelet/tree-sitter-vhs", @@ -2146,7 +2158,7 @@ return }, { name = "tree-sitter-vim", url = "tree-sitter-grammars/tree-sitter-vim", - version = "0.0.29-1" + version = "0.0.30-1" }, { name = "tree-sitter-vimdoc", url = "neovim/tree-sitter-vimdoc", @@ -2182,15 +2194,15 @@ return }, { name = "tree-sitter-xml", url = "tree-sitter-grammars/tree-sitter-xml", - version = "0.0.33-1" + version = "0.0.34-1" }, { name = "tree-sitter-xresources", url = "ValdezFOmar/tree-sitter-xresources", - version = "0.0.10-1" + version = "0.0.12-1" }, { name = "tree-sitter-yaml", url = "tree-sitter-grammars/tree-sitter-yaml", - version = "0.0.29-1" + version = "0.0.30-1" }, { name = "tree-sitter-yang", url = "Hubro/tree-sitter-yang", @@ -2206,7 +2218,7 @@ return }, { name = "tree-sitter-zig", url = "tree-sitter-grammars/tree-sitter-zig", - version = "0.0.31-1" + version = "0.0.32-1" }, { name = "tree-sitter-ziggy", url = "kristoff-it/ziggy", @@ -2250,11 +2262,15 @@ return }, { name = "which-key.nvim", url = "folke/which-key.nvim", - version = "3.13.3-1" + version = "3.14.1-1" }, { name = "windline.nvim", url = "windwp/windline.nvim", version = "1.1.0-1" + }, { + name = "winmove.nvim", + url = "MisanthropicBit/winmove.nvim", + version = "0.1.0-1" }, { name = "wormhole.nvim", url = "NStefan002/wormhole.nvim", @@ -2270,7 +2286,7 @@ return }, { name = "yazi.nvim", url = "mikavilpas/yazi.nvim", - version = "6.6.0-1" + version = "6.6.1-1" }, { name = "zen-mode.nvim", url = "folke/zen-mode.nvim", @@ -2278,5 +2294,5 @@ return }, { name = "zk-nvim", url = "zk-org/zk-nvim", - version = "0.1.0-1" + version = "0.1.1-1" } } \ No newline at end of file From ee64abc76be2b237b95d241a924b0323005b868a Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Fri, 6 Dec 2024 20:28:50 +0100 Subject: [PATCH 317/342] feat(plugin): added support for virtual plugins. Closes #1836 --- lua/lazy/core/loader.lua | 8 ++++++-- lua/lazy/core/meta.lua | 2 ++ lua/lazy/core/plugin.lua | 6 ++++-- lua/lazy/core/util.lua | 2 +- lua/lazy/types.lua | 1 + 5 files changed, 14 insertions(+), 5 deletions(-) diff --git a/lua/lazy/core/loader.lua b/lua/lazy/core/loader.lua index c6a7271..1501efd 100644 --- a/lua/lazy/core/loader.lua +++ b/lua/lazy/core/loader.lua @@ -341,7 +341,9 @@ function M._load(plugin, reason, opts) Util.track({ plugin = plugin.name, start = reason.start }) Handler.disable(plugin) - M.add_to_rtp(plugin) + if not plugin.virtual then + M.add_to_rtp(plugin) + end if plugin._.pkg and plugin._.pkg.source == "rockspec" then M.add_to_luapath(plugin) @@ -353,7 +355,9 @@ function M._load(plugin, reason, opts) end, "Failed to load deps for " .. plugin.name) end - M.packadd(plugin.dir) + if not plugin.virtual then + M.packadd(plugin.dir) + end if plugin.config or plugin.opts then M.config(plugin) end diff --git a/lua/lazy/core/meta.lua b/lua/lazy/core/meta.lua index 6e781a0..abb2508 100644 --- a/lua/lazy/core/meta.lua +++ b/lua/lazy/core/meta.lua @@ -213,6 +213,8 @@ function M:_rebuild(name) plugin.dir = super.dir if plugin.dir then plugin.dir = Util.norm(plugin.dir) + elseif super.virtual then + plugin.dir = Util.norm("/dev/null/" .. plugin.name) else if plugin.dev == nil and plugin.url then for _, pattern in ipairs(Config.options.dev.patterns) do diff --git a/lua/lazy/core/plugin.lua b/lua/lazy/core/plugin.lua index a282132..37d1a8f 100644 --- a/lua/lazy/core/plugin.lua +++ b/lua/lazy/core/plugin.lua @@ -237,12 +237,14 @@ function M.update_state() or plugin.cmd plugin.lazy = lazy and true or false end - if plugin.dir:find(Config.options.root, 1, true) == 1 then + if plugin.virtual then + plugin._.is_local = true + plugin._.installed = true -- local plugins are managed by the user + elseif plugin.dir:find(Config.options.root, 1, true) == 1 then plugin._.installed = installed[plugin.name] ~= nil installed[plugin.name] = nil else plugin._.is_local = true - plugin._.installed = true -- local plugins are managed by the user plugin._.installed = vim.fn.isdirectory(plugin.dir) == 1 end end diff --git a/lua/lazy/core/util.lua b/lua/lazy/core/util.lua index bdd42dd..9db7f14 100644 --- a/lua/lazy/core/util.lua +++ b/lua/lazy/core/util.lua @@ -270,7 +270,7 @@ function M.get_unloaded_rtp(modname, opts) local Config = require("lazy.core.config") if Config.spec then for _, plugin in pairs(Config.spec.plugins) do - if not (plugin._.loaded or plugin.module == false) then + if not (plugin._.loaded or plugin.module == false or plugin.virtual) then if norm == M.normname(plugin.name) then table.insert(rtp, 1, plugin.dir) else diff --git a/lua/lazy/types.lua b/lua/lazy/types.lua index 5921169..0dbba9a 100644 --- a/lua/lazy/types.lua +++ b/lua/lazy/types.lua @@ -60,6 +60,7 @@ ---@field priority? number Only useful for lazy=false plugins to force loading certain plugins first. Default priority is 50 ---@field dev? boolean If set, then link to the respective folder under your ~/projects ---@field rocks? string[] +---@field virtual? boolean virtual plugins won't be installed or added to the rtp. ---@class LazyPlugin: LazyPluginBase,LazyPluginHandlers,LazyPluginHooks,LazyPluginRef ---@field dependencies? string[] From b08dba8107b5bdaaa007f18cf6c0cc0e0fd576aa Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 7 Dec 2024 07:57:03 +0100 Subject: [PATCH 318/342] fix(render): show correct key for home. Fixes #1796 --- lua/lazy/view/render.lua | 2 -- 1 file changed, 2 deletions(-) diff --git a/lua/lazy/view/render.lua b/lua/lazy/view/render.lua index e1eec6c..16c6659 100644 --- a/lua/lazy/view/render.lua +++ b/lua/lazy/view/render.lua @@ -144,8 +144,6 @@ function M:title() if mode.name == "home" then if self.view.state.mode == "home" then title = " lazy.nvim " .. Config.options.ui.icons.lazy - else - title = " lazy.nvim (H) " end end From 656cf4309396b7b8b62984e923bf8d8a0013f7d7 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 7 Dec 2024 11:52:43 +0100 Subject: [PATCH 319/342] fix(plugin): don't check if dir exists for virtual plugins --- lua/lazy/manage/task/plugin.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/lazy/manage/task/plugin.lua b/lua/lazy/manage/task/plugin.lua index 841cc6c..cec9762 100644 --- a/lua/lazy/manage/task/plugin.lua +++ b/lua/lazy/manage/task/plugin.lua @@ -99,7 +99,7 @@ M.docs = { M.exists = { skip = function(plugin) - return not plugin._.is_local + return not plugin._.is_local or plugin.virtual end, run = function(self) if not Util.file_exists(self.plugin.dir) then From 014d1d6d78df4e58f962158e6e00261d8632612c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 7 Dec 2024 21:44:18 +0100 Subject: [PATCH 320/342] chore(main): release 11.16.0 (#1838) :robot: I have created a release *beep* *boop* --- ## [11.16.0](https://github.com/folke/lazy.nvim/compare/v11.15.0...v11.16.0) (2024-12-07) ### Features * **plugin:** added support for virtual plugins. Closes [#1836](https://github.com/folke/lazy.nvim/issues/1836) ([ee64abc](https://github.com/folke/lazy.nvim/commit/ee64abc76be2b237b95d241a924b0323005b868a)) ### Bug Fixes * **plugin:** don't check if dir exists for virtual plugins ([656cf43](https://github.com/folke/lazy.nvim/commit/656cf4309396b7b8b62984e923bf8d8a0013f7d7)) * **render:** show correct key for home. Fixes [#1796](https://github.com/folke/lazy.nvim/issues/1796) ([b08dba8](https://github.com/folke/lazy.nvim/commit/b08dba8107b5bdaaa007f18cf6c0cc0e0fd576aa)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 13 +++++++++++++ lua/lazy/core/config.lua | 2 +- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index 23b0e13..228572b 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "11.15.0" + ".": "11.16.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 6ec2c9c..009055b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [11.16.0](https://github.com/folke/lazy.nvim/compare/v11.15.0...v11.16.0) (2024-12-07) + + +### Features + +* **plugin:** added support for virtual plugins. Closes [#1836](https://github.com/folke/lazy.nvim/issues/1836) ([ee64abc](https://github.com/folke/lazy.nvim/commit/ee64abc76be2b237b95d241a924b0323005b868a)) + + +### Bug Fixes + +* **plugin:** don't check if dir exists for virtual plugins ([656cf43](https://github.com/folke/lazy.nvim/commit/656cf4309396b7b8b62984e923bf8d8a0013f7d7)) +* **render:** show correct key for home. Fixes [#1796](https://github.com/folke/lazy.nvim/issues/1796) ([b08dba8](https://github.com/folke/lazy.nvim/commit/b08dba8107b5bdaaa007f18cf6c0cc0e0fd576aa)) + ## [11.15.0](https://github.com/folke/lazy.nvim/compare/v11.14.2...v11.15.0) (2024-12-05) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 3b32f5c..9a49aaa 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -241,7 +241,7 @@ function M.hererocks() return M.options.rocks.hererocks end -M.version = "11.15.0" -- x-release-please-version +M.version = "11.16.0" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 703be1dda35e142e76e94e7503cf67d6b98a1d35 Mon Sep 17 00:00:00 2001 From: Daemon Date: Mon, 9 Dec 2024 13:40:21 -0800 Subject: [PATCH 321/342] fix(types): ensure all fields for `LazyPluginSpec` are optional (#1843) > After updating lua_ls to [v3.13.3](https://github.com/LuaLS/lua-language-server/releases/tag/3.13.3) noticed my plugin scripts using `@type LazyPluginSpec` now have `missing-fields` warnings. It seems they have changed how `missing-fields` diagnostics work with inherited types: https://github.com/LuaLS/lua-language-server/commit/7b2d58537fea87d1fefec894ac17b3bd73681e63. Duplicate offending fields as optional in type `LazyPluginSpec` Closes: #1842 --- lua/lazy/types.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lua/lazy/types.lua b/lua/lazy/types.lua index 0dbba9a..6e406bb 100644 --- a/lua/lazy/types.lua +++ b/lua/lazy/types.lua @@ -75,6 +75,8 @@ ---@field module? false ---@class LazyPluginSpec: LazyPluginBase,LazyPluginSpecHandlers,LazyPluginHooks,LazyPluginRef +---@field name? string display name and name used for plugin config files +---@field dir? string ---@field dependencies? string|string[]|LazyPluginSpec[] ---@field specs? string|string[]|LazyPluginSpec[] From b97ee167f594c69656f985f919a00435a7bc7045 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 10 Dec 2024 05:18:15 +0000 Subject: [PATCH 322/342] chore(build): auto-generate docs --- doc/lazy.nvim.txt | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index 7722a40..68bbee4 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -540,9 +540,7 @@ function. keys = { { "ft", "Neotree toggle", desc = "NeoTree" }, }, - config = function() - require("neo-tree").setup() - end, + opts = {}, } < From 7c493713bc2cb392706866eeba53aaef6c8e9fc6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 10 Dec 2024 20:12:21 +0100 Subject: [PATCH 323/342] chore(main): release 11.16.1 (#1844) :robot: I have created a release *beep* *boop* --- ## [11.16.1](https://github.com/folke/lazy.nvim/compare/v11.16.0...v11.16.1) (2024-12-09) ### Bug Fixes * **types:** ensure all fields for `LazyPluginSpec` are optional ([#1843](https://github.com/folke/lazy.nvim/issues/1843)) ([703be1d](https://github.com/folke/lazy.nvim/commit/703be1dda35e142e76e94e7503cf67d6b98a1d35)), closes [#1842](https://github.com/folke/lazy.nvim/issues/1842) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 7 +++++++ lua/lazy/core/config.lua | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index 228572b..b82a64f 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "11.16.0" + ".": "11.16.1" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 009055b..f65347f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [11.16.1](https://github.com/folke/lazy.nvim/compare/v11.16.0...v11.16.1) (2024-12-09) + + +### Bug Fixes + +* **types:** ensure all fields for `LazyPluginSpec` are optional ([#1843](https://github.com/folke/lazy.nvim/issues/1843)) ([703be1d](https://github.com/folke/lazy.nvim/commit/703be1dda35e142e76e94e7503cf67d6b98a1d35)), closes [#1842](https://github.com/folke/lazy.nvim/issues/1842) + ## [11.16.0](https://github.com/folke/lazy.nvim/compare/v11.15.0...v11.16.0) (2024-12-07) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 9a49aaa..335b664 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -241,7 +241,7 @@ function M.hererocks() return M.options.rocks.hererocks end -M.version = "11.16.0" -- x-release-please-version +M.version = "11.16.1" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 805b85c2ea3bd6f9506ef22cbd6e3a39172b5b08 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Fri, 13 Dec 2024 19:56:52 +0100 Subject: [PATCH 324/342] fix(meta): when a plugin is both optional and disabled, then just delete it from the list --- lua/lazy/core/meta.lua | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lua/lazy/core/meta.lua b/lua/lazy/core/meta.lua index abb2508..88263a2 100644 --- a/lua/lazy/core/meta.lua +++ b/lua/lazy/core/meta.lua @@ -305,7 +305,11 @@ function M:fix_disabled() for _, plugin in pairs(self.plugins) do if plugin.enabled == false or (type(plugin.enabled) == "function" and not plugin.enabled()) then changes = changes + 1 - self:disable(plugin) + if plugin.optional then + self:del(plugin.name) + else + self:disable(plugin) + end end end self:rebuild() From 7e6c863bc7563efbdd757a310d17ebc95166cef3 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 13 Dec 2024 19:58:17 +0100 Subject: [PATCH 325/342] chore(main): release 11.16.2 (#1854) :robot: I have created a release *beep* *boop* --- ## [11.16.2](https://github.com/folke/lazy.nvim/compare/v11.16.1...v11.16.2) (2024-12-13) ### Bug Fixes * **meta:** when a plugin is both optional and disabled, then just delete it from the list ([805b85c](https://github.com/folke/lazy.nvim/commit/805b85c2ea3bd6f9506ef22cbd6e3a39172b5b08)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 7 +++++++ lua/lazy/core/config.lua | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index b82a64f..d5dbcb3 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "11.16.1" + ".": "11.16.2" } diff --git a/CHANGELOG.md b/CHANGELOG.md index f65347f..015288e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [11.16.2](https://github.com/folke/lazy.nvim/compare/v11.16.1...v11.16.2) (2024-12-13) + + +### Bug Fixes + +* **meta:** when a plugin is both optional and disabled, then just delete it from the list ([805b85c](https://github.com/folke/lazy.nvim/commit/805b85c2ea3bd6f9506ef22cbd6e3a39172b5b08)) + ## [11.16.1](https://github.com/folke/lazy.nvim/compare/v11.16.0...v11.16.1) (2024-12-09) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 335b664..2ae4079 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -241,7 +241,7 @@ function M.hererocks() return M.options.rocks.hererocks end -M.version = "11.16.1" -- x-release-please-version +M.version = "11.16.2" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From a9c660d6ef1b396869d3d951760aa7a3dbfe575f Mon Sep 17 00:00:00 2001 From: Shihua Zeng <76579810+Bekaboo@users.noreply.github.com> Date: Sat, 4 Jan 2025 22:40:44 -0700 Subject: [PATCH 326/342] feat(config,render): allow customizing the debug icon (#1863) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Description lazy.nvim allows users to configure all icons except for the debug icon. This PR enables user to configure the debug icon with `ui.icons.debug` ## Screenshots Before: ![image](https://github.com/user-attachments/assets/42b02fd9-58e6-4ebc-a1a7-c5e91f07a11a) After (with config `{ ui = { icons = { debug = ' ' } } }`): ![image](https://github.com/user-attachments/assets/3ade5392-a988-4a10-86fc-f52b41a690c5) --- lua/lazy/core/config.lua | 1 + lua/lazy/view/render.lua | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 2ae4079..9939763 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -96,6 +96,7 @@ M.defaults = { icons = { cmd = " ", config = "", + debug = "●", event = " ", favorite = " ", ft = " ", diff --git a/lua/lazy/view/render.lua b/lua/lazy/view/render.lua index 16c6659..8c49a1b 100644 --- a/lua/lazy/view/render.lua +++ b/lua/lazy/view/render.lua @@ -759,7 +759,7 @@ function M:debug() ---@type string[] plugins = vim.tbl_values(plugins) table.sort(plugins) - self:append("● ", "LazySpecial", { indent = 2 }) + self:append(Config.options.ui.icons.debug, "LazySpecial", { indent = 2 }) if handler_type == "keys" then for k, v in pairs(Config.plugins[plugins[1]]._.handlers.keys) do if k == value then From 72aa3a2624be5dc240646084f7b6a38eb99eb2ce Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 5 Jan 2025 05:41:31 +0000 Subject: [PATCH 327/342] chore(build): auto-generate docs --- doc/lazy.nvim.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index 68bbee4..6870e89 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -706,6 +706,7 @@ will be added to the plugin’s spec. icons = { cmd = " ", config = "", + debug = "●", event = " ", favorite = " ", ft = " ", From 4df5c4d65a3bbf801edd9ec55fb1ae55cfa72dd0 Mon Sep 17 00:00:00 2001 From: Eduardo Bray Date: Mon, 6 Jan 2025 17:14:06 -0300 Subject: [PATCH 328/342] fix(config): add missing space on the default debug icon (#1879) ## Description Adds the missing space from a9c660d ## Screenshots Current: ![imagen](https://github.com/user-attachments/assets/9a3a1a0c-43ad-49f3-8b39-b3250f53ec40) After: ![imagen](https://github.com/user-attachments/assets/3b3d4dfd-3c03-4db9-8f61-d2bd4f9ed22d) --- lua/lazy/core/config.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 9939763..49339e5 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -96,7 +96,7 @@ M.defaults = { icons = { cmd = " ", config = "", - debug = "●", + debug = "● ", event = " ", favorite = " ", ft = " ", From d8f26efd456190241afd1b0f5235fe6fdba13d4a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 6 Jan 2025 20:14:50 +0000 Subject: [PATCH 329/342] chore(build): auto-generate docs --- doc/lazy.nvim.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index 6870e89..2ae3b36 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -706,7 +706,7 @@ will be added to the plugin’s spec. icons = { cmd = " ", config = "", - debug = "●", + debug = "● ", event = " ", favorite = " ", ft = " ", From 4f30c61b64d3fb8a04fd6660989b09241aa1b127 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Thu, 30 Jan 2025 20:13:53 +0100 Subject: [PATCH 330/342] ci: check --- lua/lazy/core/meta.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lua/lazy/core/meta.lua b/lua/lazy/core/meta.lua index 88263a2..58397fd 100644 --- a/lua/lazy/core/meta.lua +++ b/lua/lazy/core/meta.lua @@ -14,6 +14,9 @@ local Util = require("lazy.core.util") ---@field pkgs table local M = {} +if false then + dd("foo") +end ---@param spec LazySpecLoader ---@return LazyMeta function M.new(spec) From 5586fda88de57b33b723f75d5327b36165663077 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Thu, 30 Jan 2025 20:14:57 +0100 Subject: [PATCH 331/342] ci: remove debug --- lua/lazy/core/meta.lua | 3 --- 1 file changed, 3 deletions(-) diff --git a/lua/lazy/core/meta.lua b/lua/lazy/core/meta.lua index 58397fd..88263a2 100644 --- a/lua/lazy/core/meta.lua +++ b/lua/lazy/core/meta.lua @@ -14,9 +14,6 @@ local Util = require("lazy.core.util") ---@field pkgs table local M = {} -if false then - dd("foo") -end ---@param spec LazySpecLoader ---@return LazyMeta function M.new(spec) From 7527af40ddd4a93a02911be570b32609b9d4ea53 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 30 Jan 2025 19:19:03 +0000 Subject: [PATCH 332/342] chore(build): auto-generate rockspec mappings --- lua/lazy/community/_generated.lua | 504 +++++++++++++++++------------- 1 file changed, 292 insertions(+), 212 deletions(-) diff --git a/lua/lazy/community/_generated.lua b/lua/lazy/community/_generated.lua index 6cfdb3f..d3ba8f6 100644 --- a/lua/lazy/community/_generated.lua +++ b/lua/lazy/community/_generated.lua @@ -10,11 +10,11 @@ return }, { name = "adopure.nvim", url = "Willem-J-an/adopure.nvim", - version = "1.2.0-1" + version = "2.1.0-1" }, { name = "aerial.nvim", url = "stevearc/aerial.nvim", - version = "2.3.1-1" + version = "2.4.0-1" }, { name = "age.nvim", url = "KingMichaelPark/age.nvim", @@ -22,7 +22,7 @@ return }, { name = "ai.nvim", url = "S1M0N38/ai.nvim", - version = "1.3.0-1" + version = "1.5.0-1" }, { name = "astral.nvim", url = "rootiest/astral.nvim", @@ -35,10 +35,14 @@ return name = "autosave.nvim", url = "brianhuster/autosave.nvim", version = "0.4.2-1" + }, { + name = "avante.nvim", + url = "yetone/avante.nvim", + version = "0.0.15-1" }, { name = "banana.nvim", url = "CWood-sdf/banana.nvim", - version = "0.1.0-1" + version = "0.2.0-1" }, { name = "bars-n-lines.nvim", url = "OXY2DEV/bars-N-lines.nvim", @@ -54,7 +58,7 @@ return }, { name = "bufferline.nvim", url = "akinsho/bufferline.nvim", - version = "4.9.0-1" + version = "4.9.1-1" }, { name = "care.nvim", url = "max397574/care.nvim", @@ -62,7 +66,11 @@ return }, { name = "ccc.nvim", url = "uga-rosa/ccc.nvim", - version = "1.6.0-1" + version = "2.0.3-1" + }, { + name = "chatml.nvim", + url = "S1M0N38/chatml.nvim", + version = "1.0.0-1" }, { name = "ci-template.nvim", url = "linrongbin16/ci-template.nvim", @@ -74,7 +82,7 @@ return }, { name = "cmp-rg", url = "lukas-reineke/cmp-rg", - version = "1.3.9-1" + version = "1.3.11-1" }, { name = "colorbox.nvim", url = "linrongbin16/colorbox.nvim", @@ -86,7 +94,7 @@ return }, { name = "colortils.nvim", url = "nvim-colortils/colortils.nvim", - version = "1.1.0-1" + version = "1.2.0-1" }, { name = "command.nvim", url = "cultab/command.nvim", @@ -106,11 +114,23 @@ return }, { name = "commons.nvim", url = "linrongbin16/commons.nvim", - version = "21.1.0-1" + version = "26.0.0-1" }, { name = "conform.nvim", url = "stevearc/conform.nvim", - version = "8.2.0-1" + version = "8.4.0-1" + }, { + name = "coop.nvim", + url = "gregorias/coop.nvim", + version = "1.0.1-0" + }, { + name = "copy-diagnostics.nvim", + url = "NickStafford2/copy-diagnostics.nvim", + version = "main-1" + }, { + name = "cord.nvim", + url = "vyfor/cord.nvim", + version = "2.0.0beta-9" }, { name = "cursor-text-objects.nvim", url = "ColinKennedy/cursor-text-objects.nvim", @@ -122,7 +142,7 @@ return }, { name = "dante.nvim", url = "S1M0N38/dante.nvim", - version = "1.2.0-1" + version = "1.3.1-1" }, { name = "daylight.nvim", url = "NTBBloodbath/daylight.nvim", @@ -159,18 +179,26 @@ return name = "donut.nvim", url = "NStefan002/donut.nvim", version = "2.2.1-1" + }, { + name = "donutlify.nvim", + url = "NStefan002/donutlify.nvim", + version = "1.0.0-1" }, { name = "doris.nvim", url = "jackokring/doris.nvim", version = "0.3.2-1" + }, { + name = "down.nvim", + url = "clpi/down.nvim", + version = "master-1" }, { name = "dressing.nvim", url = "stevearc/dressing.nvim", - version = "3.1.0-1" + version = "3.1.1-1" }, { name = "dropbar.nvim", url = "Bekaboo/dropbar.nvim", - version = "9.0.2-1" + version = "11.0.0-1" }, { name = "duck.nvim", url = "tamton-aquib/duck.nvim", @@ -186,23 +214,23 @@ return }, { name = "efmls-configs-nvim", url = "creativenull/efmls-configs-nvim", - version = "1.8.0-1" + version = "1.9.0-1" }, { name = "elixir-tools.nvim", url = "elixir-tools/elixir-tools.nvim", - version = "0.16.1-1" + version = "0.17.0-1" }, { name = "fake.nvim", url = "Kibadda/fake.nvim", - version = "1.0.0-1" + version = "4.0.1-1" }, { name = "feed.nvim", url = "neo451/feed.nvim", - version = "1.12.0-1" + version = "1.16.4-1" }, { name = "feline.nvim", url = "freddiehaddad/feline.nvim", - version = "1.7.0-1" + version = "1.7.1-1" }, { name = "fidget.nvim", url = "j-hui/fidget.nvim", @@ -242,7 +270,7 @@ return }, { name = "fzfx.nvim", url = "linrongbin16/fzfx.nvim", - version = "7.0.0-1" + version = "8.0.0-1" }, { name = "galileo.nvim", url = "S1M0N38/galileo.nvim", @@ -262,11 +290,11 @@ return }, { name = "github-nvim-theme", url = "projekt0n/github-nvim-theme", - version = "1.0.2-1" + version = "1.1.2-1" }, { name = "gitlinker.nvim", url = "linrongbin16/gitlinker.nvim", - version = "5.0.0-1" + version = "5.0.1-1" }, { name = "gitsigns.nvim", url = "lewis6991/gitsigns.nvim", @@ -294,7 +322,7 @@ return }, { name = "guard.nvim", url = "nvimdev/guard.nvim", - version = "1.0.4-1" + version = "2.1.2-1" }, { name = "hardhat.nvim", url = "TheSnakeWitcher/hardhat.nvim", @@ -306,11 +334,11 @@ return }, { name = "haskell-tools.nvim", url = "mrcjkb/haskell-tools.nvim", - version = "4.3.2-1" + version = "4.4.0-1" }, { name = "headlines.nvim", url = "lukas-reineke/headlines.nvim", - version = "4.0.2-1" + version = "5.0.0-1" }, { name = "heirline.nvim", url = "rebelot/heirline.nvim", @@ -326,7 +354,7 @@ return }, { name = "hlchunk.nvim", url = "shellRaining/hlchunk.nvim", - version = "1.1.0-1" + version = "1.3.0-1" }, { name = "hotpot.nvim", url = "rktjmp/hotpot.nvim", @@ -334,7 +362,7 @@ return }, { name = "hurl.nvim", url = "jellydn/hurl.nvim", - version = "2.0.0-1" + version = "2.0.1-1" }, { name = "hydra.nvim", url = "nvimtools/hydra.nvim", @@ -346,11 +374,11 @@ return }, { name = "incline.nvim", url = "b0o/incline.nvim", - version = "0.0.1-1" + version = "0.0.3-1" }, { name = "indent-blankline.nvim", url = "lukas-reineke/indent-blankline.nvim", - version = "3.8.6-1" + version = "3.8.7-1" }, { name = "kai.nvim", url = "Kamilcuk/kai.nvim", @@ -366,7 +394,7 @@ return }, { name = "lazy.nvim", url = "folke/lazy.nvim", - version = "11.14.2-1" + version = "11.16.2-1" }, { name = "lazydev.nvim", url = "folke/lazydev.nvim", @@ -374,15 +402,15 @@ return }, { name = "lean.nvim", url = "Julian/lean.nvim", - version = "2024.10.1-1" + version = "2024.12.2-1" }, { name = "leetcode.nvim", url = "kawre/leetcode.nvim", - version = "0.2.0-1" + version = "0.3.0-1" }, { name = "legendary.nvim", url = "mrjones2014/legendary.nvim", - version = "2.13.11-1" + version = "2.13.13-1" }, { name = "live-command.nvim", url = "smjonas/live-command.nvim", @@ -390,7 +418,7 @@ return }, { name = "live-preview.nvim", url = "brianhuster/live-preview.nvim", - version = "0.8.3-1" + version = "0.9.4-1" }, { name = "logging.nvim", url = "NTBBloodbath/logging.nvim", @@ -422,7 +450,7 @@ return }, { name = "lua-console.nvim", url = "YaroSpace/lua-console.nvim", - version = "1.1.0-1" + version = "1.2.3-1" }, { name = "lua-obfuscator.nvim", url = "git+ssh://git@github.com/kdssoftware/lua-obfuscator.nvim.git", @@ -442,7 +470,7 @@ return }, { name = "luarocks-build-treesitter-parser", url = "nvim-neorocks/luarocks-build-treesitter-parser", - version = "5.0.2-1" + version = "6.0.0-1" }, { name = "luarocks-build-treesitter-parser-cpp", url = "nvim-neorocks/luarocks-build-treesitter-parser-cpp", @@ -450,7 +478,7 @@ return }, { name = "mag-nvim-lsp", url = "iguanacucumber/mag-nvim-lsp", - version = "0.1-1" + version = "0.2-1" }, { name = "mag-nvim-lua", url = "iguanacucumber/mag-nvim-lua", @@ -458,19 +486,15 @@ return }, { name = "magazine.nvim", url = "iguanacucumber/magazine.nvim", - version = "0.4.1-1" + version = "0.4.4-1" }, { name = "mapx.nvim", url = "b0o/mapx.nvim", version = "0.2.1-1" - }, { - name = "markdown.nvim", - url = "MeanderingProgrammer/render-markdown.nvim", - version = "5.0.1-1" }, { name = "markview.nvim", url = "OXY2DEV/markview.nvim", - version = "24.0.0-1" + version = "25.1.0-1" }, { name = "mason-lspconfig.nvim", url = "williamboman/mason-lspconfig.nvim", @@ -483,10 +507,14 @@ return name = "mason.nvim", url = "williamboman/mason.nvim", version = "1.10.0-1" + }, { + name = "melange-nvim", + url = "savq/melange-nvim", + version = "0.9.0-1" }, { name = "mini.nvim", url = "echasnovski/mini.nvim", - version = "0.9.0-1" + version = "0.15.0-1" }, { name = "mkdnflow.nvim", url = "jakewvincent/mkdnflow.nvim", @@ -510,11 +538,11 @@ return }, { name = "neo-tree.nvim", url = "nvim-neo-tree/neo-tree.nvim", - version = "3.26-1" + version = "3.29-1" }, { name = "neoconf.nvim", url = "folke/neoconf.nvim", - version = "1.3.3-1" + version = "1.4.0-1" }, { name = "neodev.nvim", url = "folke/neodev.nvim", @@ -522,15 +550,19 @@ return }, { name = "neogen", url = "danymat/neogen", - version = "2.19.4-1" + version = "2.20.0-1" }, { name = "neogit", url = "NeogitOrg/neogit", - version = "1.0.0-1" + version = "2.0.0-1" }, { name = "neorg", url = "nvim-neorg/neorg", - version = "9.1.1-1" + version = "9.2.0-1" + }, { + name = "neorg-archive", + url = "bottd/neorg-archive", + version = "1.0.0-1" }, { name = "neorg-conceal-wrap", url = "benlubas/neorg-conceal-wrap", @@ -538,7 +570,11 @@ return }, { name = "neorg-interim-ls", url = "benlubas/neorg-interim-ls", - version = "1.3.0-1" + version = "2.1.0-1" + }, { + name = "neorg-query", + url = "benlubas/neorg-query", + version = "1.2.0-1" }, { name = "neorg-se", url = "benlubas/neorg-se", @@ -558,19 +594,23 @@ return }, { name = "neotest", url = "nvim-neotest/neotest", - version = "5.6.1-1" + version = "5.8.0-1" }, { name = "neotest-busted", url = "MisanthropicBit/neotest-busted", - version = "0.3.0-1" + version = "0.5.0-1" + }, { + name = "neotest-dotnet", + url = "Issafalcon/neotest-dotnet", + version = "stable-1" }, { name = "neotest-golang", url = "fredrikaverpil/neotest-golang", - version = "1.5.0-1" + version = "1.9.1-1" }, { name = "neotest-haskell", url = "mrcjkb/neotest-haskell", - version = "2.1.0-1" + version = "2.1.1-1" }, { name = "neotest-java", url = "rcasia/neotest-java", @@ -579,6 +619,10 @@ return name = "neotest-zig", url = "lawrence-laz/neotest-zig", version = "1.3.1-1" + }, { + name = "nerdy.nvim", + url = "2KAbhishek/nerdy.nvim", + version = "1.4-1" }, { name = "netman.nvim", url = "miversen33/netman.nvim", @@ -590,11 +634,11 @@ return }, { name = "no-neck-pain.nvim", url = "shortcuts/no-neck-pain.nvim", - version = "2.1.3-1" + version = "2.1.5-1" }, { name = "noice.nvim", url = "folke/noice.nvim", - version = "4.7.2-1" + version = "4.9.0-1" }, { name = "npackages.nvim", url = "diegofigs/npackages.nvim", @@ -610,11 +654,11 @@ return }, { name = "nvim-a2-pack", url = "dfgordon/nvim-a2-pack", - version = "0.3.0-1" + version = "0.3.1-1" }, { name = "nvim-best-practices-plugin-template", url = "ColinKennedy/nvim-best-practices-plugin-template", - version = "1.4.0-1" + version = "1.6.0-1" }, { name = "nvim-bqf", url = "kevinhwang91/nvim-bqf", @@ -634,7 +678,7 @@ return }, { name = "nvim-dap", url = "mfussenegger/nvim-dap", - version = "0.8.0-1" + version = "0.9.0-1" }, { name = "nvim-dap-ui", url = "rcarriga/nvim-dap-ui", @@ -647,6 +691,10 @@ return name = "nvim-dev-container", url = "esensar/nvim-dev-container", version = "0.2.0-1" + }, { + name = "nvim-faker", + url = "git+ssh://git@github.com/tehdb/nvim-faker.git", + version = "1.0.0-1" }, { name = "nvim-java", url = "nvim-java/nvim-java", @@ -678,7 +726,7 @@ return }, { name = "nvim-lspconfig", url = "neovim/nvim-lspconfig", - version = "1.0.0-1" + version = "1.6.0-1" }, { name = "nvim-metals", url = "scalameta/nvim-metals", @@ -686,11 +734,11 @@ return }, { name = "nvim-nio", url = "nvim-neotest/nvim-nio", - version = "1.10.0-1" + version = "1.10.1-1" }, { name = "nvim-notify", url = "rcarriga/nvim-notify", - version = "3.14.0-1" + version = "3.15.0-1" }, { name = "nvim-parinfer", url = "gpanders/nvim-parinfer", @@ -702,7 +750,7 @@ return }, { name = "nvim-possession", url = "gennaro-tedesco/nvim-possession", - version = "0.0.15-1" + version = "0.0.17-1" }, { name = "nvim-scrollview", url = "dstein64/nvim-scrollview", @@ -710,7 +758,7 @@ return }, { name = "nvim-smuggler", url = "Klafyvel/nvim-smuggler", - version = "0.4.2-1" + version = "0.5.0-1" }, { name = "nvim-snippets", url = "garymjr/nvim-snippets", @@ -723,6 +771,10 @@ return name = "nvim-surround", url = "kylechui/nvim-surround", version = "2.1.5-1" + }, { + name = "nvim-telescope-cycler", + url = "heindsight/nvim-telescope-cycler", + version = "0.1.0-1" }, { name = "nvim-tree.lua", url = "nvim-tree/nvim-tree.lua", @@ -742,7 +794,11 @@ return }, { name = "nvim-window-picker", url = "s1n7ax/nvim-window-picker", - version = "2.0.3-1" + version = "2.3.1-1" + }, { + name = "obazel.nvim", + url = "glindstedt/obazel.nvim", + version = "0.1.1-1" }, { name = "obsidian.nvim", url = "epwalsh/obsidian.nvim", @@ -750,11 +806,11 @@ return }, { name = "oil.nvim", url = "stevearc/oil.nvim", - version = "2.13.0-1" + version = "2.14.0-1" }, { name = "onedarkpro.nvim", url = "olimorris/onedarkpro.nvim", - version = "2.3.0-1" + version = "2.8.0-1" }, { name = "onenord.nvim", url = "rmehri01/onenord.nvim", @@ -762,7 +818,7 @@ return }, { name = "otter.nvim", url = "jmbuhr/otter.nvim", - version = "2.5.0-1" + version = "2.6.0-1" }, { name = "overseer.nvim", url = "stevearc/overseer.nvim", @@ -770,7 +826,7 @@ return }, { name = "oz.nvim", url = "luxluth/oz.nvim", - version = "0.0.3-1" + version = "0.0.4-1" }, { name = "package-info.nvim", url = "vuki656/package-info.nvim", @@ -794,7 +850,7 @@ return }, { name = "persisted.nvim", url = "olimorris/persisted.nvim", - version = "2.0.1-1" + version = "2.0.2-1" }, { name = "persistence.nvim", url = "folke/persistence.nvim", @@ -818,11 +874,11 @@ return }, { name = "quicker.nvim", url = "stevearc/quicker.nvim", - version = "1.2.0-1" + version = "1.3.0-1" }, { name = "rainbow-delimiters.nvim", url = "HiPhish/rainbow-delimiters.nvim", - version = "0.7.0-1" + version = "0.8.0-1" }, { name = "remember.nvim", url = "vladdoster/remember.nvim", @@ -834,11 +890,11 @@ return }, { name = "render-markdown.nvim", url = "MeanderingProgrammer/render-markdown.nvim", - version = "7.6.0-1" + version = "7.8.0-1" }, { name = "rest.nvim", url = "rest-nvim/rest.nvim", - version = "3.8.4-1" + version = "3.9.1-1" }, { name = "rime.nvim", url = "Freed-Wu/rime.nvim", @@ -854,19 +910,19 @@ return }, { name = "rocks-git.nvim", url = "nvim-neorocks/rocks-git.nvim", - version = "2.5.1-1" + version = "2.5.2-1" }, { name = "rocks-lazy.nvim", url = "nvim-neorocks/rocks-lazy.nvim", - version = "1.1.1-1" + version = "1.1.2-1" }, { name = "rocks-treesitter.nvim", url = "nvim-neorocks/rocks-treesitter.nvim", - version = "1.2.0-1" + version = "1.3.0-1" }, { name = "rocks.nvim", url = "nvim-neorocks/rocks.nvim", - version = "2.42.2-1" + version = "2.43.0-1" }, { name = "rtp.nvim", url = "nvim-neorocks/rtp.nvim", @@ -878,7 +934,7 @@ return }, { name = "rustaceanvim", url = "mrcjkb/rustaceanvim", - version = "5.17.1-1" + version = "5.24.2-1" }, { name = "schemastore.nvim", url = "b0o/SchemaStore.nvim", @@ -886,7 +942,7 @@ return }, { name = "screenkey.nvim", url = "NStefan002/screenkey.nvim", - version = "2.2.1-1" + version = "2.4.2-1" }, { name = "scrollbar.nvim", url = "Xuyuanp/scrollbar.nvim", @@ -906,11 +962,11 @@ return }, { name = "smart-splits.nvim", url = "mrjones2014/smart-splits.nvim", - version = "1.7.0-1" + version = "1.8.1-1" }, { name = "snacks.nvim", url = "folke/snacks.nvim", - version = "2.6.0-1" + version = "2.15.0-1" }, { name = "sos.nvim", url = "tmillr/sos.nvim", @@ -946,7 +1002,7 @@ return }, { name = "tabby.nvim", url = "nanozuki/tabby.nvim", - version = "2.5.1-1" + version = "2.7.4-1" }, { name = "tangerine.nvim", url = "udayvir-singh/tangerine.nvim", @@ -955,6 +1011,14 @@ return name = "teacup.neovim", url = "Clivern/teacup.neovim", version = "0.0.1-1" + }, { + name = "telescope-cmdline.nvim", + url = "jonarrien/telescope-cmdline.nvim", + version = "0.2.1-1" + }, { + name = "telescope-frecency.nvim", + url = "nvim-telescope/telescope-frecency.nvim", + version = "1.0.5-1" }, { name = "telescope-zf-native.nvim", url = "natecraddock/telescope-zf-native.nvim", @@ -970,11 +1034,11 @@ return }, { name = "toggleterm.nvim", url = "akinsho/toggleterm.nvim", - version = "2.13.0-1" + version = "2.13.1-1" }, { name = "tokyonight.nvim", url = "folke/tokyonight.nvim", - version = "4.10.0-1" + version = "4.11.0-1" }, { name = "tree-sitter-ada", url = "briot/tree-sitter-ada", @@ -990,7 +1054,7 @@ return }, { name = "tree-sitter-apex", url = "aheber/tree-sitter-sfapex", - version = "0.0.39-1" + version = "0.0.45-1" }, { name = "tree-sitter-arduino", url = "tree-sitter-grammars/tree-sitter-arduino", @@ -1002,7 +1066,7 @@ return }, { name = "tree-sitter-astro", url = "virchau13/tree-sitter-astro", - version = "0.0.31-1" + version = "0.0.33-1" }, { name = "tree-sitter-authzed", url = "mleonidas/tree-sitter-authzed", @@ -1010,11 +1074,11 @@ return }, { name = "tree-sitter-awk", url = "Beaglefoot/tree-sitter-awk", - version = "0.0.31-1" + version = "0.0.32-1" }, { name = "tree-sitter-bash", url = "tree-sitter/tree-sitter-bash", - version = "0.0.36-1" + version = "0.0.39-1" }, { name = "tree-sitter-bass", url = "vito/tree-sitter-bass", @@ -1030,7 +1094,7 @@ return }, { name = "tree-sitter-bicep", url = "tree-sitter-grammars/tree-sitter-bicep", - version = "0.0.29-1" + version = "0.0.30-1" }, { name = "tree-sitter-bitbake", url = "tree-sitter-grammars/tree-sitter-bitbake", @@ -1042,15 +1106,15 @@ return }, { name = "tree-sitter-bp", url = "ambroisie/tree-sitter-bp", - version = "0.0.29-1" + version = "0.0.30-1" }, { name = "tree-sitter-c", url = "tree-sitter/tree-sitter-c", - version = "0.0.34-1" + version = "0.0.38-1" }, { name = "tree-sitter-c_sharp", url = "tree-sitter/tree-sitter-c-sharp", - version = "0.0.34-1" + version = "0.0.38-1" }, { name = "tree-sitter-cairo", url = "tree-sitter-grammars/tree-sitter-cairo", @@ -1063,10 +1127,14 @@ return name = "tree-sitter-chatito", url = "tree-sitter-grammars/tree-sitter-chatito", version = "0.0.30-1" + }, { + name = "tree-sitter-circom", + url = "Decurity/tree-sitter-circom", + version = "0.0.1-1" }, { name = "tree-sitter-cli", url = "FourierTransformer/tree-sitter-cli", - version = "0.24.4-1" + version = "0.24.5-1" }, { name = "tree-sitter-clojure", url = "sogaiu/tree-sitter-clojure", @@ -1098,11 +1166,11 @@ return }, { name = "tree-sitter-cpp", url = "tree-sitter/tree-sitter-cpp", - version = "0.0.35-1" + version = "0.0.39-1" }, { name = "tree-sitter-css", url = "tree-sitter/tree-sitter-css", - version = "0.0.31-1" + version = "0.0.35-1" }, { name = "tree-sitter-csv", url = "tree-sitter-grammars/tree-sitter-csv", @@ -1110,7 +1178,7 @@ return }, { name = "tree-sitter-cuda", url = "tree-sitter-grammars/tree-sitter-cuda", - version = "0.0.29-1" + version = "0.0.30-1" }, { name = "tree-sitter-cue", url = "eonpatapon/tree-sitter-cue", @@ -1142,7 +1210,7 @@ return }, { name = "tree-sitter-diff", url = "the-mikedavis/tree-sitter-diff", - version = "0.0.31-1" + version = "0.0.32-1" }, { name = "tree-sitter-disassembly", url = "ColinKennedy/tree-sitter-disassembly", @@ -1150,11 +1218,11 @@ return }, { name = "tree-sitter-djot", url = "treeman/tree-sitter-djot", - version = "0.0.29-1" + version = "0.0.33-1" }, { name = "tree-sitter-dockerfile", url = "camdencheek/tree-sitter-dockerfile", - version = "0.0.29-1" + version = "0.0.30-1" }, { name = "tree-sitter-dot", url = "rydesun/tree-sitter-dot", @@ -1170,7 +1238,7 @@ return }, { name = "tree-sitter-earthfile", url = "glehmann/tree-sitter-earthfile", - version = "0.0.33-1" + version = "0.0.34-1" }, { name = "tree-sitter-ebnf", url = "RubixDev/ebnf", @@ -1182,7 +1250,7 @@ return }, { name = "tree-sitter-editorconfig", url = "ValdezFOmar/tree-sitter-editorconfig", - version = "0.0.44-1" + version = "0.0.47-1" }, { name = "tree-sitter-eds", url = "uyha/tree-sitter-eds", @@ -1194,11 +1262,11 @@ return }, { name = "tree-sitter-elixir", url = "elixir-lang/tree-sitter-elixir", - version = "0.0.35-1" + version = "0.0.38-1" }, { name = "tree-sitter-elm", url = "elm-tooling/tree-sitter-elm", - version = "0.0.30-1" + version = "0.0.31-1" }, { name = "tree-sitter-elsa", url = "glapa-grossklag/tree-sitter-elsa", @@ -1210,15 +1278,15 @@ return }, { name = "tree-sitter-embedded_template", url = "tree-sitter/tree-sitter-embedded-template", - version = "0.0.32-1" + version = "0.0.34-1" }, { name = "tree-sitter-erlang", url = "WhatsApp/tree-sitter-erlang", - version = "0.0.33-1" + version = "0.0.36-1" }, { name = "tree-sitter-facility", url = "FacilityApi/tree-sitter-facility", - version = "0.0.29-1" + version = "0.0.30-1" }, { name = "tree-sitter-faust", url = "khiner/tree-sitter-faust", @@ -1238,7 +1306,7 @@ return }, { name = "tree-sitter-fish", url = "ram02z/tree-sitter-fish", - version = "0.0.29-1" + version = "0.0.30-1" }, { name = "tree-sitter-foam", url = "FoamScience/tree-sitter-foam", @@ -1250,7 +1318,7 @@ return }, { name = "tree-sitter-fortran", url = "stadelmanma/tree-sitter-fortran", - version = "0.0.36-1" + version = "0.0.41-1" }, { name = "tree-sitter-fsh", url = "mgramigna/tree-sitter-fsh", @@ -1258,7 +1326,7 @@ return }, { name = "tree-sitter-fsharp", url = "ionide/tree-sitter-fsharp", - version = "0.0.9-1" + version = "0.0.10-1" }, { name = "tree-sitter-func", url = "tree-sitter-grammars/tree-sitter-func", @@ -1270,15 +1338,15 @@ return }, { name = "tree-sitter-gap", url = "gap-system/tree-sitter-gap", - version = "0.0.29-1" + version = "0.0.31-1" }, { name = "tree-sitter-gaptst", url = "gap-system/tree-sitter-gaptst", - version = "0.0.29-1" + version = "0.0.30-1" }, { name = "tree-sitter-gdscript", url = "PrestonKnopp/tree-sitter-gdscript", - version = "0.0.32-1" + version = "0.0.34-1" }, { name = "tree-sitter-gdshader", url = "GodOfAvacyn/tree-sitter-gdshader", @@ -1330,11 +1398,11 @@ return }, { name = "tree-sitter-gnuplot", url = "dpezto/tree-sitter-gnuplot", - version = "0.0.29-1" + version = "0.0.30-1" }, { name = "tree-sitter-go", url = "tree-sitter/tree-sitter-go", - version = "0.0.35-1" + version = "0.0.38-1" }, { name = "tree-sitter-goctl", url = "chaozwn/tree-sitter-goctl", @@ -1342,11 +1410,11 @@ return }, { name = "tree-sitter-godot_resource", url = "PrestonKnopp/tree-sitter-godot-resource", - version = "0.0.29-1" + version = "0.0.32-1" }, { name = "tree-sitter-gomod", url = "camdencheek/tree-sitter-go-mod", - version = "0.0.31-1" + version = "0.0.33-1" }, { name = "tree-sitter-gosum", url = "tree-sitter-grammars/tree-sitter-go-sum", @@ -1354,7 +1422,7 @@ return }, { name = "tree-sitter-gotmpl", url = "ngalaiko/tree-sitter-go-template", - version = "0.0.30-1" + version = "0.0.35-1" }, { name = "tree-sitter-gowork", url = "omertuc/tree-sitter-go-work", @@ -1370,11 +1438,11 @@ return }, { name = "tree-sitter-gren", url = "MaeBrooks/tree-sitter-gren", - version = "0.0.3-1" + version = "0.0.6-1" }, { name = "tree-sitter-groovy", url = "murtaza64/tree-sitter-groovy", - version = "0.0.30-1" + version = "0.0.33-1" }, { name = "tree-sitter-gstlaunch", url = "tree-sitter-grammars/tree-sitter-gstlaunch", @@ -1382,7 +1450,7 @@ return }, { name = "tree-sitter-hack", url = "slackhq/tree-sitter-hack", - version = "0.0.29-1" + version = "0.0.30-1" }, { name = "tree-sitter-hare", url = "tree-sitter-grammars/tree-sitter-hare", @@ -1402,11 +1470,11 @@ return }, { name = "tree-sitter-heex", url = "connorlay/tree-sitter-heex", - version = "0.0.30-1" + version = "0.0.34-1" }, { name = "tree-sitter-helm", url = "ngalaiko/tree-sitter-go-template", - version = "0.0.31-1" + version = "0.0.35-1" }, { name = "tree-sitter-hjson", url = "winston0410/tree-sitter-hjson", @@ -1426,11 +1494,11 @@ return }, { name = "tree-sitter-hoon", url = "urbit-pilled/tree-sitter-hoon", - version = "0.0.30-1" + version = "0.0.32-1" }, { name = "tree-sitter-html", url = "tree-sitter/tree-sitter-html", - version = "0.0.33-1" + version = "0.0.35-1" }, { name = "tree-sitter-html_tags", url = "nvim-neorocks/luarocks-stub", @@ -1442,7 +1510,7 @@ return }, { name = "tree-sitter-http", url = "rest-nvim/tree-sitter-http", - version = "0.0.32-1" + version = "0.0.34-1" }, { name = "tree-sitter-hurl", url = "pfeiferj/tree-sitter-hurl", @@ -1450,11 +1518,15 @@ return }, { name = "tree-sitter-hyprlang", url = "tree-sitter-grammars/tree-sitter-hyprlang", - version = "0.0.29-1" + version = "0.0.33-1" }, { name = "tree-sitter-idl", url = "cathaysia/tree-sitter-idl", version = "0.0.31-1" + }, { + name = "tree-sitter-idris", + url = "kayhide/tree-sitter-idris", + version = "0.0.1-1" }, { name = "tree-sitter-ini", url = "justinmk/tree-sitter-ini", @@ -1462,7 +1534,11 @@ return }, { name = "tree-sitter-inko", url = "inko-lang/tree-sitter-inko", - version = "0.0.36-1" + version = "0.0.38-1" + }, { + name = "tree-sitter-ipkg", + url = "srghma/tree-sitter-ipkg", + version = "0.0.1-1" }, { name = "tree-sitter-ispc", url = "tree-sitter-grammars/tree-sitter-ispc", @@ -1470,15 +1546,15 @@ return }, { name = "tree-sitter-janet_simple", url = "sogaiu/tree-sitter-janet-simple", - version = "0.0.29-1" + version = "0.0.32-1" }, { name = "tree-sitter-java", url = "tree-sitter/tree-sitter-java", - version = "0.0.35-1" + version = "0.0.39-1" }, { name = "tree-sitter-javascript", url = "tree-sitter/tree-sitter-javascript", - version = "0.0.33-1" + version = "0.0.35-1" }, { name = "tree-sitter-jq", url = "flurie/tree-sitter-jq", @@ -1486,11 +1562,11 @@ return }, { name = "tree-sitter-jsdoc", url = "tree-sitter/tree-sitter-jsdoc", - version = "0.0.33-1" + version = "0.0.35-1" }, { name = "tree-sitter-json", url = "tree-sitter/tree-sitter-json", - version = "0.0.33-1" + version = "0.0.35-1" }, { name = "tree-sitter-json5", url = "Joakker/tree-sitter-json5", @@ -1510,15 +1586,15 @@ return }, { name = "tree-sitter-julia", url = "tree-sitter/tree-sitter-julia", - version = "0.0.38-1" + version = "0.0.40-1" }, { name = "tree-sitter-just", url = "IndianBoy42/tree-sitter-just", - version = "0.0.34-1" + version = "0.0.36-1" }, { name = "tree-sitter-kconfig", url = "tree-sitter-grammars/tree-sitter-kconfig", - version = "0.0.29-1" + version = "0.0.32-1" }, { name = "tree-sitter-kdl", url = "tree-sitter-grammars/tree-sitter-kdl", @@ -1526,11 +1602,11 @@ return }, { name = "tree-sitter-kotlin", url = "fwcd/tree-sitter-kotlin", - version = "0.0.30-1" + version = "0.0.32-1" }, { name = "tree-sitter-koto", url = "koto-lang/tree-sitter-koto", - version = "0.0.33-1" + version = "0.0.37-1" }, { name = "tree-sitter-kusto", url = "Willem-J-an/tree-sitter-kusto", @@ -1538,7 +1614,7 @@ return }, { name = "tree-sitter-lalrpop", url = "traxys/tree-sitter-lalrpop", - version = "0.0.30-1" + version = "0.0.31-1" }, { name = "tree-sitter-latex", url = "latex-lsp/tree-sitter-latex", @@ -1550,7 +1626,7 @@ return }, { name = "tree-sitter-leo", url = "r001/tree-sitter-leo", - version = "0.0.29-1" + version = "0.0.33-1" }, { name = "tree-sitter-linkerscript", url = "tree-sitter-grammars/tree-sitter-linkerscript", @@ -1562,7 +1638,7 @@ return }, { name = "tree-sitter-liquidsoap", url = "savonet/tree-sitter-liquidsoap", - version = "0.0.29-1" + version = "0.0.30-1" }, { name = "tree-sitter-llvm", url = "benwilliamgraham/tree-sitter-llvm", @@ -1570,7 +1646,7 @@ return }, { name = "tree-sitter-lua", url = "tree-sitter-grammars/tree-sitter-lua", - version = "0.0.31-1" + version = "0.0.32-1" }, { name = "tree-sitter-luadoc", url = "tree-sitter-grammars/tree-sitter-luadoc", @@ -1582,7 +1658,7 @@ return }, { name = "tree-sitter-luau", url = "tree-sitter-grammars/tree-sitter-luau", - version = "0.0.29-1" + version = "0.0.30-1" }, { name = "tree-sitter-m68k", url = "grahambates/tree-sitter-m68k", @@ -1594,15 +1670,15 @@ return }, { name = "tree-sitter-markdown", url = "tree-sitter-grammars/tree-sitter-markdown", - version = "0.0.36-1" + version = "0.0.37-1" }, { name = "tree-sitter-markdown_inline", url = "tree-sitter-grammars/tree-sitter-markdown", - version = "0.0.36-1" + version = "0.0.37-1" }, { name = "tree-sitter-matlab", url = "acristoffers/tree-sitter-matlab", - version = "0.0.29-1" + version = "0.0.31-1" }, { name = "tree-sitter-menhir", url = "Kerl13/tree-sitter-menhir", @@ -1618,7 +1694,7 @@ return }, { name = "tree-sitter-mlir", url = "artagnon/tree-sitter-mlir", - version = "0.0.40-1" + version = "0.0.43-1" }, { name = "tree-sitter-muttrc", url = "neomutt/tree-sitter-muttrc", @@ -1630,11 +1706,11 @@ return }, { name = "tree-sitter-nginx", url = "opa-oz/tree-sitter-nginx", - version = "0.0.29-1" + version = "0.0.30-1" }, { name = "tree-sitter-nickel", url = "nickel-lang/tree-sitter-nickel", - version = "0.0.30-1" + version = "0.0.31-1" }, { name = "tree-sitter-nim", url = "alaviss/tree-sitter-nim", @@ -1650,7 +1726,7 @@ return }, { name = "tree-sitter-nix", url = "cstrahan/tree-sitter-nix", - version = "0.0.51-1" + version = "0.0.54-1" }, { name = "tree-sitter-norg", url = "nvim-neorg/tree-sitter-norg", @@ -1666,11 +1742,11 @@ return }, { name = "tree-sitter-nu", url = "nushell/tree-sitter-nu", - version = "0.0.20-1" + version = "0.0.30-1" }, { name = "tree-sitter-objc", url = "tree-sitter-grammars/tree-sitter-objc", - version = "0.0.29-1" + version = "0.0.30-1" }, { name = "tree-sitter-objdump", url = "ColinKennedy/tree-sitter-objdump", @@ -1678,11 +1754,11 @@ return }, { name = "tree-sitter-ocaml", url = "tree-sitter/tree-sitter-ocaml", - version = "0.0.34-1" + version = "0.0.38-1" }, { name = "tree-sitter-ocaml_interface", url = "tree-sitter/tree-sitter-ocaml", - version = "0.0.35-1" + version = "0.0.39-1" }, { name = "tree-sitter-ocamllex", url = "atom-ocaml/tree-sitter-ocamllex", @@ -1690,7 +1766,7 @@ return }, { name = "tree-sitter-odin", url = "tree-sitter-grammars/tree-sitter-odin", - version = "0.0.30-1" + version = "0.0.32-1" }, { name = "tree-sitter-org", url = "milisims/tree-sitter-org", @@ -1714,15 +1790,15 @@ return }, { name = "tree-sitter-perl", url = "tree-sitter-perl/tree-sitter-perl", - version = "0.0.37-1" + version = "0.0.38-1" }, { name = "tree-sitter-php", url = "tree-sitter/tree-sitter-php", - version = "0.0.35-1" + version = "0.0.37-1" }, { name = "tree-sitter-php_only", url = "tree-sitter/tree-sitter-php", - version = "0.0.35-1" + version = "0.0.38-1" }, { name = "tree-sitter-phpdoc", url = "claytonrcarter/tree-sitter-phpdoc", @@ -1742,7 +1818,7 @@ return }, { name = "tree-sitter-poe_filter", url = "tree-sitter-grammars/tree-sitter-poe-filter", - version = "0.0.30-1" + version = "0.0.31-1" }, { name = "tree-sitter-pony", url = "tree-sitter-grammars/tree-sitter-pony", @@ -1750,7 +1826,7 @@ return }, { name = "tree-sitter-powershell", url = "airbus-cert/tree-sitter-powershell", - version = "0.0.32-1" + version = "0.0.36-1" }, { name = "tree-sitter-printf", url = "tree-sitter-grammars/tree-sitter-printf", @@ -1758,7 +1834,7 @@ return }, { name = "tree-sitter-prisma", url = "victorhqc/tree-sitter-prisma", - version = "0.0.29-1" + version = "0.0.30-1" }, { name = "tree-sitter-problog", url = "foxyseta/tree-sitter-prolog", @@ -1774,7 +1850,7 @@ return }, { name = "tree-sitter-properties", url = "tree-sitter-grammars/tree-sitter-properties", - version = "0.0.30-1" + version = "0.0.31-1" }, { name = "tree-sitter-proto", url = "treywood/tree-sitter-proto", @@ -1794,7 +1870,7 @@ return }, { name = "tree-sitter-puppet", url = "tree-sitter-grammars/tree-sitter-puppet", - version = "0.0.29-1" + version = "0.0.30-1" }, { name = "tree-sitter-purescript", url = "postsolar/tree-sitter-purescript", @@ -1806,7 +1882,7 @@ return }, { name = "tree-sitter-python", url = "tree-sitter/tree-sitter-python", - version = "0.0.33-1" + version = "0.0.39-1" }, { name = "tree-sitter-ql", url = "tree-sitter/tree-sitter-ql", @@ -1818,11 +1894,11 @@ return }, { name = "tree-sitter-qmljs", url = "yuja/tree-sitter-qmljs", - version = "0.0.30-1" + version = "0.0.31-1" }, { name = "tree-sitter-query", url = "tree-sitter-grammars/tree-sitter-query", - version = "0.0.30-1" + version = "0.0.31-1" }, { name = "tree-sitter-r", url = "r-lib/tree-sitter-r", @@ -1842,7 +1918,7 @@ return }, { name = "tree-sitter-rbs", url = "joker1007/tree-sitter-rbs", - version = "0.0.29-1" + version = "0.0.31-1" }, { name = "tree-sitter-re2c", url = "tree-sitter-grammars/tree-sitter-re2c", @@ -1854,7 +1930,7 @@ return }, { name = "tree-sitter-regex", url = "tree-sitter/tree-sitter-regex", - version = "0.0.37-1" + version = "0.0.40-1" }, { name = "tree-sitter-rego", url = "FallenAngel97/tree-sitter-rego", @@ -1882,7 +1958,7 @@ return }, { name = "tree-sitter-roc", url = "faldor20/tree-sitter-roc", - version = "0.0.29-1" + version = "0.0.31-1" }, { name = "tree-sitter-ron", url = "tree-sitter-grammars/tree-sitter-ron", @@ -1890,11 +1966,11 @@ return }, { name = "tree-sitter-rst", url = "stsewd/tree-sitter-rst", - version = "0.0.30-1" + version = "0.0.31-1" }, { name = "tree-sitter-ruby", url = "tree-sitter/tree-sitter-ruby", - version = "0.0.33-1" + version = "0.0.34-1" }, { name = "tree-sitter-runescript", url = "2004Scape/tree-sitter-runescript", @@ -1902,15 +1978,15 @@ return }, { name = "tree-sitter-rust", url = "tree-sitter/tree-sitter-rust", - version = "0.0.37-1" + version = "0.0.40-1" }, { name = "tree-sitter-scala", url = "tree-sitter/tree-sitter-scala", - version = "0.0.39-1" + version = "0.0.44-1" }, { name = "tree-sitter-scfg", url = "rockorager/tree-sitter-scfg", - version = "0.0.29-1" + version = "0.0.30-1" }, { name = "tree-sitter-scheme", url = "6cdh/tree-sitter-scheme", @@ -1922,15 +1998,19 @@ return }, { name = "tree-sitter-sflog", url = "aheber/tree-sitter-sfapex", - version = "0.0.36-1" + version = "0.0.42-1" }, { name = "tree-sitter-slang", url = "tree-sitter-grammars/tree-sitter-slang", version = "0.0.32-1" + }, { + name = "tree-sitter-slim", + url = "theoo/tree-sitter-slim", + version = "0.0.3-1" }, { name = "tree-sitter-slint", url = "slint-ui/tree-sitter-slint", - version = "0.0.31-1" + version = "0.0.33-1" }, { name = "tree-sitter-smali", url = "tree-sitter-grammars/tree-sitter-smali", @@ -1942,23 +2022,23 @@ return }, { name = "tree-sitter-snakemake", url = "osthomas/tree-sitter-snakemake", - version = "0.0.29-1" + version = "0.0.31-1" }, { name = "tree-sitter-solidity", url = "JoranHonig/tree-sitter-solidity", - version = "0.0.31-1" + version = "0.0.34-1" }, { name = "tree-sitter-soql", url = "aheber/tree-sitter-sfapex", - version = "0.0.37-1" + version = "0.0.44-1" }, { name = "tree-sitter-sosl", url = "aheber/tree-sitter-sfapex", - version = "0.0.36-1" + version = "0.0.42-1" }, { name = "tree-sitter-sourcepawn", url = "nilshelmig/tree-sitter-sourcepawn", - version = "0.0.29-1" + version = "0.0.30-1" }, { name = "tree-sitter-sparql", url = "GordianDziwis/tree-sitter-sparql", @@ -1966,7 +2046,7 @@ return }, { name = "tree-sitter-sql", url = "derekstride/tree-sitter-sql", - version = "0.0.37-1" + version = "0.0.39-1" }, { name = "tree-sitter-squirrel", url = "tree-sitter-grammars/tree-sitter-squirrel", @@ -1974,11 +2054,11 @@ return }, { name = "tree-sitter-ssh_config", url = "tree-sitter-grammars/tree-sitter-ssh-config", - version = "0.0.30-1" + version = "0.0.32-1" }, { name = "tree-sitter-starlark", url = "tree-sitter-grammars/tree-sitter-starlark", - version = "0.0.30-1" + version = "0.0.31-1" }, { name = "tree-sitter-strace", url = "sigmaSd/tree-sitter-strace", @@ -1994,7 +2074,7 @@ return }, { name = "tree-sitter-superhtml", url = "kristoff-it/superhtml", - version = "0.0.11-1" + version = "0.0.12-1" }, { name = "tree-sitter-surface", url = "connorlay/tree-sitter-surface", @@ -2010,11 +2090,11 @@ return }, { name = "tree-sitter-swift", url = "alex-pinkus/tree-sitter-swift", - version = "0.0.41-1" + version = "0.0.44-1" }, { name = "tree-sitter-sxhkdrc", url = "RaafatTurki/tree-sitter-sxhkdrc", - version = "0.0.29-1" + version = "0.0.30-1" }, { name = "tree-sitter-systemtap", url = "ok-ryoko/tree-sitter-systemtap", @@ -2025,8 +2105,8 @@ return version = "0.0.29-1" }, { name = "tree-sitter-t32", - url = "https://gitlab.com/xasc/tree-sitter-t32/-/archive/7c8579685e34116c61971240780b316c54be698b.zip", - version = "0.0.37-1" + url = "https://gitlab.com/xasc/tree-sitter-t32/-/archive/e5a12f798f056049642aa03fbb83786e3a5b95d4.zip", + version = "0.0.41-1" }, { name = "tree-sitter-tablegen", url = "tree-sitter-grammars/tree-sitter-tablegen", @@ -2042,11 +2122,11 @@ return }, { name = "tree-sitter-teal", url = "euclidianAce/tree-sitter-teal", - version = "0.0.32-1" + version = "0.0.33-1" }, { name = "tree-sitter-templ", url = "vrischmann/tree-sitter-templ", - version = "0.0.38-1" + version = "0.0.44-1" }, { name = "tree-sitter-terraform", url = "MichaHoffmann/tree-sitter-hcl", @@ -2086,7 +2166,7 @@ return }, { name = "tree-sitter-tsx", url = "tree-sitter/tree-sitter-typescript", - version = "0.0.31-1" + version = "0.0.34-1" }, { name = "tree-sitter-turtle", url = "GordianDziwis/tree-sitter-turtle", @@ -2098,11 +2178,11 @@ return }, { name = "tree-sitter-typescript", url = "tree-sitter/tree-sitter-typescript", - version = "0.0.31-1" + version = "0.0.34-1" }, { name = "tree-sitter-typespec", url = "happenslol/tree-sitter-typespec", - version = "0.0.31-1" + version = "0.0.33-1" }, { name = "tree-sitter-typoscript", url = "Teddytrombone/tree-sitter-typoscript", @@ -2134,7 +2214,7 @@ return }, { name = "tree-sitter-v", url = "vlang/v-analyzer", - version = "0.0.38-1" + version = "0.0.42-1" }, { name = "tree-sitter-vala", url = "vala-lang/tree-sitter-vala", @@ -2142,19 +2222,19 @@ return }, { name = "tree-sitter-vento", url = "ventojs/tree-sitter-vento", - version = "0.0.29-1" + version = "0.0.30-1" }, { name = "tree-sitter-verilog", url = "gmlarumbe/tree-sitter-systemverilog", - version = "0.0.34-1" + version = "0.0.38-1" }, { name = "tree-sitter-vhdl", url = "jpt13653903/tree-sitter-vhdl", - version = "0.0.34-1" + version = "0.0.37-1" }, { name = "tree-sitter-vhs", url = "charmbracelet/tree-sitter-vhs", - version = "0.0.29-1" + version = "0.0.30-1" }, { name = "tree-sitter-vim", url = "tree-sitter-grammars/tree-sitter-vim", @@ -2194,15 +2274,15 @@ return }, { name = "tree-sitter-xml", url = "tree-sitter-grammars/tree-sitter-xml", - version = "0.0.34-1" + version = "0.0.35-1" }, { name = "tree-sitter-xresources", url = "ValdezFOmar/tree-sitter-xresources", - version = "0.0.12-1" + version = "0.0.19-1" }, { name = "tree-sitter-yaml", url = "tree-sitter-grammars/tree-sitter-yaml", - version = "0.0.30-1" + version = "0.0.31-1" }, { name = "tree-sitter-yang", url = "Hubro/tree-sitter-yang", @@ -2218,15 +2298,15 @@ return }, { name = "tree-sitter-zig", url = "tree-sitter-grammars/tree-sitter-zig", - version = "0.0.32-1" + version = "0.0.34-1" }, { name = "tree-sitter-ziggy", url = "kristoff-it/ziggy", - version = "0.0.7-1" + version = "0.0.8-1" }, { name = "tree-sitter-ziggy_schema", url = "kristoff-it/ziggy", - version = "0.0.7-1" + version = "0.0.8-1" }, { name = "treedoc.nvim", url = "neo451/treedoc.nvim", @@ -2234,7 +2314,7 @@ return }, { name = "trouble.nvim", url = "folke/trouble.nvim", - version = "3.6.0-1" + version = "3.7.0-1" }, { name = "ts-comments.nvim", url = "folke/ts-comments.nvim", @@ -2242,7 +2322,7 @@ return }, { name = "tsc.nvim", url = "dmmulroy/tsc.nvim", - version = "2.4.1-1" + version = "2.5.0-1" }, { name = "twilight.nvim", url = "folke/twilight.nvim", @@ -2254,15 +2334,15 @@ return }, { name = "unimpaired.nvim", url = "tummetott/unimpaired.nvim", - version = "0.2.0-1" + version = "0.3.0-1" }, { name = "vgit.nvim", url = "tanvirtin/vgit.nvim", - version = "0.2.3-1" + version = "1.0.2-1" }, { name = "which-key.nvim", url = "folke/which-key.nvim", - version = "3.14.1-1" + version = "3.16.0-1" }, { name = "windline.nvim", url = "windwp/windline.nvim", @@ -2270,7 +2350,7 @@ return }, { name = "winmove.nvim", url = "MisanthropicBit/winmove.nvim", - version = "0.1.0-1" + version = "0.1.1-1" }, { name = "wormhole.nvim", url = "NStefan002/wormhole.nvim", @@ -2286,7 +2366,7 @@ return }, { name = "yazi.nvim", url = "mikavilpas/yazi.nvim", - version = "6.6.1-1" + version = "7.5.1-1" }, { name = "zen-mode.nvim", url = "folke/zen-mode.nvim", @@ -2294,5 +2374,5 @@ return }, { name = "zk-nvim", url = "zk-org/zk-nvim", - version = "0.1.1-1" + version = "0.2.0-1" } } \ No newline at end of file From f15a93907ddad3d9139aea465ae18336d87f5ce6 Mon Sep 17 00:00:00 2001 From: JINNOUCHI Yasushi Date: Thu, 6 Feb 2025 15:53:12 +0900 Subject: [PATCH 333/342] fix(ui): do not show virt_lines for messages (#1904) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Description https://github.com/neovim/neovim/pull/31959 has introduced virtual lines for showing diagnostics. If this is enabled (default value), messages from lazy.nvim, such as `update available` are shown as virtual lines in addition to virtual texts. ## Related Issue(s) ## Screenshots * ***before*** - スクリーンショット 2025-01-27 16 42 27 * ***after*** - スクリーンショット 2025-01-27 16 42 58 --- lua/lazy/view/render.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/lazy/view/render.lua b/lua/lazy/view/render.lua index 8c49a1b..b545af0 100644 --- a/lua/lazy/view/render.lua +++ b/lua/lazy/view/render.lua @@ -94,7 +94,7 @@ function M:update() diag.lnum = diag.row - 1 return diag end, self._diagnostics), - { signs = false, virtual_text = true, underline = false } + { signs = false, virtual_text = true, underline = false, virtual_lines = false } ) end From c6a57a3534d3494bcc5ff9b0586e141bdb0280eb Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 15 Feb 2025 08:19:49 +0100 Subject: [PATCH 334/342] feat(util): pass lang to `vim.notify` so that snacks notifier can render the ft. Closes #1919 --- lua/lazy/core/util.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/lua/lazy/core/util.lua b/lua/lazy/core/util.lua index 9db7f14..83e8a92 100644 --- a/lua/lazy/core/util.lua +++ b/lua/lazy/core/util.lua @@ -374,6 +374,7 @@ function M.notify(msg, opts) local lang = opts.lang or "markdown" local n = opts.once and vim.notify_once or vim.notify n(msg, opts.level or vim.log.levels.INFO, { + ft = lang, on_open = function(win) local ok = pcall(function() vim.treesitter.language.add("markdown") From ac21a639c7ecfc8b822dcc9455deceea3778f839 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 15 Feb 2025 07:25:07 +0000 Subject: [PATCH 335/342] chore(build): auto-generate rockspec mappings --- lua/lazy/community/_generated.lua | 224 +++++++++++++++++------------- 1 file changed, 128 insertions(+), 96 deletions(-) diff --git a/lua/lazy/community/_generated.lua b/lua/lazy/community/_generated.lua index d3ba8f6..7e41487 100644 --- a/lua/lazy/community/_generated.lua +++ b/lua/lazy/community/_generated.lua @@ -38,7 +38,7 @@ return }, { name = "avante.nvim", url = "yetone/avante.nvim", - version = "0.0.15-1" + version = "0.0.18-1" }, { name = "banana.nvim", url = "CWood-sdf/banana.nvim", @@ -83,10 +83,14 @@ return name = "cmp-rg", url = "lukas-reineke/cmp-rg", version = "1.3.11-1" + }, { + name = "code-stats.nvim", + url = "Freed-Wu/code-stats.nvim", + version = "0.0.2-1" }, { name = "colorbox.nvim", url = "linrongbin16/colorbox.nvim", - version = "3.1.0-1" + version = "3.1.1-1" }, { name = "colorbuddy.nvim", url = "tjdevries/colorbuddy.nvim", @@ -114,7 +118,7 @@ return }, { name = "commons.nvim", url = "linrongbin16/commons.nvim", - version = "26.0.0-1" + version = "27.0.0-1" }, { name = "conform.nvim", url = "stevearc/conform.nvim", @@ -130,7 +134,7 @@ return }, { name = "cord.nvim", url = "vyfor/cord.nvim", - version = "2.0.0beta-9" + version = "2.0.3-1" }, { name = "cursor-text-objects.nvim", url = "ColinKennedy/cursor-text-objects.nvim", @@ -158,7 +162,7 @@ return }, { name = "decipher.nvim", url = "MisanthropicBit/decipher.nvim", - version = "1.0.2-1" + version = "1.0.3-1" }, { name = "delog.nvim", url = "ej-shafran/delog.nvim", @@ -198,7 +202,7 @@ return }, { name = "dropbar.nvim", url = "Bekaboo/dropbar.nvim", - version = "11.0.0-1" + version = "12.0.0-1" }, { name = "duck.nvim", url = "tamton-aquib/duck.nvim", @@ -234,7 +238,7 @@ return }, { name = "fidget.nvim", url = "j-hui/fidget.nvim", - version = "1.4.1-1" + version = "1.6.0-1" }, { name = "flash.nvim", url = "folke/flash.nvim", @@ -270,7 +274,7 @@ return }, { name = "fzfx.nvim", url = "linrongbin16/fzfx.nvim", - version = "8.0.0-1" + version = "8.1.1-1" }, { name = "galileo.nvim", url = "S1M0N38/galileo.nvim", @@ -298,7 +302,7 @@ return }, { name = "gitsigns.nvim", url = "lewis6991/gitsigns.nvim", - version = "0.9.0-1" + version = "1.0.0-1" }, { name = "glow.nvim", url = "ellisonleao/glow.nvim", @@ -334,7 +338,7 @@ return }, { name = "haskell-tools.nvim", url = "mrcjkb/haskell-tools.nvim", - version = "4.4.0-1" + version = "4.4.2-1" }, { name = "headlines.nvim", url = "lukas-reineke/headlines.nvim", @@ -346,7 +350,7 @@ return }, { name = "helpview.nvim", url = "OXY2DEV/helpview.nvim", - version = "1.1.0-1" + version = "2.0.1-1" }, { name = "hibiscus.nvim", url = "udayvir-singh/hibiscus.nvim", @@ -362,7 +366,7 @@ return }, { name = "hurl.nvim", url = "jellydn/hurl.nvim", - version = "2.0.1-1" + version = "2.1.0-1" }, { name = "hydra.nvim", url = "nvimtools/hydra.nvim", @@ -371,6 +375,10 @@ return name = "image.nvim", url = "3rd/image.nvim", version = "1.3.0-1" + }, { + name = "ime.nvim", + url = "Freed-Wu/ime.nvim", + version = "0.0.1-1" }, { name = "incline.nvim", url = "b0o/incline.nvim", @@ -450,7 +458,7 @@ return }, { name = "lua-console.nvim", url = "YaroSpace/lua-console.nvim", - version = "1.2.3-1" + version = "1.2.4-1" }, { name = "lua-obfuscator.nvim", url = "git+ssh://git@github.com/kdssoftware/lua-obfuscator.nvim.git", @@ -494,7 +502,7 @@ return }, { name = "markview.nvim", url = "OXY2DEV/markview.nvim", - version = "25.1.0-1" + version = "25.3.1-1" }, { name = "mason-lspconfig.nvim", url = "williamboman/mason-lspconfig.nvim", @@ -515,6 +523,10 @@ return name = "mini.nvim", url = "echasnovski/mini.nvim", version = "0.15.0-1" + }, { + name = "minuet-ai.nvim", + url = "milanglacier/minuet-ai.nvim", + version = "0.3.2-1" }, { name = "mkdnflow.nvim", url = "jakewvincent/mkdnflow.nvim", @@ -574,7 +586,7 @@ return }, { name = "neorg-query", url = "benlubas/neorg-query", - version = "1.2.0-1" + version = "1.3.1-1" }, { name = "neorg-se", url = "benlubas/neorg-se", @@ -606,7 +618,7 @@ return }, { name = "neotest-golang", url = "fredrikaverpil/neotest-golang", - version = "1.9.1-1" + version = "1.10.1-1" }, { name = "neotest-haskell", url = "mrcjkb/neotest-haskell", @@ -638,7 +650,7 @@ return }, { name = "noice.nvim", url = "folke/noice.nvim", - version = "4.9.0-1" + version = "4.10.0-1" }, { name = "npackages.nvim", url = "diegofigs/npackages.nvim", @@ -658,7 +670,7 @@ return }, { name = "nvim-best-practices-plugin-template", url = "ColinKennedy/nvim-best-practices-plugin-template", - version = "1.6.0-1" + version = "1.7.0-1" }, { name = "nvim-bqf", url = "kevinhwang91/nvim-bqf", @@ -750,7 +762,7 @@ return }, { name = "nvim-possession", url = "gennaro-tedesco/nvim-possession", - version = "0.0.17-1" + version = "0.1.0-1" }, { name = "nvim-scrollview", url = "dstein64/nvim-scrollview", @@ -810,7 +822,7 @@ return }, { name = "onedarkpro.nvim", url = "olimorris/onedarkpro.nvim", - version = "2.8.0-1" + version = "2.9.0-1" }, { name = "onenord.nvim", url = "rmehri01/onenord.nvim", @@ -818,7 +830,7 @@ return }, { name = "otter.nvim", url = "jmbuhr/otter.nvim", - version = "2.6.0-1" + version = "2.6.1-1" }, { name = "overseer.nvim", url = "stevearc/overseer.nvim", @@ -890,11 +902,11 @@ return }, { name = "render-markdown.nvim", url = "MeanderingProgrammer/render-markdown.nvim", - version = "7.8.0-1" + version = "8.0.0-1" }, { name = "rest.nvim", url = "rest-nvim/rest.nvim", - version = "3.9.1-1" + version = "3.11.1-1" }, { name = "rime.nvim", url = "Freed-Wu/rime.nvim", @@ -914,7 +926,7 @@ return }, { name = "rocks-lazy.nvim", url = "nvim-neorocks/rocks-lazy.nvim", - version = "1.1.2-1" + version = "1.2.0-1" }, { name = "rocks-treesitter.nvim", url = "nvim-neorocks/rocks-treesitter.nvim", @@ -922,7 +934,7 @@ return }, { name = "rocks.nvim", url = "nvim-neorocks/rocks.nvim", - version = "2.43.0-1" + version = "2.43.1-1" }, { name = "rtp.nvim", url = "nvim-neorocks/rtp.nvim", @@ -934,7 +946,7 @@ return }, { name = "rustaceanvim", url = "mrcjkb/rustaceanvim", - version = "5.24.2-1" + version = "5.24.4-1" }, { name = "schemastore.nvim", url = "b0o/SchemaStore.nvim", @@ -966,7 +978,7 @@ return }, { name = "snacks.nvim", url = "folke/snacks.nvim", - version = "2.15.0-1" + version = "2.20.0-1" }, { name = "sos.nvim", url = "tmillr/sos.nvim", @@ -1018,7 +1030,7 @@ return }, { name = "telescope-frecency.nvim", url = "nvim-telescope/telescope-frecency.nvim", - version = "1.0.5-1" + version = "1.2.0-1" }, { name = "telescope-zf-native.nvim", url = "natecraddock/telescope-zf-native.nvim", @@ -1054,7 +1066,7 @@ return }, { name = "tree-sitter-apex", url = "aheber/tree-sitter-sfapex", - version = "0.0.45-1" + version = "0.0.47-1" }, { name = "tree-sitter-arduino", url = "tree-sitter-grammars/tree-sitter-arduino", @@ -1062,7 +1074,7 @@ return }, { name = "tree-sitter-asm", url = "RubixDev/tree-sitter-asm", - version = "0.0.29-1" + version = "0.0.30-1" }, { name = "tree-sitter-astro", url = "virchau13/tree-sitter-astro", @@ -1078,7 +1090,7 @@ return }, { name = "tree-sitter-bash", url = "tree-sitter/tree-sitter-bash", - version = "0.0.39-1" + version = "0.0.40-1" }, { name = "tree-sitter-bass", url = "vito/tree-sitter-bass", @@ -1110,11 +1122,11 @@ return }, { name = "tree-sitter-c", url = "tree-sitter/tree-sitter-c", - version = "0.0.38-1" + version = "0.0.41-1" }, { name = "tree-sitter-c_sharp", url = "tree-sitter/tree-sitter-c-sharp", - version = "0.0.38-1" + version = "0.0.40-1" }, { name = "tree-sitter-cairo", url = "tree-sitter-grammars/tree-sitter-cairo", @@ -1134,7 +1146,7 @@ return }, { name = "tree-sitter-cli", url = "FourierTransformer/tree-sitter-cli", - version = "0.24.5-1" + version = "0.25.1-2" }, { name = "tree-sitter-clojure", url = "sogaiu/tree-sitter-clojure", @@ -1166,11 +1178,11 @@ return }, { name = "tree-sitter-cpp", url = "tree-sitter/tree-sitter-cpp", - version = "0.0.39-1" + version = "0.0.41-1" }, { name = "tree-sitter-css", url = "tree-sitter/tree-sitter-css", - version = "0.0.35-1" + version = "0.0.36-1" }, { name = "tree-sitter-csv", url = "tree-sitter-grammars/tree-sitter-csv", @@ -1182,7 +1194,7 @@ return }, { name = "tree-sitter-cue", url = "eonpatapon/tree-sitter-cue", - version = "0.0.29-1" + version = "0.0.30-1" }, { name = "tree-sitter-cylc", url = "elliotfontaine/tree-sitter-cylc", @@ -1198,7 +1210,7 @@ return }, { name = "tree-sitter-desktop", url = "ValdezFOmar/tree-sitter-desktop", - version = "0.0.6-1" + version = "0.0.8-1" }, { name = "tree-sitter-devicetree", url = "joelspadin/tree-sitter-devicetree", @@ -1218,7 +1230,7 @@ return }, { name = "tree-sitter-djot", url = "treeman/tree-sitter-djot", - version = "0.0.33-1" + version = "0.0.34-1" }, { name = "tree-sitter-dockerfile", url = "camdencheek/tree-sitter-dockerfile", @@ -1234,11 +1246,11 @@ return }, { name = "tree-sitter-dtd", url = "tree-sitter-grammars/tree-sitter-xml", - version = "0.0.33-1" + version = "0.0.34-1" }, { name = "tree-sitter-earthfile", url = "glehmann/tree-sitter-earthfile", - version = "0.0.34-1" + version = "0.0.35-1" }, { name = "tree-sitter-ebnf", url = "RubixDev/ebnf", @@ -1246,7 +1258,7 @@ return }, { name = "tree-sitter-ecma", url = "nvim-neorocks/luarocks-stub", - version = "0.0.29-1" + version = "0.0.30-1" }, { name = "tree-sitter-editorconfig", url = "ValdezFOmar/tree-sitter-editorconfig", @@ -1262,7 +1274,7 @@ return }, { name = "tree-sitter-elixir", url = "elixir-lang/tree-sitter-elixir", - version = "0.0.38-1" + version = "0.0.39-1" }, { name = "tree-sitter-elm", url = "elm-tooling/tree-sitter-elm", @@ -1279,10 +1291,14 @@ return name = "tree-sitter-embedded_template", url = "tree-sitter/tree-sitter-embedded-template", version = "0.0.34-1" + }, { + name = "tree-sitter-enforce", + url = "simonvic/tree-sitter-enforce", + version = "0.0.2-1" }, { name = "tree-sitter-erlang", url = "WhatsApp/tree-sitter-erlang", - version = "0.0.36-1" + version = "0.0.40-1" }, { name = "tree-sitter-facility", url = "FacilityApi/tree-sitter-facility", @@ -1326,7 +1342,7 @@ return }, { name = "tree-sitter-fsharp", url = "ionide/tree-sitter-fsharp", - version = "0.0.10-1" + version = "0.0.11-1" }, { name = "tree-sitter-func", url = "tree-sitter-grammars/tree-sitter-func", @@ -1374,7 +1390,7 @@ return }, { name = "tree-sitter-gleam", url = "gleam-lang/tree-sitter-gleam", - version = "0.0.33-1" + version = "0.0.35-1" }, { name = "tree-sitter-glimmer", url = "ember-tooling/tree-sitter-glimmer", @@ -1402,7 +1418,7 @@ return }, { name = "tree-sitter-go", url = "tree-sitter/tree-sitter-go", - version = "0.0.38-1" + version = "0.0.39-1" }, { name = "tree-sitter-goctl", url = "chaozwn/tree-sitter-goctl", @@ -1458,7 +1474,7 @@ return }, { name = "tree-sitter-haskell", url = "tree-sitter/tree-sitter-haskell", - version = "0.0.31-1" + version = "0.0.32-1" }, { name = "tree-sitter-haskell_persistent", url = "MercuryTechnologies/tree-sitter-haskell-persistent", @@ -1498,7 +1514,7 @@ return }, { name = "tree-sitter-html", url = "tree-sitter/tree-sitter-html", - version = "0.0.35-1" + version = "0.0.36-1" }, { name = "tree-sitter-html_tags", url = "nvim-neorocks/luarocks-stub", @@ -1510,7 +1526,7 @@ return }, { name = "tree-sitter-http", url = "rest-nvim/tree-sitter-http", - version = "0.0.34-1" + version = "0.0.35-1" }, { name = "tree-sitter-hurl", url = "pfeiferj/tree-sitter-hurl", @@ -1518,11 +1534,11 @@ return }, { name = "tree-sitter-hyprlang", url = "tree-sitter-grammars/tree-sitter-hyprlang", - version = "0.0.33-1" + version = "0.0.34-1" }, { name = "tree-sitter-idl", url = "cathaysia/tree-sitter-idl", - version = "0.0.31-1" + version = "0.0.32-1" }, { name = "tree-sitter-idris", url = "kayhide/tree-sitter-idris", @@ -1546,15 +1562,23 @@ return }, { name = "tree-sitter-janet_simple", url = "sogaiu/tree-sitter-janet-simple", - version = "0.0.32-1" + version = "0.0.33-1" }, { name = "tree-sitter-java", url = "tree-sitter/tree-sitter-java", - version = "0.0.39-1" + version = "0.0.40-1" }, { name = "tree-sitter-javascript", url = "tree-sitter/tree-sitter-javascript", - version = "0.0.35-1" + version = "0.0.36-1" + }, { + name = "tree-sitter-jinja", + url = "cathaysia/tree-sitter-jinja", + version = "0.0.2-1" + }, { + name = "tree-sitter-jinja_inline", + url = "cathaysia/tree-sitter-jinja", + version = "0.0.2-1" }, { name = "tree-sitter-jq", url = "flurie/tree-sitter-jq", @@ -1566,7 +1590,7 @@ return }, { name = "tree-sitter-json", url = "tree-sitter/tree-sitter-json", - version = "0.0.35-1" + version = "0.0.36-1" }, { name = "tree-sitter-json5", url = "Joakker/tree-sitter-json5", @@ -1586,7 +1610,7 @@ return }, { name = "tree-sitter-julia", url = "tree-sitter/tree-sitter-julia", - version = "0.0.40-1" + version = "0.0.42-1" }, { name = "tree-sitter-just", url = "IndianBoy42/tree-sitter-just", @@ -1646,7 +1670,7 @@ return }, { name = "tree-sitter-lua", url = "tree-sitter-grammars/tree-sitter-lua", - version = "0.0.32-1" + version = "0.0.33-1" }, { name = "tree-sitter-luadoc", url = "tree-sitter-grammars/tree-sitter-luadoc", @@ -1678,7 +1702,7 @@ return }, { name = "tree-sitter-matlab", url = "acristoffers/tree-sitter-matlab", - version = "0.0.31-1" + version = "0.0.32-1" }, { name = "tree-sitter-menhir", url = "Kerl13/tree-sitter-menhir", @@ -1694,7 +1718,7 @@ return }, { name = "tree-sitter-mlir", url = "artagnon/tree-sitter-mlir", - version = "0.0.43-1" + version = "0.0.44-1" }, { name = "tree-sitter-muttrc", url = "neomutt/tree-sitter-muttrc", @@ -1726,7 +1750,7 @@ return }, { name = "tree-sitter-nix", url = "cstrahan/tree-sitter-nix", - version = "0.0.54-1" + version = "0.0.56-1" }, { name = "tree-sitter-norg", url = "nvim-neorg/tree-sitter-norg", @@ -1742,11 +1766,11 @@ return }, { name = "tree-sitter-nu", url = "nushell/tree-sitter-nu", - version = "0.0.30-1" + version = "0.0.32-1" }, { name = "tree-sitter-objc", url = "tree-sitter-grammars/tree-sitter-objc", - version = "0.0.30-1" + version = "0.0.31-1" }, { name = "tree-sitter-objdump", url = "ColinKennedy/tree-sitter-objdump", @@ -1754,15 +1778,15 @@ return }, { name = "tree-sitter-ocaml", url = "tree-sitter/tree-sitter-ocaml", - version = "0.0.38-1" + version = "0.0.39-1" }, { name = "tree-sitter-ocaml_interface", url = "tree-sitter/tree-sitter-ocaml", - version = "0.0.39-1" + version = "0.0.40-1" }, { name = "tree-sitter-ocamllex", url = "atom-ocaml/tree-sitter-ocamllex", - version = "0.0.29-1" + version = "0.0.30-1" }, { name = "tree-sitter-odin", url = "tree-sitter-grammars/tree-sitter-odin", @@ -1790,15 +1814,15 @@ return }, { name = "tree-sitter-perl", url = "tree-sitter-perl/tree-sitter-perl", - version = "0.0.38-1" + version = "0.0.41-1" }, { name = "tree-sitter-php", url = "tree-sitter/tree-sitter-php", - version = "0.0.37-1" + version = "0.0.38-1" }, { name = "tree-sitter-php_only", url = "tree-sitter/tree-sitter-php", - version = "0.0.38-1" + version = "0.0.39-1" }, { name = "tree-sitter-phpdoc", url = "claytonrcarter/tree-sitter-phpdoc", @@ -1830,7 +1854,7 @@ return }, { name = "tree-sitter-printf", url = "tree-sitter-grammars/tree-sitter-printf", - version = "0.0.31-1" + version = "0.0.32-1" }, { name = "tree-sitter-prisma", url = "victorhqc/tree-sitter-prisma", @@ -1882,7 +1906,7 @@ return }, { name = "tree-sitter-python", url = "tree-sitter/tree-sitter-python", - version = "0.0.39-1" + version = "0.0.40-1" }, { name = "tree-sitter-ql", url = "tree-sitter/tree-sitter-ql", @@ -1898,7 +1922,7 @@ return }, { name = "tree-sitter-query", url = "tree-sitter-grammars/tree-sitter-query", - version = "0.0.31-1" + version = "0.0.34-1" }, { name = "tree-sitter-r", url = "r-lib/tree-sitter-r", @@ -1915,6 +1939,10 @@ return name = "tree-sitter-rasi", url = "Fymyte/tree-sitter-rasi", version = "0.0.29-1" + }, { + name = "tree-sitter-razor", + url = "tris203/tree-sitter-razor", + version = "0.0.1-1" }, { name = "tree-sitter-rbs", url = "joker1007/tree-sitter-rbs", @@ -1966,11 +1994,11 @@ return }, { name = "tree-sitter-rst", url = "stsewd/tree-sitter-rst", - version = "0.0.31-1" + version = "0.0.32-1" }, { name = "tree-sitter-ruby", url = "tree-sitter/tree-sitter-ruby", - version = "0.0.34-1" + version = "0.0.35-1" }, { name = "tree-sitter-runescript", url = "2004Scape/tree-sitter-runescript", @@ -1978,11 +2006,11 @@ return }, { name = "tree-sitter-rust", url = "tree-sitter/tree-sitter-rust", - version = "0.0.40-1" + version = "0.0.41-1" }, { name = "tree-sitter-scala", url = "tree-sitter/tree-sitter-scala", - version = "0.0.44-1" + version = "0.0.46-1" }, { name = "tree-sitter-scfg", url = "rockorager/tree-sitter-scfg", @@ -1998,7 +2026,7 @@ return }, { name = "tree-sitter-sflog", url = "aheber/tree-sitter-sfapex", - version = "0.0.42-1" + version = "0.0.44-1" }, { name = "tree-sitter-slang", url = "tree-sitter-grammars/tree-sitter-slang", @@ -2030,11 +2058,11 @@ return }, { name = "tree-sitter-soql", url = "aheber/tree-sitter-sfapex", - version = "0.0.44-1" + version = "0.0.46-1" }, { name = "tree-sitter-sosl", url = "aheber/tree-sitter-sfapex", - version = "0.0.42-1" + version = "0.0.44-1" }, { name = "tree-sitter-sourcepawn", url = "nilshelmig/tree-sitter-sourcepawn", @@ -2042,7 +2070,7 @@ return }, { name = "tree-sitter-sparql", url = "GordianDziwis/tree-sitter-sparql", - version = "0.0.29-1" + version = "0.0.30-1" }, { name = "tree-sitter-sql", url = "derekstride/tree-sitter-sql", @@ -2074,7 +2102,7 @@ return }, { name = "tree-sitter-superhtml", url = "kristoff-it/superhtml", - version = "0.0.12-1" + version = "0.0.13-1" }, { name = "tree-sitter-surface", url = "connorlay/tree-sitter-surface", @@ -2090,7 +2118,7 @@ return }, { name = "tree-sitter-swift", url = "alex-pinkus/tree-sitter-swift", - version = "0.0.44-1" + version = "0.0.45-1" }, { name = "tree-sitter-sxhkdrc", url = "RaafatTurki/tree-sitter-sxhkdrc", @@ -2126,7 +2154,7 @@ return }, { name = "tree-sitter-templ", url = "vrischmann/tree-sitter-templ", - version = "0.0.44-1" + version = "0.0.45-1" }, { name = "tree-sitter-terraform", url = "MichaHoffmann/tree-sitter-hcl", @@ -2166,7 +2194,7 @@ return }, { name = "tree-sitter-tsx", url = "tree-sitter/tree-sitter-typescript", - version = "0.0.34-1" + version = "0.0.35-1" }, { name = "tree-sitter-turtle", url = "GordianDziwis/tree-sitter-turtle", @@ -2178,7 +2206,7 @@ return }, { name = "tree-sitter-typescript", url = "tree-sitter/tree-sitter-typescript", - version = "0.0.34-1" + version = "0.0.36-1" }, { name = "tree-sitter-typespec", url = "happenslol/tree-sitter-typespec", @@ -2190,7 +2218,7 @@ return }, { name = "tree-sitter-typst", url = "uben0/tree-sitter-typst", - version = "0.0.32-1" + version = "0.0.35-1" }, { name = "tree-sitter-udev", url = "tree-sitter-grammars/tree-sitter-udev", @@ -2214,7 +2242,7 @@ return }, { name = "tree-sitter-v", url = "vlang/v-analyzer", - version = "0.0.42-1" + version = "0.0.43-1" }, { name = "tree-sitter-vala", url = "vala-lang/tree-sitter-vala", @@ -2230,11 +2258,11 @@ return }, { name = "tree-sitter-vhdl", url = "jpt13653903/tree-sitter-vhdl", - version = "0.0.37-1" + version = "0.0.38-1" }, { name = "tree-sitter-vhs", url = "charmbracelet/tree-sitter-vhs", - version = "0.0.30-1" + version = "0.0.32-1" }, { name = "tree-sitter-vim", url = "tree-sitter-grammars/tree-sitter-vim", @@ -2274,7 +2302,7 @@ return }, { name = "tree-sitter-xml", url = "tree-sitter-grammars/tree-sitter-xml", - version = "0.0.35-1" + version = "0.0.36-1" }, { name = "tree-sitter-xresources", url = "ValdezFOmar/tree-sitter-xresources", @@ -2302,11 +2330,11 @@ return }, { name = "tree-sitter-ziggy", url = "kristoff-it/ziggy", - version = "0.0.8-1" + version = "0.0.9-1" }, { name = "tree-sitter-ziggy_schema", url = "kristoff-it/ziggy", - version = "0.0.8-1" + version = "0.0.9-1" }, { name = "treedoc.nvim", url = "neo451/treedoc.nvim", @@ -2314,7 +2342,7 @@ return }, { name = "trouble.nvim", url = "folke/trouble.nvim", - version = "3.7.0-1" + version = "3.7.1-1" }, { name = "ts-comments.nvim", url = "folke/ts-comments.nvim", @@ -2338,7 +2366,7 @@ return }, { name = "vgit.nvim", url = "tanvirtin/vgit.nvim", - version = "1.0.2-1" + version = "1.0.6-1" }, { name = "which-key.nvim", url = "folke/which-key.nvim", @@ -2350,7 +2378,7 @@ return }, { name = "winmove.nvim", url = "MisanthropicBit/winmove.nvim", - version = "0.1.1-1" + version = "0.1.2-1" }, { name = "wormhole.nvim", url = "NStefan002/wormhole.nvim", @@ -2363,10 +2391,14 @@ return name = "yanky.nvim", url = "gbprod/yanky.nvim", version = "2.0.0-1" + }, { + name = "yarepl.nvim", + url = "milanglacier/yarepl.nvim", + version = "0.10.1-1" }, { name = "yazi.nvim", url = "mikavilpas/yazi.nvim", - version = "7.5.1-1" + version = "7.5.4-1" }, { name = "zen-mode.nvim", url = "folke/zen-mode.nvim", From f81a3fb7feaf460ec7c8c983682b4a693b18fdd4 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 15 Feb 2025 23:06:09 +0100 Subject: [PATCH 336/342] fix(meta): disable top-level specs before the rest. Closes #1889 --- lua/lazy/core/meta.lua | 26 +++++++++++++++++++------- lua/lazy/types.lua | 1 + 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/lua/lazy/core/meta.lua b/lua/lazy/core/meta.lua index 88263a2..5e026f4 100644 --- a/lua/lazy/core/meta.lua +++ b/lua/lazy/core/meta.lua @@ -179,6 +179,7 @@ function M:_rebuild(name) local super = nil plugin.url = nil plugin._.dep = true + plugin._.top = true plugin.optional = true assert(#plugin._.frags > 0, "no fragments found for plugin " .. name) @@ -195,6 +196,7 @@ function M:_rebuild(name) plugin._.dep = plugin._.dep and fragment.dep plugin.optional = plugin.optional and (rawget(fragment.spec, "optional") == true) plugin.url = fragment.url or plugin.url + plugin._.top = plugin._.top and fragment.pid == nil -- dependencies for _, dep in ipairs(fragment.deps or {}) do @@ -302,16 +304,26 @@ end --- Removes plugins that are disabled. function M:fix_disabled() local changes = 0 - for _, plugin in pairs(self.plugins) do - if plugin.enabled == false or (type(plugin.enabled) == "function" and not plugin.enabled()) then - changes = changes + 1 - if plugin.optional then - self:del(plugin.name) - else - self:disable(plugin) + local function check(top) + for _, plugin in pairs(self.plugins) do + if plugin._.top == top then + if plugin.enabled == false or (type(plugin.enabled) == "function" and not plugin.enabled()) then + changes = changes + 1 + if plugin.optional then + self:del(plugin.name) + else + self:disable(plugin) + end + end end end end + -- disable top-level plugins first, since they may have non-top-level frags + -- that disable other plugins + check(true) + self:rebuild() + -- then disable non-top-level plugins + check(false) self:rebuild() return changes end diff --git a/lua/lazy/types.lua b/lua/lazy/types.lua index 6e406bb..7700229 100644 --- a/lua/lazy/types.lua +++ b/lua/lazy/types.lua @@ -10,6 +10,7 @@ ---@field dirty? boolean ---@field build? boolean ---@field frags? number[] +---@field top? boolean ---@field handlers? LazyPluginHandlers ---@field installed? boolean ---@field is_local? boolean From e5e9bf48211a13d9ee6c1077c88327c49c1ab4a0 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 15 Feb 2025 23:09:58 +0100 Subject: [PATCH 337/342] test: fix tests --- lua/lazy/core/meta.lua | 2 +- tests/core/plugin_spec.lua | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/lua/lazy/core/meta.lua b/lua/lazy/core/meta.lua index 5e026f4..0a55656 100644 --- a/lua/lazy/core/meta.lua +++ b/lua/lazy/core/meta.lua @@ -306,7 +306,7 @@ function M:fix_disabled() local changes = 0 local function check(top) for _, plugin in pairs(self.plugins) do - if plugin._.top == top then + if (plugin._.top or false) == top then if plugin.enabled == false or (type(plugin.enabled) == "function" and not plugin.enabled()) then changes = changes + 1 if plugin.optional then diff --git a/tests/core/plugin_spec.lua b/tests/core/plugin_spec.lua index 166dc2a..7982649 100644 --- a/tests/core/plugin_spec.lua +++ b/tests/core/plugin_spec.lua @@ -25,6 +25,7 @@ local function clean(plugins) if plugin._.dep == false then plugin._.dep = nil end + plugin._.top = nil return plugin end, plugins) end From a8c6db5da7bd382094606340eed015d14fbb5654 Mon Sep 17 00:00:00 2001 From: Salomon Popp Date: Mon, 24 Feb 2025 07:20:35 +0100 Subject: [PATCH 338/342] style(types): add optional return value for `LazyKeysSpec` rhs (#1924) ## Description when `expr=true` the rhs function should return a string. example ```lua { keys = { { 'j', function() return require('dial.map').inc_normal() end, expr = true, desc = 'Increment value', } } } ``` ## Related Issue(s) ## Screenshots --- lua/lazy/core/handler/keys.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/lazy/core/handler/keys.lua b/lua/lazy/core/handler/keys.lua index 57fbc18..5b5f173 100644 --- a/lua/lazy/core/handler/keys.lua +++ b/lua/lazy/core/handler/keys.lua @@ -11,7 +11,7 @@ local Util = require("lazy.core.util") ---@class LazyKeysSpec: LazyKeysBase ---@field [1] string lhs ----@field [2]? string|fun()|false rhs +---@field [2]? string|fun():string?|false rhs ---@field mode? string|string[] ---@class LazyKeys: LazyKeysBase From 96a205c8cea5476e5a87ed228acf2f221e4eae64 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 25 Feb 2025 19:14:41 +0100 Subject: [PATCH 339/342] chore(main): release 11.17.0 (#1877) :robot: I have created a release *beep* *boop* --- ## [11.17.0](https://github.com/folke/lazy.nvim/compare/v11.16.2...v11.17.0) (2025-02-24) ### Features * **config,render:** allow customizing the debug icon ([#1863](https://github.com/folke/lazy.nvim/issues/1863)) ([a9c660d](https://github.com/folke/lazy.nvim/commit/a9c660d6ef1b396869d3d951760aa7a3dbfe575f)) * **util:** pass lang to `vim.notify` so that snacks notifier can render the ft. Closes [#1919](https://github.com/folke/lazy.nvim/issues/1919) ([c6a57a3](https://github.com/folke/lazy.nvim/commit/c6a57a3534d3494bcc5ff9b0586e141bdb0280eb)) ### Bug Fixes * **config:** add missing space on the default debug icon ([#1879](https://github.com/folke/lazy.nvim/issues/1879)) ([4df5c4d](https://github.com/folke/lazy.nvim/commit/4df5c4d65a3bbf801edd9ec55fb1ae55cfa72dd0)) * **meta:** disable top-level specs before the rest. Closes [#1889](https://github.com/folke/lazy.nvim/issues/1889) ([f81a3fb](https://github.com/folke/lazy.nvim/commit/f81a3fb7feaf460ec7c8c983682b4a693b18fdd4)) * **ui:** do not show virt_lines for messages ([#1904](https://github.com/folke/lazy.nvim/issues/1904)) ([f15a939](https://github.com/folke/lazy.nvim/commit/f15a93907ddad3d9139aea465ae18336d87f5ce6)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 15 +++++++++++++++ lua/lazy/core/config.lua | 2 +- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index d5dbcb3..e392eaf 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "11.16.2" + ".": "11.17.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 015288e..d4dde26 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,20 @@ # Changelog +## [11.17.0](https://github.com/folke/lazy.nvim/compare/v11.16.2...v11.17.0) (2025-02-24) + + +### Features + +* **config,render:** allow customizing the debug icon ([#1863](https://github.com/folke/lazy.nvim/issues/1863)) ([a9c660d](https://github.com/folke/lazy.nvim/commit/a9c660d6ef1b396869d3d951760aa7a3dbfe575f)) +* **util:** pass lang to `vim.notify` so that snacks notifier can render the ft. Closes [#1919](https://github.com/folke/lazy.nvim/issues/1919) ([c6a57a3](https://github.com/folke/lazy.nvim/commit/c6a57a3534d3494bcc5ff9b0586e141bdb0280eb)) + + +### Bug Fixes + +* **config:** add missing space on the default debug icon ([#1879](https://github.com/folke/lazy.nvim/issues/1879)) ([4df5c4d](https://github.com/folke/lazy.nvim/commit/4df5c4d65a3bbf801edd9ec55fb1ae55cfa72dd0)) +* **meta:** disable top-level specs before the rest. Closes [#1889](https://github.com/folke/lazy.nvim/issues/1889) ([f81a3fb](https://github.com/folke/lazy.nvim/commit/f81a3fb7feaf460ec7c8c983682b4a693b18fdd4)) +* **ui:** do not show virt_lines for messages ([#1904](https://github.com/folke/lazy.nvim/issues/1904)) ([f15a939](https://github.com/folke/lazy.nvim/commit/f15a93907ddad3d9139aea465ae18336d87f5ce6)) + ## [11.16.2](https://github.com/folke/lazy.nvim/compare/v11.16.1...v11.16.2) (2024-12-13) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 49339e5..16b5e2c 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -242,7 +242,7 @@ function M.hererocks() return M.options.rocks.hererocks end -M.version = "11.16.2" -- x-release-please-version +M.version = "11.17.0" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 1c9ba3704564a2e34a22191bb89678680ffeb245 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Tue, 25 Feb 2025 20:02:30 +0100 Subject: [PATCH 340/342] fix(bootstrap): support for older Neovim versions --- bootstrap.lua | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/bootstrap.lua b/bootstrap.lua index 88c1a44..c934c48 100644 --- a/bootstrap.lua +++ b/bootstrap.lua @@ -6,6 +6,7 @@ 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 @@ -13,12 +14,12 @@ function M.setup() end end - if vim.env.LAZY_PATH and not vim.uv.fs_stat(vim.env.LAZY_PATH) then + 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 (vim.uv or vim.loop).fs_stat(lazypath) then + if not vim.env.LAZY_PATH and not uv.fs_stat(lazypath) then vim.api.nvim_echo({ { "Cloning lazy.nvim\n\n", From d51cf6978321d659e68a8bc38ee806bd2517a196 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Tue, 25 Feb 2025 20:18:25 +0100 Subject: [PATCH 341/342] fix(meta): rebuild dirty right after disable. See #1889 --- lua/lazy/core/meta.lua | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lua/lazy/core/meta.lua b/lua/lazy/core/meta.lua index 0a55656..6fbdfc4 100644 --- a/lua/lazy/core/meta.lua +++ b/lua/lazy/core/meta.lua @@ -314,6 +314,7 @@ function M:fix_disabled() else self:disable(plugin) end + self:rebuild() end end end @@ -321,10 +322,8 @@ function M:fix_disabled() -- disable top-level plugins first, since they may have non-top-level frags -- that disable other plugins check(true) - self:rebuild() -- then disable non-top-level plugins check(false) - self:rebuild() return changes end From 6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 25 Feb 2025 20:19:57 +0100 Subject: [PATCH 342/342] chore(main): release 11.17.1 (#1927) :robot: I have created a release *beep* *boop* --- ## [11.17.1](https://github.com/folke/lazy.nvim/compare/v11.17.0...v11.17.1) (2025-02-25) ### Bug Fixes * **bootstrap:** support for older Neovim versions ([1c9ba37](https://github.com/folke/lazy.nvim/commit/1c9ba3704564a2e34a22191bb89678680ffeb245)) * **meta:** rebuild dirty right after disable. See [#1889](https://github.com/folke/lazy.nvim/issues/1889) ([d51cf69](https://github.com/folke/lazy.nvim/commit/d51cf6978321d659e68a8bc38ee806bd2517a196)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 8 ++++++++ lua/lazy/core/config.lua | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index e392eaf..dd77c5c 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "11.17.0" + ".": "11.17.1" } diff --git a/CHANGELOG.md b/CHANGELOG.md index d4dde26..521777a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## [11.17.1](https://github.com/folke/lazy.nvim/compare/v11.17.0...v11.17.1) (2025-02-25) + + +### Bug Fixes + +* **bootstrap:** support for older Neovim versions ([1c9ba37](https://github.com/folke/lazy.nvim/commit/1c9ba3704564a2e34a22191bb89678680ffeb245)) +* **meta:** rebuild dirty right after disable. See [#1889](https://github.com/folke/lazy.nvim/issues/1889) ([d51cf69](https://github.com/folke/lazy.nvim/commit/d51cf6978321d659e68a8bc38ee806bd2517a196)) + ## [11.17.0](https://github.com/folke/lazy.nvim/compare/v11.16.2...v11.17.0) (2025-02-24) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 16b5e2c..603dd1a 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -242,7 +242,7 @@ function M.hererocks() return M.options.rocks.hererocks end -M.version = "11.17.0" -- x-release-please-version +M.version = "11.17.1" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy")