From 09e30f88cd4b47704005c41f0486a628b0b8d774 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 7 Oct 2023 20:41:06 +0200 Subject: [PATCH 001/527] fix(keys): fixed buffer-local mappings --- lua/lazy/core/handler/keys.lua | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/lua/lazy/core/handler/keys.lua b/lua/lazy/core/handler/keys.lua index 5db4f0f..35d7fb0 100644 --- a/lua/lazy/core/handler/keys.lua +++ b/lua/lazy/core/handler/keys.lua @@ -72,7 +72,7 @@ function M:_add(keys) local plugins = self.active[keys.id] -- always delete the mapping immediately to prevent recursive mappings - self:_del(keys, buf) + self:_del(keys) self.active[keys.id] = nil if plugins then @@ -81,6 +81,11 @@ function M:_add(keys) Util.track() end + -- Create the real buffer-local mapping + if keys.ft then + self:_set(keys, buf) + end + local feed = vim.api.nvim_replace_termcodes("" .. lhs, true, true, true) -- insert instead of append the lhs vim.api.nvim_feedkeys(feed, "i", false) @@ -93,6 +98,7 @@ function M:_add(keys) }) end + -- buffer-local mappings if keys.ft then vim.api.nvim_create_autocmd("FileType", { pattern = keys.ft, @@ -102,9 +108,7 @@ function M:_add(keys) else -- Only create the mapping if its managed by lazy -- otherwise the plugin is supposed to manage it - if keys[2] then - self:_del(keys, event.buf) - end + self:_set(keys, event.buf) end end, }) @@ -113,10 +117,22 @@ function M:_add(keys) end end +-- Delete a mapping and create the real global +-- mapping when needed +---@param keys LazyKeys +function M:_del(keys) + pcall(vim.keymap.del, keys.mode, keys[1]) + -- make sure to create global mappings when needed + -- buffer-local mappings are managed by lazy + if not keys.ft then + self:_set(keys) + end +end + +-- Create a mapping if it is managed by lazy ---@param keys LazyKeys ---@param buf number? -function M:_del(keys, buf) - pcall(vim.keymap.del, keys.mode, keys[1], { buffer = buf }) +function M:_set(keys, buf) if keys[2] then local opts = M.opts(keys) opts.buffer = buf From 62745a7320f48a00ac4f7b0591352608cbc6bcea Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 7 Oct 2023 20:45:37 +0200 Subject: [PATCH 002/527] chore(main): release 10.7.3 (#1087) 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 b9a823e..6b6da43 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [10.7.3](https://github.com/folke/lazy.nvim/compare/v10.7.2...v10.7.3) (2023-10-07) + + +### Bug Fixes + +* **keys:** fixed buffer-local mappings ([09e30f8](https://github.com/folke/lazy.nvim/commit/09e30f88cd4b47704005c41f0486a628b0b8d774)) + ## [10.7.2](https://github.com/folke/lazy.nvim/compare/v10.7.1...v10.7.2) (2023-10-07) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 773d885..d44efc0 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -161,7 +161,7 @@ M.defaults = { debug = false, } -M.version = "10.7.2" -- x-release-please-version +M.version = "10.7.3" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From b79099cc9d768241162bb45d284d6a243736b9fb Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sun, 8 Oct 2023 10:11:25 +0200 Subject: [PATCH 003/527] feat(keys): refactor code and allow disabling keymaps per mode. mode no longer needs to be exactly the same in order to disable. --- lua/lazy/core/handler/init.lua | 3 ++ lua/lazy/core/handler/keys.lua | 96 ++++++++++++++++++++++------------ lua/lazy/types.lua | 2 +- lua/lazy/view/render.lua | 2 +- 4 files changed, 68 insertions(+), 35 deletions(-) diff --git a/lua/lazy/core/handler/init.lua b/lua/lazy/core/handler/init.lua index 9c6b92d..9a3fd5a 100644 --- a/lua/lazy/core/handler/init.lua +++ b/lua/lazy/core/handler/init.lua @@ -5,6 +5,7 @@ local Config = require("lazy.core.config") ---@field type LazyHandlerTypes ---@field extends? LazyHandler ---@field active table> +---@field managed table ---@field super LazyHandler local M = {} @@ -64,6 +65,7 @@ function M.new(type) local self = setmetatable({}, { __index = setmetatable(handler, { __index = super }) }) self.super = super self.active = {} + self.managed = {} self.type = type return self end @@ -94,6 +96,7 @@ function M:add(plugin) self.active[key] = {} self:_add(value) end + self.managed[key] = self.managed[key] self.active[key][plugin.name] = plugin.name end end diff --git a/lua/lazy/core/handler/keys.lua b/lua/lazy/core/handler/keys.lua index 35d7fb0..9253102 100644 --- a/lua/lazy/core/handler/keys.lua +++ b/lua/lazy/core/handler/keys.lua @@ -1,60 +1,89 @@ local Util = require("lazy.core.util") local Loader = require("lazy.core.loader") ----@class LazyKeys ----@field [1] string lhs ----@field [2]? string|fun()|false rhs +---@class LazyKeysBase ---@field desc? string ----@field mode? string|string[] ---@field noremap? boolean ---@field remap? boolean ---@field expr? boolean +---@field nowait? boolean ---@field ft? string|string[] + +---@class LazyKeysSpec: LazyKeysBase +---@field [1] string lhs +---@field [2]? string|fun()|false rhs +---@field mode? string|string[] + +---@class LazyKeys: LazyKeysBase +---@field lhs string lhs +---@field rhs? string|fun() rhs +---@field mode? string ---@field id string ---@class LazyKeysHandler:LazyHandler local M = {} ----@param value string|LazyKeys -function M.parse(value) - local ret = vim.deepcopy(value) - ret = type(ret) == "string" and { ret } or ret --[[@as LazyKeys]] - ret.mode = ret.mode or "n" - ret.id = vim.api.nvim_replace_termcodes(ret[1] or "", true, true, true) - if ret.mode then - local mode = ret.mode - if type(mode) == "table" then - ---@cast mode string[] - table.sort(mode) - mode = table.concat(mode, ", ") - end - if mode ~= "n" then - ret.id = ret.id .. " (" .. mode .. ")" - end +---@param value string|LazyKeysSpec +---@param mode? string +---@return LazyKeys +function M.parse(value, mode) + value = type(value) == "string" and { value } or value --[[@as LazyKeysSpec]] + local ret = vim.deepcopy(value) --[[@as LazyKeys]] + ret.lhs = ret[1] or "" + ret.rhs = ret[2] + ---@diagnostic disable-next-line: no-unknown + ret[1] = nil + ---@diagnostic disable-next-line: no-unknown + ret[2] = nil + ret.mode = mode or "n" + ret.id = vim.api.nvim_replace_termcodes(ret.lhs, true, true, true) + if ret.mode ~= "n" then + ret.id = ret.id .. " (" .. ret.mode .. ")" end return ret end +---@param lhs string +---@param mode? string +function M:have(lhs, mode) + local keys = M.parse(lhs, mode) + return self.managed[keys.id] +end + ---@param plugin LazyPlugin function M:values(plugin) - ---@type table + return M.resolve(plugin.keys) +end + +---@param spec? (string|LazyKeysSpec)[] +function M.resolve(spec) + ---@type LazyKeys[] local values = {} ---@diagnostic disable-next-line: no-unknown - for _, value in ipairs(plugin[self.type] or {}) do - local keys = M.parse(value) - if keys[2] == vim.NIL or keys[2] == false then - values[keys.id] = nil - else - values[keys.id] = keys + for _, value in ipairs(spec or {}) do + value = type(value) == "string" and { value } or value --[[@as LazyKeysSpec]] + value.mode = value.mode or "n" + local modes = (type(value.mode) == "table" and value.mode or { value.mode }) --[=[@as string[]]=] + for _, mode in ipairs(modes) do + local keys = M.parse(value, mode) + if keys.rhs == vim.NIL or keys.rhs == false then + values[keys.id] = nil + else + values[keys.id] = keys + end end end return values end +---@param keys LazyKeys function M.opts(keys) - local opts = {} + local skip = { mode = true, id = true, ft = true, rhs = true, lhs = true } + local opts = {} ---@type LazyKeysBase + ---@diagnostic disable-next-line: no-unknown for k, v in pairs(keys) do - if type(k) ~= "number" and k ~= "mode" and k ~= "id" and k ~= "ft" then + if type(k) ~= "number" and not skip[k] then + ---@diagnostic disable-next-line: no-unknown opts[k] = v end end @@ -63,7 +92,7 @@ end ---@param keys LazyKeys function M:_add(keys) - local lhs = keys[1] + local lhs = keys.lhs local opts = M.opts(keys) ---@param buf? number @@ -121,7 +150,7 @@ end -- mapping when needed ---@param keys LazyKeys function M:_del(keys) - pcall(vim.keymap.del, keys.mode, keys[1]) + pcall(vim.keymap.del, keys.mode, keys.lhs) -- make sure to create global mappings when needed -- buffer-local mappings are managed by lazy if not keys.ft then @@ -133,10 +162,11 @@ end ---@param keys LazyKeys ---@param buf number? function M:_set(keys, buf) - if keys[2] then + if keys.rhs then local opts = M.opts(keys) + ---@diagnostic disable-next-line: inject-field opts.buffer = buf - vim.keymap.set(keys.mode, keys[1], keys[2], opts) + vim.keymap.set(keys.mode, keys.lhs, keys.rhs, opts) end end diff --git a/lua/lazy/types.lua b/lua/lazy/types.lua index 30363b6..3e7f74d 100644 --- a/lua/lazy/types.lua +++ b/lua/lazy/types.lua @@ -32,7 +32,7 @@ ---@field event? string[] ---@field cmd? string[] ---@field ft? string[] ----@field keys? (string|LazyKeys)[] +---@field keys? (string|LazyKeysSpec)[] ---@field module? false ---@class LazyPluginRef diff --git a/lua/lazy/view/render.lua b/lua/lazy/view/render.lua index 5b1f9af..319d627 100644 --- a/lua/lazy/view/render.lua +++ b/lua/lazy/view/render.lua @@ -331,7 +331,7 @@ function M:reason(reason, opts) value = value:match("User (.*)") or value end if key == "keys" then - value = type(value) == "string" and value or value[1] + value = type(value) == "string" and value or value.lhs end local hl = "LazyReason" .. key:sub(1, 1):upper() .. key:sub(2) local icon = Config.options.ui.icons[key] From cd7493da78ab1117c404f0c470ddc2dabd9f3cfe Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 8 Oct 2023 08:12:09 +0000 Subject: [PATCH 004/527] 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 66aca31..4a4a451 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: 2023 October 07 +*lazy.nvim.txt* For Neovim >= 0.8.0 Last change: 2023 October 08 ============================================================================== Table of Contents *lazy.nvim-table-of-contents* From 4b5b03f60319bdf67cada9d72e549dc21a92d5f1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 8 Oct 2023 10:13:01 +0200 Subject: [PATCH 005/527] chore(main): release 10.8.0 (#1088) 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 6b6da43..c47ce35 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [10.8.0](https://github.com/folke/lazy.nvim/compare/v10.7.3...v10.8.0) (2023-10-08) + + +### Features + +* **keys:** refactor code and allow disabling keymaps per mode. mode no longer needs to be exactly the same in order to disable. ([b79099c](https://github.com/folke/lazy.nvim/commit/b79099cc9d768241162bb45d284d6a243736b9fb)) + ## [10.7.3](https://github.com/folke/lazy.nvim/compare/v10.7.2...v10.7.3) (2023-10-07) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index d44efc0..5797511 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -161,7 +161,7 @@ M.defaults = { debug = false, } -M.version = "10.7.3" -- x-release-please-version +M.version = "10.8.0" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 26762c97e6dc3fddf141db0e82d044ee73e5f78d Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sun, 8 Oct 2023 12:36:21 +0200 Subject: [PATCH 006/527] fix(ui): use correct keymap for display. Fixes #1089 --- 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 319d627..852a5d2 100644 --- a/lua/lazy/view/render.lua +++ b/lua/lazy/view/render.lua @@ -331,7 +331,7 @@ function M:reason(reason, opts) value = value:match("User (.*)") or value end if key == "keys" then - value = type(value) == "string" and value or value.lhs + value = type(value) == "string" and value or value.lhs or value[1] end local hl = "LazyReason" .. key:sub(1, 1):upper() .. key:sub(2) local icon = Config.options.ui.icons[key] From 9102d051a8e27298f4c913e3017ac44f151ae820 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 8 Oct 2023 12:57:44 +0200 Subject: [PATCH 007/527] chore(main): release 10.8.1 (#1090) 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 c47ce35..e2b225b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [10.8.1](https://github.com/folke/lazy.nvim/compare/v10.8.0...v10.8.1) (2023-10-08) + + +### Bug Fixes + +* **ui:** use correct keymap for display. Fixes [#1089](https://github.com/folke/lazy.nvim/issues/1089) ([26762c9](https://github.com/folke/lazy.nvim/commit/26762c97e6dc3fddf141db0e82d044ee73e5f78d)) + ## [10.8.0](https://github.com/folke/lazy.nvim/compare/v10.7.3...v10.8.0) (2023-10-08) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 5797511..4410939 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -161,7 +161,7 @@ M.defaults = { debug = false, } -M.version = "10.8.0" -- x-release-please-version +M.version = "10.8.1" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 9d92e65fd17d35f97bed43dc92810576a57376fc Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sun, 8 Oct 2023 19:14:33 +0200 Subject: [PATCH 008/527] fix(keys): fixed adding managed keys --- lua/lazy/core/handler/init.lua | 2 +- lua/lazy/core/handler/keys.lua | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lua/lazy/core/handler/init.lua b/lua/lazy/core/handler/init.lua index 9a3fd5a..dce3415 100644 --- a/lua/lazy/core/handler/init.lua +++ b/lua/lazy/core/handler/init.lua @@ -95,8 +95,8 @@ function M:add(plugin) if not self.active[key] then self.active[key] = {} self:_add(value) + self.managed[key] = key end - self.managed[key] = self.managed[key] self.active[key][plugin.name] = plugin.name end end diff --git a/lua/lazy/core/handler/keys.lua b/lua/lazy/core/handler/keys.lua index 9253102..30a4b4f 100644 --- a/lua/lazy/core/handler/keys.lua +++ b/lua/lazy/core/handler/keys.lua @@ -47,7 +47,7 @@ end ---@param mode? string function M:have(lhs, mode) local keys = M.parse(lhs, mode) - return self.managed[keys.id] + return self.managed[keys.id] ~= nil end ---@param plugin LazyPlugin From 0a07fa6cd74db668e4859896d30f8f6ed2b60b13 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 8 Oct 2023 19:32:24 +0200 Subject: [PATCH 009/527] chore(main): release 10.8.2 (#1091) 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 e2b225b..ea2dadb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [10.8.2](https://github.com/folke/lazy.nvim/compare/v10.8.1...v10.8.2) (2023-10-08) + + +### Bug Fixes + +* **keys:** fixed adding managed keys ([9d92e65](https://github.com/folke/lazy.nvim/commit/9d92e65fd17d35f97bed43dc92810576a57376fc)) + ## [10.8.1](https://github.com/folke/lazy.nvim/compare/v10.8.0...v10.8.1) (2023-10-08) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 4410939..e676ab9 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -161,7 +161,7 @@ M.defaults = { debug = false, } -M.version = "10.8.1" -- x-release-please-version +M.version = "10.8.2" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From f0cfbf995238a42064e119bd1daa694fd1683ea3 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sun, 8 Oct 2023 20:22:01 +0200 Subject: [PATCH 010/527] perf: lazy require commands --- lua/lazy/core/util.lua | 13 +++++++++++++ lua/lazy/view/commands.lua | 1 + 2 files changed, 14 insertions(+) diff --git a/lua/lazy/core/util.lua b/lua/lazy/core/util.lua index d1d6bec..a11d3ae 100644 --- a/lua/lazy/core/util.lua +++ b/lua/lazy/core/util.lua @@ -411,4 +411,17 @@ function M.merge(...) return ret end +function M.lazy_require(module) + local mod = nil + -- if already loaded, return the module + -- otherwise return a lazy module + return type(package.loaded[module]) == "table" and package.loaded[module] + or setmetatable({}, { + __index = function(_, key) + mod = mod or require(module) + return mod[key] + end, + }) +end + return M diff --git a/lua/lazy/view/commands.lua b/lua/lazy/view/commands.lua index 1fa7cc1..c66611d 100644 --- a/lua/lazy/view/commands.lua +++ b/lua/lazy/view/commands.lua @@ -1,3 +1,4 @@ +local require = require("lazy.core.util").lazy_require local View = require("lazy.view") local Manage = require("lazy.manage") local Util = require("lazy.util") From 22bf6ae04bbfe0e11b3c539f8bd2ce66b72c328b Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Mon, 9 Oct 2023 11:25:42 +0200 Subject: [PATCH 011/527] style: sort requires --- lua/lazy/core/handler/cmd.lua | 2 +- lua/lazy/core/handler/event.lua | 2 +- lua/lazy/core/handler/init.lua | 2 +- lua/lazy/core/handler/keys.lua | 2 +- lua/lazy/core/loader.lua | 4 ++-- lua/lazy/core/plugin.lua | 2 +- lua/lazy/health.lua | 2 +- lua/lazy/manage/checker.lua | 6 +++--- lua/lazy/manage/git.lua | 4 ++-- lua/lazy/manage/init.lua | 2 +- lua/lazy/manage/reloader.lua | 4 ++-- lua/lazy/manage/runner.lua | 2 +- lua/lazy/manage/task/fs.lua | 2 +- lua/lazy/manage/task/git.lua | 2 +- lua/lazy/manage/task/plugin.lua | 4 ++-- lua/lazy/state.lua | 2 +- lua/lazy/view/commands.lua | 4 ++-- lua/lazy/view/float.lua | 2 +- lua/lazy/view/init.lua | 8 ++++---- lua/lazy/view/render.lua | 6 +++--- stylua.toml | 5 ++++- tests/core/util_spec.lua | 2 +- 22 files changed, 37 insertions(+), 34 deletions(-) diff --git a/lua/lazy/core/handler/cmd.lua b/lua/lazy/core/handler/cmd.lua index 28c7d9b..6ff9623 100644 --- a/lua/lazy/core/handler/cmd.lua +++ b/lua/lazy/core/handler/cmd.lua @@ -1,5 +1,5 @@ -local Util = require("lazy.core.util") local Loader = require("lazy.core.loader") +local Util = require("lazy.core.util") ---@class LazyCmdHandler:LazyHandler local M = {} diff --git a/lua/lazy/core/handler/event.lua b/lua/lazy/core/handler/event.lua index 2fdaa51..3a8d9a7 100644 --- a/lua/lazy/core/handler/event.lua +++ b/lua/lazy/core/handler/event.lua @@ -1,6 +1,6 @@ -local Util = require("lazy.core.util") local Config = require("lazy.core.config") local Loader = require("lazy.core.loader") +local Util = require("lazy.core.util") ---@class LazyEventOpts ---@field event string diff --git a/lua/lazy/core/handler/init.lua b/lua/lazy/core/handler/init.lua index dce3415..127ccae 100644 --- a/lua/lazy/core/handler/init.lua +++ b/lua/lazy/core/handler/init.lua @@ -1,5 +1,5 @@ -local Util = require("lazy.core.util") local Config = require("lazy.core.config") +local Util = require("lazy.core.util") ---@class LazyHandler ---@field type LazyHandlerTypes diff --git a/lua/lazy/core/handler/keys.lua b/lua/lazy/core/handler/keys.lua index 30a4b4f..9a87128 100644 --- a/lua/lazy/core/handler/keys.lua +++ b/lua/lazy/core/handler/keys.lua @@ -1,5 +1,5 @@ -local Util = require("lazy.core.util") local Loader = require("lazy.core.loader") +local Util = require("lazy.core.util") ---@class LazyKeysBase ---@field desc? string diff --git a/lua/lazy/core/loader.lua b/lua/lazy/core/loader.lua index 1912338..9e62371 100644 --- a/lua/lazy/core/loader.lua +++ b/lua/lazy/core/loader.lua @@ -1,8 +1,8 @@ -local Util = require("lazy.core.util") +local Cache = require("lazy.core.cache") local Config = require("lazy.core.config") local Handler = require("lazy.core.handler") local Plugin = require("lazy.core.plugin") -local Cache = require("lazy.core.cache") +local Util = require("lazy.core.util") ---@class LazyCoreLoader local M = {} diff --git a/lua/lazy/core/plugin.lua b/lua/lazy/core/plugin.lua index 12ba1a8..3e5743a 100644 --- a/lua/lazy/core/plugin.lua +++ b/lua/lazy/core/plugin.lua @@ -1,6 +1,6 @@ local Config = require("lazy.core.config") -local Util = require("lazy.core.util") local Handler = require("lazy.core.handler") +local Util = require("lazy.core.util") ---@class LazyCorePlugin local M = {} diff --git a/lua/lazy/health.lua b/lua/lazy/health.lua index 8757b77..929092d 100644 --- a/lua/lazy/health.lua +++ b/lua/lazy/health.lua @@ -54,7 +54,7 @@ function M.check() local spec = Config.spec if spec == nil then - error("No plugins loaded. Did you forget to run `require(\"lazy\").setup()`?") + error('No plugins loaded. Did you forget to run `require("lazy").setup()`?') else for _, plugin in pairs(spec.plugins) do M.check_valid(plugin) diff --git a/lua/lazy/manage/checker.lua b/lua/lazy/manage/checker.lua index 1cc5322..803972e 100644 --- a/lua/lazy/manage/checker.lua +++ b/lua/lazy/manage/checker.lua @@ -1,9 +1,9 @@ local Config = require("lazy.core.config") -local Manage = require("lazy.manage") -local Util = require("lazy.util") -local Plugin = require("lazy.core.plugin") local Git = require("lazy.manage.git") +local Manage = require("lazy.manage") +local Plugin = require("lazy.core.plugin") local State = require("lazy.state") +local Util = require("lazy.util") local M = {} diff --git a/lua/lazy/manage/git.lua b/lua/lazy/manage/git.lua index 116c5fe..98c44b5 100644 --- a/lua/lazy/manage/git.lua +++ b/lua/lazy/manage/git.lua @@ -1,7 +1,7 @@ -local Util = require("lazy.util") -local Semver = require("lazy.manage.semver") local Config = require("lazy.core.config") local Process = require("lazy.manage.process") +local Semver = require("lazy.manage.semver") +local Util = require("lazy.util") local M = {} diff --git a/lua/lazy/manage/init.lua b/lua/lazy/manage/init.lua index 05ffa88..49953f0 100644 --- a/lua/lazy/manage/init.lua +++ b/lua/lazy/manage/init.lua @@ -1,6 +1,6 @@ local Config = require("lazy.core.config") -local Runner = require("lazy.manage.runner") local Plugin = require("lazy.core.plugin") +local Runner = require("lazy.manage.runner") local M = {} diff --git a/lua/lazy/manage/reloader.lua b/lua/lazy/manage/reloader.lua index 6938231..c48cc9f 100644 --- a/lua/lazy/manage/reloader.lua +++ b/lua/lazy/manage/reloader.lua @@ -1,7 +1,7 @@ local Config = require("lazy.core.config") -local Util = require("lazy.util") -local Plugin = require("lazy.core.plugin") local Loader = require("lazy.core.loader") +local Plugin = require("lazy.core.plugin") +local Util = require("lazy.util") local M = {} diff --git a/lua/lazy/manage/runner.lua b/lua/lazy/manage/runner.lua index 7e556f2..85c20be 100644 --- a/lua/lazy/manage/runner.lua +++ b/lua/lazy/manage/runner.lua @@ -1,5 +1,5 @@ -local Task = require("lazy.manage.task") local Config = require("lazy.core.config") +local Task = require("lazy.manage.task") local Util = require("lazy.util") ---@class RunnerOpts diff --git a/lua/lazy/manage/task/fs.lua b/lua/lazy/manage/task/fs.lua index 9386f76..525997e 100644 --- a/lua/lazy/manage/task/fs.lua +++ b/lua/lazy/manage/task/fs.lua @@ -1,5 +1,5 @@ -local Util = require("lazy.util") local Config = require("lazy.core.config") +local Util = require("lazy.util") ---@type table local M = {} diff --git a/lua/lazy/manage/task/git.lua b/lua/lazy/manage/task/git.lua index bcecfec..74f7dfb 100644 --- a/lua/lazy/manage/task/git.lua +++ b/lua/lazy/manage/task/git.lua @@ -1,6 +1,6 @@ +local Config = require("lazy.core.config") local Git = require("lazy.manage.git") local Lock = require("lazy.manage.lock") -local Config = require("lazy.core.config") local Util = require("lazy.util") ---@type table diff --git a/lua/lazy/manage/task/plugin.lua b/lua/lazy/manage/task/plugin.lua index fd6153b..ea623ee 100644 --- a/lua/lazy/manage/task/plugin.lua +++ b/lua/lazy/manage/task/plugin.lua @@ -1,6 +1,6 @@ -local Util = require("lazy.util") -local Loader = require("lazy.core.loader") local Config = require("lazy.core.config") +local Loader = require("lazy.core.loader") +local Util = require("lazy.util") ---@type table local M = {} diff --git a/lua/lazy/state.lua b/lua/lazy/state.lua index 80e4c2e..cb4cd4d 100644 --- a/lua/lazy/state.lua +++ b/lua/lazy/state.lua @@ -1,5 +1,5 @@ -local Util = require("lazy.util") local Config = require("lazy.core.config") +local Util = require("lazy.util") ---@type LazyState local M = {} diff --git a/lua/lazy/view/commands.lua b/lua/lazy/view/commands.lua index c66611d..a826827 100644 --- a/lua/lazy/view/commands.lua +++ b/lua/lazy/view/commands.lua @@ -1,8 +1,8 @@ local require = require("lazy.core.util").lazy_require -local View = require("lazy.view") +local Config = require("lazy.core.config") local Manage = require("lazy.manage") local Util = require("lazy.util") -local Config = require("lazy.core.config") +local View = require("lazy.view") local ViewConfig = require("lazy.view.config") local M = {} diff --git a/lua/lazy/view/float.lua b/lua/lazy/view/float.lua index a879640..f69108e 100644 --- a/lua/lazy/view/float.lua +++ b/lua/lazy/view/float.lua @@ -1,6 +1,6 @@ local Config = require("lazy.core.config") -local ViewConfig = require("lazy.view.config") local Util = require("lazy.util") +local ViewConfig = require("lazy.view.config") ---@class LazyFloatOptions ---@field buf? number diff --git a/lua/lazy/view/init.lua b/lua/lazy/view/init.lua index 869fac7..1be4b16 100644 --- a/lua/lazy/view/init.lua +++ b/lua/lazy/view/init.lua @@ -1,10 +1,10 @@ -local Util = require("lazy.util") -local Render = require("lazy.view.render") local Config = require("lazy.core.config") -local ViewConfig = require("lazy.view.config") -local Git = require("lazy.manage.git") local Diff = require("lazy.view.diff") local Float = require("lazy.view.float") +local Git = require("lazy.manage.git") +local Render = require("lazy.view.render") +local Util = require("lazy.util") +local ViewConfig = require("lazy.view.config") ---@class LazyViewState ---@field mode string diff --git a/lua/lazy/view/render.lua b/lua/lazy/view/render.lua index 852a5d2..cc677b9 100644 --- a/lua/lazy/view/render.lua +++ b/lua/lazy/view/render.lua @@ -1,9 +1,9 @@ local Config = require("lazy.core.config") -local Util = require("lazy.util") -local Sections = require("lazy.view.sections") -local Handler = require("lazy.core.handler") local Git = require("lazy.manage.git") +local Handler = require("lazy.core.handler") local Plugin = require("lazy.core.plugin") +local Sections = require("lazy.view.sections") +local Util = require("lazy.util") local ViewConfig = require("lazy.view.config") local Text = require("lazy.view.text") diff --git a/stylua.toml b/stylua.toml index 5d6c50d..9732fe6 100644 --- a/stylua.toml +++ b/stylua.toml @@ -1,3 +1,6 @@ indent_type = "Spaces" indent_width = 2 -column_width = 120 \ No newline at end of file +column_width = 120 +[sort_requires] +enabled = true + diff --git a/tests/core/util_spec.lua b/tests/core/util_spec.lua index ee829a1..97c42c7 100644 --- a/tests/core/util_spec.lua +++ b/tests/core/util_spec.lua @@ -1,6 +1,6 @@ -local Util = require("lazy.util") local Cache = require("lazy.core.cache") local Helpers = require("tests.helpers") +local Util = require("lazy.util") describe("util", function() local rtp = vim.opt.rtp:get() From ce3e8523de7adfa73b104c816ce21ba54d70006b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 9 Oct 2023 09:26:35 +0000 Subject: [PATCH 012/527] 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 4a4a451..a13634a 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: 2023 October 08 +*lazy.nvim.txt* For Neovim >= 0.8.0 Last change: 2023 October 09 ============================================================================== Table of Contents *lazy.nvim-table-of-contents* From 423a152e94db37dd535d56e6cb6f06b282c5f081 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Mon, 9 Oct 2023 12:38:43 +0200 Subject: [PATCH 013/527] feat(profiling): added options to enable additional profiling --- README.md | 111 +++++++++++++++++++++------------------ lua/lazy/core/config.lua | 10 ++++ lua/lazy/core/util.lua | 2 +- lua/lazy/init.lua | 36 ++++++++++--- lua/lazy/view/colors.lua | 1 + lua/lazy/view/render.lua | 2 +- 6 files changed, 102 insertions(+), 60 deletions(-) diff --git a/README.md b/README.md index fb1a377..31963fc 100644 --- a/README.md +++ b/README.md @@ -355,6 +355,7 @@ return { not_loaded = "○", plugin = " ", runtime = " ", + require = "󰢱 ", source = " ", start = "", task = "✔ ", @@ -448,6 +449,15 @@ return { -- 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, + }, } ``` @@ -495,24 +505,24 @@ 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!!) | +| 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 | +| `: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 | @@ -763,39 +773,40 @@ To uninstall **lazy.nvim**, you need to remove the following files and directori -| 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** | **_@text.reference_** | 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_** | | -| **LazyReasonRuntime** | **_@macro_** | | -| **LazyReasonSource** | **_Character_** | | -| **LazyReasonStart** | **_@field_** | | -| **LazySpecial** | **_@punctuation.special_** | | -| **LazyTaskError** | **_ErrorMsg_** | task errors | -| **LazyTaskOutput** | **_MsgArea_** | task output | -| **LazyUrl** | **_@text.reference_** | url | -| **LazyValue** | **_@string_** | value of a property | +| 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** | ***@text.reference*** | 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** | ***@parameter*** | | +| **LazyReasonRuntime** | ***@macro*** | | +| **LazyReasonSource** | ***Character*** | | +| **LazyReasonStart** | ***@field*** | | +| **LazySpecial** | ***@punctuation.special*** | | +| **LazyTaskError** | ***ErrorMsg*** | task errors | +| **LazyTaskOutput** | ***MsgArea*** | task output | +| **LazyUrl** | ***@text.reference*** | url | +| **LazyValue** | ***@string*** | value of a property | diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index e676ab9..f4d948b 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -65,6 +65,7 @@ M.defaults = { not_loaded = "○", plugin = " ", runtime = " ", + require = "󰢱 ", source = " ", start = "", task = "✔ ", @@ -158,6 +159,15 @@ M.defaults = { -- 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, + }, debug = false, } diff --git a/lua/lazy/core/util.lua b/lua/lazy/core/util.lua index a11d3ae..da0fcf6 100644 --- a/lua/lazy/core/util.lua +++ b/lua/lazy/core/util.lua @@ -118,7 +118,7 @@ function M.get_source() if not info then break end - if info.what ~= "C" and not info.source:find("lazy.nvim", 1, true) then + if info.what ~= "C" and not info.source:find("lazy.nvim", 1, true) and info.source ~= "@vim/loader.lua" then return info.source:sub(2) end f = f + 1 diff --git a/lua/lazy/init.lua b/lua/lazy/init.lua index a2e0940..e219eaf 100644 --- a/lua/lazy/init.lua +++ b/lua/lazy/init.lua @@ -2,6 +2,23 @@ local M = {} M._start = 0 +local function profile_require() + local done = {} ---@type table + local r = require + _G.require = function(modname) + local Util = package.loaded["lazy.core.util"] + if Util and not done[modname] then + done[modname] = true + Util.track({ require = modname }) + local ret = vim.F.pack_len(r(modname)) + Util.track() + return vim.F.unpack_len(ret) + else + return r(modname) + end + end +end + ---@overload fun(opts: LazyConfig) ---@overload fun(spec:LazySpec, opts: LazyConfig) function M.setup(spec, opts) @@ -40,17 +57,16 @@ function M.setup(spec, opts) local Cache = require("lazy.core.cache") - local enable_cache = not ( - opts - and opts.performance - and opts.performance.cache - and opts.performance.cache.enabled == false - ) + local enable_cache = vim.tbl_get(opts, "performance", "cache", "enabled") ~= false -- load module cache before anything else if enable_cache then Cache.enable() end + if vim.tbl_get(opts, "profiling", "require") then + profile_require() + end + require("lazy.stats").track("LazyStart") local Util = require("lazy.core.util") @@ -59,8 +75,12 @@ function M.setup(spec, opts) table.insert(package.loaders, 3, Loader.loader) - if vim.g.profile_loaders then - Cache.profile_loaders() + if vim.tbl_get(opts, "profiling", "loader") then + if vim.loader then + vim.loader._profile({ loaders = true }) + else + Cache._profile_loaders() + end end Util.track({ plugin = "lazy.nvim" }) -- setup start diff --git a/lua/lazy/view/colors.lua b/lua/lazy/view/colors.lua index 6d43f1f..cc00a3a 100644 --- a/lua/lazy/view/colors.lua +++ b/lua/lazy/view/colors.lua @@ -26,6 +26,7 @@ M.colors = { ReasonFt = "Character", ReasonCmd = "Operator", ReasonImport = "Identifier", + ReasonRequire = "@parameter", Button = "CursorLine", ButtonActive = "Visual", TaskOutput = "MsgArea", -- task output diff --git a/lua/lazy/view/render.lua b/lua/lazy/view/render.lua index cc677b9..12c3da3 100644 --- a/lua/lazy/view/render.lua +++ b/lua/lazy/view/render.lua @@ -320,7 +320,7 @@ function M:reason(reason, opts) for _, key in ipairs(keys) do local value = reason[key] if type(key) == "number" then - elseif key == "require" then + -- elseif key == "require" then elseif key ~= "time" then if first then first = false From 336bbbebcb28e40283361562acca4daa2bd5f3d6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 9 Oct 2023 10:39:27 +0000 Subject: [PATCH 014/527] chore(build): auto-generate vimdoc --- doc/lazy.nvim.txt | 153 ++++++++++++++++++++++++++++------------------ 1 file changed, 93 insertions(+), 60 deletions(-) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index a13634a..8ee9960 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -454,6 +454,7 @@ CONFIGURATION *lazy.nvim-lazy.nvim-configuration* not_loaded = "○", plugin = " ", runtime = " ", + require = "󰢱 ", source = " ", start = "", task = "✔ ", @@ -547,6 +548,15 @@ CONFIGURATION *lazy.nvim-lazy.nvim-configuration* -- 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, + }, } < @@ -589,45 +599,63 @@ 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 + --------------------------------------------------------------------------------------------------- + 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 + :Lazy clear require("lazy").clear() Clear finished tasks - :Lazy debug require("lazy").debug() Show debug information + :Lazy debug require("lazy").debug() Show debug information - :Lazy health require("lazy").health() Run :checkhealth lazy + :Lazy health require("lazy").health() Run :checkhealth lazy - :Lazy help require("lazy").help() Toggle this help page + :Lazy help require("lazy").help() Toggle this help page - :Lazy home require("lazy").home() Go back to plugin list + :Lazy home require("lazy").home() Go back to plugin list - :Lazy install [plugins] require("lazy").install(opts?) Install missing plugins + :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 log [plugins] require("lazy").log(opts?) Show recent updates - :Lazy profile require("lazy").profile() Show detailed profiling + :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: @@ -883,72 +911,77 @@ HIGHLIGHT GROUPS *lazy.nvim-lazy.nvim-highlight-groups* Click to see all highlight groups ~ - --------------------------------------------------------------------------------- - Highlight Group Default Group Description - ------------------- ------------------------ ------------------------------------ - LazyButton CursorLine + ----------------------------------------------------------------------- + Highlight Group Default Group Description + ----------------------- ----------------------- ----------------------- + LazyButton CursorLine - LazyButtonActive Visual + LazyButtonActive Visual - LazyComment Comment + LazyComment Comment - LazyCommit _@variable.builtin_ commitref + LazyCommit @variable.builtin commit ref - LazyCommitIssue Number + LazyCommitIssue Number - LazyCommitScope Italic conventional commit scope + LazyCommitScope Italic conventional commit + scope - LazyCommitType Title conventional commit type + LazyCommitType Title conventional commit + type - LazyDimmed Conceal property + LazyDimmed Conceal property - LazyDir _@text.reference_ directory + LazyDir @text.reference directory - LazyH1 IncSearch homebutton + LazyH1 IncSearch home button - LazyH2 Bold titles + LazyH2 Bold titles - LazyLocal Constant + LazyLocal Constant - LazyNoCond DiagnosticWarn unloaded icon for a plugin where - cond() was false + LazyNoCond DiagnosticWarn unloaded icon for a + plugin where cond() was + false - LazyNormal NormalFloat + LazyNormal NormalFloat - LazyProgressDone Constant progress bar done + LazyProgressDone Constant progress bar done - LazyProgressTodo LineNr progress bar todo + LazyProgressTodo LineNr progress bar todo - LazyProp Conceal property + LazyProp Conceal property - LazyReasonCmd Operator + LazyReasonCmd Operator - LazyReasonEvent Constant + LazyReasonEvent Constant - LazyReasonFt Character + LazyReasonFt Character - LazyReasonImport Identifier + LazyReasonImport Identifier - LazyReasonKeys Statement + LazyReasonKeys Statement - LazyReasonPlugin Special + LazyReasonPlugin Special - LazyReasonRuntime _@macro_ + LazyReasonRequire @parameter - LazyReasonSource Character + LazyReasonRuntime @macro - LazyReasonStart _@field_ + LazyReasonSource Character - LazySpecial _@punctuation.special_ + LazyReasonStart @field - LazyTaskError ErrorMsg taskerrors + LazySpecial @punctuation.special - LazyTaskOutput MsgArea task output + LazyTaskError ErrorMsg task errors - LazyUrl _@text.reference_ url + LazyTaskOutput MsgArea task output - LazyValue _@string_ valueof a property - --------------------------------------------------------------------------------- + LazyUrl @text.reference url + + LazyValue @string value of a property + ----------------------------------------------------------------------- PLUGIN AUTHORS *lazy.nvim-lazy.nvim-plugin-authors* From 41d3b2a9dbf03774a2c92c376d8371dcca9710a9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 9 Oct 2023 12:43:14 +0200 Subject: [PATCH 015/527] chore(main): release 10.9.0 (#1092) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- CHANGELOG.md | 12 ++++++++++++ lua/lazy/core/config.lua | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ea2dadb..dcdecb9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,17 @@ # Changelog +## [10.9.0](https://github.com/folke/lazy.nvim/compare/v10.8.2...v10.9.0) (2023-10-09) + + +### Features + +* **profiling:** added options to enable additional profiling ([423a152](https://github.com/folke/lazy.nvim/commit/423a152e94db37dd535d56e6cb6f06b282c5f081)) + + +### Performance Improvements + +* lazy require commands ([f0cfbf9](https://github.com/folke/lazy.nvim/commit/f0cfbf995238a42064e119bd1daa694fd1683ea3)) + ## [10.8.2](https://github.com/folke/lazy.nvim/compare/v10.8.1...v10.8.2) (2023-10-08) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index f4d948b..4cb4568 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -171,7 +171,7 @@ M.defaults = { debug = false, } -M.version = "10.8.2" -- x-release-please-version +M.version = "10.9.0" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 5579d72576b21b9c8c2d01838598aece5dc2be6d Mon Sep 17 00:00:00 2001 From: KANATSU Minoru Date: Mon, 9 Oct 2023 23:17:42 +0900 Subject: [PATCH 016/527] fix(manage): prevend auto conversion 'CRLF' to 'LF' in update lazy-lock.json on Windows. Fixes #1093 (#1094) --- 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 4545f74..c7ceb4e 100644 --- a/lua/lazy/manage/lock.lua +++ b/lua/lazy/manage/lock.lua @@ -9,7 +9,7 @@ M._loaded = false function M.update() vim.fn.mkdir(vim.fn.fnamemodify(Config.options.lockfile, ":p:h"), "p") - local f = assert(io.open(Config.options.lockfile, "w")) + local f = assert(io.open(Config.options.lockfile, "wb")) f:write("{\n") M.lock = {} From 2782f8125e793940f5bf942af1a1df0bbc989d11 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Mon, 9 Oct 2023 23:42:05 +0200 Subject: [PATCH 017/527] fix(profiling): ensure proper traces in case of require errors --- lua/lazy/init.lua | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lua/lazy/init.lua b/lua/lazy/init.lua index e219eaf..75ccfa2 100644 --- a/lua/lazy/init.lua +++ b/lua/lazy/init.lua @@ -10,8 +10,13 @@ local function profile_require() if Util and not done[modname] then done[modname] = true Util.track({ require = modname }) - local ret = vim.F.pack_len(r(modname)) + local ok, ret = pcall(function() + return vim.F.pack_len(r(modname)) + end) Util.track() + if not ok then + error(ret, 2) + end return vim.F.unpack_len(ret) else return r(modname) From 0d9989d46cd2ae624858b94e529ee3e9d07773fd Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 9 Oct 2023 23:45:04 +0200 Subject: [PATCH 018/527] chore(main): release 10.9.1 (#1096) 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 dcdecb9..c7b1bd5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## [10.9.1](https://github.com/folke/lazy.nvim/compare/v10.9.0...v10.9.1) (2023-10-09) + + +### Bug Fixes + +* **manage:** prevend auto conversion 'CRLF' to 'LF' in update lazy-lock.json on Windows. Fixes [#1093](https://github.com/folke/lazy.nvim/issues/1093) ([#1094](https://github.com/folke/lazy.nvim/issues/1094)) ([5579d72](https://github.com/folke/lazy.nvim/commit/5579d72576b21b9c8c2d01838598aece5dc2be6d)) +* **profiling:** ensure proper traces in case of require errors ([2782f81](https://github.com/folke/lazy.nvim/commit/2782f8125e793940f5bf942af1a1df0bbc989d11)) + ## [10.9.0](https://github.com/folke/lazy.nvim/compare/v10.8.2...v10.9.0) (2023-10-09) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 4cb4568..57f5fef 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -171,7 +171,7 @@ M.defaults = { debug = false, } -M.version = "10.9.0" -- x-release-please-version +M.version = "10.9.1" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 89581ce37e1252133725cb583b5ba4fa0a827270 Mon Sep 17 00:00:00 2001 From: 0xAdk <29005635+0xAdk@users.noreply.github.com> Date: Tue, 10 Oct 2023 00:31:06 -0700 Subject: [PATCH 019/527] fix(docs): broken table in readme (#1097) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 31963fc..e5ddc66 100644 --- a/README.md +++ b/README.md @@ -506,7 +506,7 @@ 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 | From 067544c74a6336fb5eb1c414b9d164ea27b616d2 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 10 Oct 2023 07:31:52 +0000 Subject: [PATCH 020/527] chore(build): auto-generate vimdoc --- doc/lazy.nvim.txt | 83 +++++++++++++++++++++++------------------------ 1 file changed, 40 insertions(+), 43 deletions(-) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index 8ee9960..b378be0 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: 2023 October 09 +*lazy.nvim.txt* For Neovim >= 0.8.0 Last change: 2023 October 10 ============================================================================== Table of Contents *lazy.nvim-table-of-contents* @@ -599,63 +599,60 @@ 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 + ---------------------------------------------------------------------------------- + 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 + :Lazy clear require("lazy").clear() Clear finished tasks - :Lazy debug require("lazy").debug() Show debug information + :Lazy debug require("lazy").debug() Show debug information - :Lazy health require("lazy").health() Run :checkhealth lazy + :Lazy health require("lazy").health() Run :checkhealth lazy - :Lazy help require("lazy").help() Toggle this help page + :Lazy help require("lazy").help() Toggle this help page - :Lazy home require("lazy").home() Go back to plugin list + :Lazy home require("lazy").home() Go back to plugin list - :Lazy install [plugins] require("lazy").install(opts?) Install missing - plugins + :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 log [plugins] require("lazy").log(opts?) Show recent updates - :Lazy profile require("lazy").profile() Show detailed - profiling + :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: From 43e9165994d76038bd6ebd2d06830a7204ae74e0 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Tue, 10 Oct 2023 11:41:32 +0200 Subject: [PATCH 021/527] feat(git): show error for local changes during check/update --- lua/lazy/manage/init.lua | 2 ++ lua/lazy/manage/task/git.lua | 27 +++++++++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/lua/lazy/manage/init.lua b/lua/lazy/manage/init.lua index 49953f0..897bdbf 100644 --- a/lua/lazy/manage/init.lua +++ b/lua/lazy/manage/init.lua @@ -103,6 +103,7 @@ function M.update(opts) "git.origin", "git.branch", "git.fetch", + "git.status", { "git.checkout", lockfile = opts.lockfile }, "plugin.docs", "wait", @@ -132,6 +133,7 @@ function M.check(opts) pipeline = { { "git.origin", check = true }, "git.fetch", + "git.status", "wait", { "git.log", check = true }, }, diff --git a/lua/lazy/manage/task/git.lua b/lua/lazy/manage/task/git.lua index 74f7dfb..e18968b 100644 --- a/lua/lazy/manage/task/git.lua +++ b/lua/lazy/manage/task/git.lua @@ -156,6 +156,33 @@ M.origin = { end, } +M.status = { + skip = function(plugin) + return not plugin._.installed or plugin._.is_local + end, + run = function(self) + self:spawn("git", { + args = { "ls-files", "-d", "-m" }, + cwd = self.plugin.dir, + on_exit = function(ok, output) + if ok then + local lines = vim.split(output, "\n") + lines = vim.tbl_filter(function(line) + return line ~= "" + end, lines) + if #lines > 0 then + self.error = "You have local changes in `" .. self.plugin.dir .. "`:\n" + for _, line in ipairs(lines) do + self.error = self.error .. " * " .. line .. "\n" + end + self.error = self.error .. "Please remove them to update." + end + end + end, + }) + end, +} + -- fetches all needed origin branches M.fetch = { skip = function(plugin) From 736529d097979b3585cbc8e2728543fde9b314ed Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Tue, 10 Oct 2023 11:41:49 +0200 Subject: [PATCH 022/527] fix(git): automatically restore doc/tags when modified --- lua/lazy/manage/task/git.lua | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lua/lazy/manage/task/git.lua b/lua/lazy/manage/task/git.lua index e18968b..1c70b38 100644 --- a/lua/lazy/manage/task/git.lua +++ b/lua/lazy/manage/task/git.lua @@ -168,6 +168,12 @@ M.status = { if ok then local lines = vim.split(output, "\n") lines = vim.tbl_filter(function(line) + -- Fix doc/tags being marked as modified + if line:gsub("[\\/]", "/") == "doc/tags" then + local Process = require("lazy.manage.process") + Process.exec({ "git", "checkout", "--", "doc/tags" }, { cwd = self.plugin.dir }) + return false + end return line ~= "" end, lines) if #lines > 0 then From 92869d0928ad3bb1aa61cf61897a78f3faa17835 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Tue, 10 Oct 2023 11:52:45 +0200 Subject: [PATCH 023/527] fix(process): make sure cwd is a valid directory --- lua/lazy/manage/process.lua | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lua/lazy/manage/process.lua b/lua/lazy/manage/process.lua index 9b7fef4..00883e7 100644 --- a/lua/lazy/manage/process.lua +++ b/lua/lazy/manage/process.lua @@ -90,6 +90,11 @@ function M.spawn(cmd, opts) 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, From 58e5726592a3f4a83735edfea996911d8daea002 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Tue, 10 Oct 2023 11:53:00 +0200 Subject: [PATCH 024/527] feat(git): show help on how to remove local changes --- lua/lazy/manage/task/git.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lua/lazy/manage/task/git.lua b/lua/lazy/manage/task/git.lua index 1c70b38..9913ea1 100644 --- a/lua/lazy/manage/task/git.lua +++ b/lua/lazy/manage/task/git.lua @@ -181,7 +181,8 @@ M.status = { for _, line in ipairs(lines) do self.error = self.error .. " * " .. line .. "\n" end - self.error = self.error .. "Please remove them to update." + 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." end end end, From 84d13c1d7e9a887a89525196dababdaad5021c93 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 10 Oct 2023 16:15:05 +0200 Subject: [PATCH 025/527] chore(main): release 10.10.0 (#1098) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- CHANGELOG.md | 15 +++++++++++++++ lua/lazy/core/config.lua | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c7b1bd5..a1003ef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,20 @@ # Changelog +## [10.10.0](https://github.com/folke/lazy.nvim/compare/v10.9.1...v10.10.0) (2023-10-10) + + +### Features + +* **git:** show error for local changes during check/update ([43e9165](https://github.com/folke/lazy.nvim/commit/43e9165994d76038bd6ebd2d06830a7204ae74e0)) +* **git:** show help on how to remove local changes ([58e5726](https://github.com/folke/lazy.nvim/commit/58e5726592a3f4a83735edfea996911d8daea002)) + + +### Bug Fixes + +* **docs:** broken table in readme ([#1097](https://github.com/folke/lazy.nvim/issues/1097)) ([89581ce](https://github.com/folke/lazy.nvim/commit/89581ce37e1252133725cb583b5ba4fa0a827270)) +* **git:** automatically restore doc/tags when modified ([736529d](https://github.com/folke/lazy.nvim/commit/736529d097979b3585cbc8e2728543fde9b314ed)) +* **process:** make sure cwd is a valid directory ([92869d0](https://github.com/folke/lazy.nvim/commit/92869d0928ad3bb1aa61cf61897a78f3faa17835)) + ## [10.9.1](https://github.com/folke/lazy.nvim/compare/v10.9.0...v10.9.1) (2023-10-09) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 57f5fef..6ed4f94 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -171,7 +171,7 @@ M.defaults = { debug = false, } -M.version = "10.9.1" -- x-release-please-version +M.version = "10.10.0" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From a617db7e79bf826b46a8032f9170b42f62490013 Mon Sep 17 00:00:00 2001 From: Artyom Andreev Date: Tue, 10 Oct 2023 19:59:13 +0300 Subject: [PATCH 026/527] docs: icon for require without nerd font (#1100) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index e5ddc66..1ac4cee 100644 --- a/README.md +++ b/README.md @@ -478,6 +478,7 @@ return { keys = "🗝", plugin = "🔌", runtime = "💻", + require = "🌙", source = "📄", start = "🚀", task = "📌", From 1a47d3b2aacfaba57231201a08fc23b753bab813 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 10 Oct 2023 16:59:52 +0000 Subject: [PATCH 027/527] chore(build): auto-generate vimdoc --- doc/lazy.nvim.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index b378be0..48b123b 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -574,6 +574,7 @@ If you don’t want to use a Nerd Font, you can replace the icons with Unicode s keys = "🗝", plugin = "🔌", runtime = "💻", + require = "🌙", source = "📄", start = "🚀", task = "📌", From cb3a0555b96cb90265860561991134e6ae16739c Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Tue, 10 Oct 2023 19:12:07 +0200 Subject: [PATCH 028/527] docs: format table --- README.md | 102 +++++++++++++++++++++++++++--------------------------- 1 file changed, 51 insertions(+), 51 deletions(-) diff --git a/README.md b/README.md index 1ac4cee..e8d87c7 100644 --- a/README.md +++ b/README.md @@ -506,24 +506,24 @@ 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!!) | +| 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 | +| `: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 | @@ -774,40 +774,40 @@ To uninstall **lazy.nvim**, you need to remove the following files and directori -| 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** | ***@text.reference*** | 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** | ***@parameter*** | | -| **LazyReasonRuntime** | ***@macro*** | | -| **LazyReasonSource** | ***Character*** | | -| **LazyReasonStart** | ***@field*** | | -| **LazySpecial** | ***@punctuation.special*** | | -| **LazyTaskError** | ***ErrorMsg*** | task errors | -| **LazyTaskOutput** | ***MsgArea*** | task output | -| **LazyUrl** | ***@text.reference*** | url | -| **LazyValue** | ***@string*** | value of a property | +| 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** | **_@text.reference_** | 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** | **_@parameter_** | | +| **LazyReasonRuntime** | **_@macro_** | | +| **LazyReasonSource** | **_Character_** | | +| **LazyReasonStart** | **_@field_** | | +| **LazySpecial** | **_@punctuation.special_** | | +| **LazyTaskError** | **_ErrorMsg_** | task errors | +| **LazyTaskOutput** | **_MsgArea_** | task output | +| **LazyUrl** | **_@text.reference_** | url | +| **LazyValue** | **_@string_** | value of a property | From 7b84609a06bd11869370bc20a9255bb469e35a50 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Tue, 10 Oct 2023 19:12:35 +0200 Subject: [PATCH 029/527] feat(util): expose pretty stacktraces for notify --- lua/lazy/core/util.lua | 63 +++++++++++++++++++++++------------------- 1 file changed, 35 insertions(+), 28 deletions(-) diff --git a/lua/lazy/core/util.lua b/lua/lazy/core/util.lua index da0fcf6..dd9b2a9 100644 --- a/lua/lazy/core/util.lua +++ b/lua/lazy/core/util.lua @@ -64,38 +64,41 @@ function M.norm(path) return path:sub(-1) == "/" and path:sub(1, -2) or path end +---@param opts? {level?: number} +function M.pretty_trace(opts) + opts = opts or {} + local Config = require("lazy.core.config") + local trace = {} + local level = opts.level or 2 + while true do + local info = debug.getinfo(level, "Sln") + if not info then + break + end + if info.what ~= "C" and not info.source:find("lazy.nvim") then + local source = info.source:sub(2) + if source:find(Config.options.root, 1, true) == 1 then + source = source:sub(#Config.options.root + 1) + end + source = vim.fn.fnamemodify(source, ":p:~:.") --[[@as string]] + local line = " - " .. source .. ":" .. info.currentline + if info.name then + line = line .. " _in_ **" .. info.name .. "**" + end + table.insert(trace, line) + end + level = level + 1 + end + return #trace > 0 and ("\n\n# stacktrace:\n" .. table.concat(trace, "\n")) or "" +end + ---@param opts? string|{msg:string, on_error:fun(msg)} function M.try(fn, opts) opts = type(opts) == "string" and { msg = opts } or opts or {} local msg = opts.msg -- error handler local error_handler = function(err) - local Config = require("lazy.core.config") - local trace = {} - local level = 1 - while true do - local info = debug.getinfo(level, "Sln") - if not info then - break - end - if info.what ~= "C" and not info.source:find("lazy.nvim") then - local source = info.source:sub(2) - if source:find(Config.options.root, 1, true) == 1 then - source = source:sub(#Config.options.root + 1) - end - source = vim.fn.fnamemodify(source, ":p:~:.") - local line = " - " .. source .. ":" .. info.currentline - if info.name then - line = line .. " _in_ **" .. info.name .. "**" - end - table.insert(trace, line) - end - level = level + 1 - end - msg = (msg and (msg .. "\n\n") or "") .. err - if #trace > 0 then - msg = msg .. "\n\n# stacktrace:\n" .. table.concat(trace, "\n") - end + msg = (msg and (msg .. "\n\n") or "") .. err .. M.pretty_trace() if opts.on_error then opts.on_error(msg) else @@ -292,7 +295,7 @@ function M.extend(list, add) return list end ----@alias LazyNotifyOpts {lang?:string, title?:string, level?:number} +---@alias LazyNotifyOpts {lang?:string, title?:string, level?:number, once?:boolean, stacktrace?:boolean, stacklevel?:number} ---@param msg string|string[] ---@param opts? LazyNotifyOpts @@ -312,8 +315,12 @@ function M.notify(msg, opts) "\n" ) end + if opts.stacktrace then + msg = msg .. M.pretty_trace({ level = opts.stacklevel or 2 }) + end local lang = opts.lang or "markdown" - vim.notify(msg, opts.level or vim.log.levels.INFO, { + local n = opts.once and vim.notify_once or vim.notify + n(msg, opts.level or vim.log.levels.INFO, { on_open = function(win) local ok = pcall(function() vim.treesitter.language.add("markdown") From 2947f104e140e21cc87c55f86c1599fbe26caf0f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 10 Oct 2023 17:13:22 +0000 Subject: [PATCH 030/527] chore(build): auto-generate vimdoc --- doc/lazy.nvim.txt | 120 ++++++++++++++++++++-------------------------- 1 file changed, 51 insertions(+), 69 deletions(-) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index 48b123b..bf45902 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -600,17 +600,14 @@ 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 @@ -624,36 +621,24 @@ 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: @@ -909,77 +894,74 @@ HIGHLIGHT GROUPS *lazy.nvim-lazy.nvim-highlight-groups* Click to see all highlight groups ~ - ----------------------------------------------------------------------- - Highlight Group Default Group Description - ----------------------- ----------------------- ----------------------- - LazyButton CursorLine + --------------------------------------------------------------------------------- + Highlight Group Default Group Description + ------------------- ------------------------ ------------------------------------ + LazyButton CursorLine - LazyButtonActive Visual + LazyButtonActive Visual - LazyComment Comment + LazyComment Comment - LazyCommit @variable.builtin commit ref + LazyCommit _@variable.builtin_ commitref - LazyCommitIssue Number + LazyCommitIssue Number - LazyCommitScope Italic conventional commit - scope + LazyCommitScope Italic conventional commit scope - LazyCommitType Title conventional commit - type + LazyCommitType Title conventional commit type - LazyDimmed Conceal property + LazyDimmed Conceal property - LazyDir @text.reference directory + LazyDir _@text.reference_ directory - LazyH1 IncSearch home button + LazyH1 IncSearch homebutton - LazyH2 Bold titles + LazyH2 Bold titles - LazyLocal Constant + LazyLocal Constant - LazyNoCond DiagnosticWarn unloaded icon for a - plugin where cond() was - false + LazyNoCond DiagnosticWarn unloaded icon for a plugin where + cond() was false - LazyNormal NormalFloat + LazyNormal NormalFloat - LazyProgressDone Constant progress bar done + LazyProgressDone Constant progress bar done - LazyProgressTodo LineNr progress bar todo + LazyProgressTodo LineNr progress bar todo - LazyProp Conceal property + LazyProp Conceal property - LazyReasonCmd Operator + LazyReasonCmd Operator - LazyReasonEvent Constant + LazyReasonEvent Constant - LazyReasonFt Character + LazyReasonFt Character - LazyReasonImport Identifier + LazyReasonImport Identifier - LazyReasonKeys Statement + LazyReasonKeys Statement - LazyReasonPlugin Special + LazyReasonPlugin Special - LazyReasonRequire @parameter + LazyReasonRequire _@parameter_ - LazyReasonRuntime @macro + LazyReasonRuntime _@macro_ - LazyReasonSource Character + LazyReasonSource Character - LazyReasonStart @field + LazyReasonStart _@field_ - LazySpecial @punctuation.special + LazySpecial _@punctuation.special_ - LazyTaskError ErrorMsg task errors + LazyTaskError ErrorMsg taskerrors - LazyTaskOutput MsgArea task output + LazyTaskOutput MsgArea task output - LazyUrl @text.reference url + LazyUrl _@text.reference_ url - LazyValue @string value of a property - ----------------------------------------------------------------------- + LazyValue _@string_ valueof a property + --------------------------------------------------------------------------------- PLUGIN AUTHORS *lazy.nvim-lazy.nvim-plugin-authors* From 73fbf5ccabd0233653bdeb4bb2b07fcfa97b57e0 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 10 Oct 2023 19:52:13 +0200 Subject: [PATCH 031/527] chore(main): release 10.11.0 (#1101) 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 a1003ef..e427d30 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [10.11.0](https://github.com/folke/lazy.nvim/compare/v10.10.0...v10.11.0) (2023-10-10) + + +### Features + +* **util:** expose pretty stacktraces for notify ([7b84609](https://github.com/folke/lazy.nvim/commit/7b84609a06bd11869370bc20a9255bb469e35a50)) + ## [10.10.0](https://github.com/folke/lazy.nvim/compare/v10.9.1...v10.10.0) (2023-10-10) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 6ed4f94..9333785 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -171,7 +171,7 @@ M.defaults = { debug = false, } -M.version = "10.10.0" -- x-release-please-version +M.version = "10.11.0" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 303a3ed6a874bb5bdebf11ecdf99e1dfa3eed2c3 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Wed, 11 Oct 2023 14:24:18 +0200 Subject: [PATCH 032/527] feat(event): added support for structured events (see readme on event) --- README.md | 58 +++++++++++------------ lua/lazy/core/handler/event.lua | 83 +++++++++++++++++++++------------ lua/lazy/types.lua | 2 +- 3 files changed, 82 insertions(+), 61 deletions(-) diff --git a/README.md b/README.md index e8d87c7..f17dd46 100644 --- a/README.md +++ b/README.md @@ -79,35 +79,35 @@ 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 | -| **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)`. 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. | -| **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[]` | 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 `LazyKeys[]` or `fun(self:LazyPlugin, keys:string[]):(string \| LazyKeys)[]` | 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 | +| 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)`. 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. | +| **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 `LazyKeys[]` or `fun(self:LazyPlugin, keys:string[]):(string \| LazyKeys)[]` | 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 diff --git a/lua/lazy/core/handler/event.lua b/lua/lazy/core/handler/event.lua index 3a8d9a7..69f9086 100644 --- a/lua/lazy/core/handler/event.lua +++ b/lua/lazy/core/handler/event.lua @@ -4,12 +4,14 @@ local Util = require("lazy.core.util") ---@class LazyEventOpts ---@field event string ----@field pattern? string ---@field group? string ---@field exclude? string[] ---@field data? any ---@field buffer? number +---@alias LazyEvent {id:string, event:string[]|string, pattern?:string[]|string} +---@alias LazyEventSpec string|{event?:string|string[], pattern?:string|string[]}|string[] + ---@class LazyEventHandler:LazyHandler ---@field events table ---@field group number @@ -23,28 +25,64 @@ M.triggers = { M.group = vim.api.nvim_create_augroup("lazy_handler_event", { clear = true }) ----@param value string -function M:_add(value) - local event_spec = self:_event(value) - ---@type string?, string? - local event, pattern = event_spec:match("^(%w+)%s+(.*)$") - event = event or event_spec +---@param spec LazyEventSpec +---@return LazyEvent +function M:parse(spec) + local ret = M.mappings[spec] --[[@as LazyEvent?]] + if ret then + return ret + end + if type(spec) == "string" then + local event, pattern = spec:match("^(%w+)%s+(.*)$") + event = event or spec + return { id = spec, event = event, pattern = pattern } + elseif Util.is_list(spec) then + ret = { id = table.concat(spec, "|"), event = spec } + else + ret = spec --[[@as LazyEvent]] + if not ret.id then + ---@diagnostic disable-next-line: assign-type-mismatch, param-type-mismatch + ret.id = type(ret.event) == "string" and ret.event or table.concat(ret.event, "|") + if ret.pattern then + ---@diagnostic disable-next-line: assign-type-mismatch, param-type-mismatch + ret.id = ret.id .. " " .. (type(ret.pattern) == "string" and ret.pattern or table.concat(ret.pattern, ", ")) + end + end + end + return ret +end + +---@param plugin LazyPlugin +function M:values(plugin) + ---@type table + local values = {} + ---@diagnostic disable-next-line: no-unknown + for _, value in ipairs(plugin[self.type] or {}) do + local event = self:parse(value) + values[event.id] = event + end + return values +end + +---@param event LazyEvent +function M:_add(event) local done = false - vim.api.nvim_create_autocmd(event, { + vim.api.nvim_create_autocmd(event.event, { group = self.group, once = true, - pattern = pattern, + pattern = event.pattern, callback = function(ev) - if done or not self.active[value] then + if done or not self.active[event.id] then return end + -- HACK: work-around for https://github.com/neovim/neovim/issues/25526 done = true - Util.track({ [self.type] = value }) + Util.track({ [self.type] = event.id }) - local state = M.get_state(ev.event, pattern, ev.buf, ev.data) + local state = M.get_state(ev.event, ev.buf, ev.data) -- load the plugins - Loader.load(self.active[value], { [self.type] = value }) + Loader.load(self.active[event.id], { [self.type] = event.id }) -- check if any plugin created an event handler for this event and fire the group for _, s in ipairs(state) do @@ -57,38 +95,23 @@ end -- Get the current state of the event and all the events that will be fired ---@param event string ----@param pattern? string ---@param buf number ---@param data any -function M.get_state(event, pattern, buf, data) +function M.get_state(event, buf, data) local state = {} ---@type LazyEventOpts[] while event do table.insert(state, 1, { event = event, - pattern = pattern, exclude = event ~= "FileType" and M.get_augroups(event) or nil, buffer = buf, data = data, }) data = nil -- only pass the data to the first event - if event == "FileType" then - pattern = nil -- only use the pattern for the first event - end event = M.triggers[event] end return state end ----@param value string -function M:_event(value) - if value == "VeryLazy" then - return "User VeryLazy" - elseif value == "BufRead" then - return "BufReadPost" - end - return value -end - -- Get all augroups for the events ---@param event string function M.get_augroups(event) @@ -127,7 +150,6 @@ function M._trigger(opts) Util.info({ "# Firing Events", " - **event:** " .. opts.event, - opts.pattern and (" - **pattern:** " .. opts.pattern), opts.group and (" - **group:** " .. opts.group), opts.buffer and (" - **buffer:** " .. opts.buffer), }) @@ -135,7 +157,6 @@ function M._trigger(opts) Util.track({ event = opts.group or opts.event }) Util.try(function() vim.api.nvim_exec_autocmds(opts.event, { - -- pattern = opts.pattern, buffer = opts.buffer, group = opts.group, modeline = false, diff --git a/lua/lazy/types.lua b/lua/lazy/types.lua index 3e7f74d..e83b9c4 100644 --- a/lua/lazy/types.lua +++ b/lua/lazy/types.lua @@ -29,7 +29,7 @@ ---@field opts? PluginOpts ---@class LazyPluginHandlers ----@field event? string[] +---@field event? LazyEventSpec[] ---@field cmd? string[] ---@field ft? string[] ---@field keys? (string|LazyKeysSpec)[] From b65d3086623448b93bf02055f73819b76ca1dd78 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Wed, 11 Oct 2023 14:24:40 +0200 Subject: [PATCH 033/527] feat(event): custom lazy event hook for distros --- lua/lazy/core/handler/event.lua | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/lua/lazy/core/handler/event.lua b/lua/lazy/core/handler/event.lua index 69f9086..dd1a38f 100644 --- a/lua/lazy/core/handler/event.lua +++ b/lua/lazy/core/handler/event.lua @@ -23,6 +23,16 @@ M.triggers = { BufReadPost = "BufReadPre", } +-- A table of mappings for custom events +-- Can be used by distros to add custom events (see usage in LazyVim) +---@type table +M.mappings = { + VeryLazy = { id = "VeryLazy", event = "User", pattern = "VeryLazy" }, + -- Example: + -- LazyFile = { id = "LazyFile", event = { "BufReadPost", "BufNewFile", "BufWritePre" } }, +} +M.mappings["User VeryLazy"] = M.mappings.VeryLazy + M.group = vim.api.nvim_create_augroup("lazy_handler_event", { clear = true }) ---@param spec LazyEventSpec From 99ee28473962d9ab8aa11db2d2cc201e38f0f432 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Wed, 11 Oct 2023 14:25:10 +0200 Subject: [PATCH 034/527] fix(ui): use actual handler values for rendering plugin handlers --- lua/lazy/core/handler/ft.lua | 13 ++++++++----- lua/lazy/view/render.lua | 25 ++++++++++++++----------- 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/lua/lazy/core/handler/ft.lua b/lua/lazy/core/handler/ft.lua index f0947c6..7af2b9a 100644 --- a/lua/lazy/core/handler/ft.lua +++ b/lua/lazy/core/handler/ft.lua @@ -5,11 +5,6 @@ local Loader = require("lazy.core.loader") local M = {} M.extends = Event ----@param value string -function M:_event(value) - return "FileType " .. value -end - ---@param plugin LazyPlugin function M:add(plugin) self.super.add(self, plugin) @@ -18,4 +13,12 @@ function M:add(plugin) end end +function M:parse(value) + return { + id = value, + event = "FileType", + pattern = value, + } +end + return M diff --git a/lua/lazy/view/render.lua b/lua/lazy/view/render.lua index 12c3da3..d4cfdfb 100644 --- a/lua/lazy/view/render.lua +++ b/lua/lazy/view/render.lua @@ -319,17 +319,13 @@ function M:reason(reason, opts) end for _, key in ipairs(keys) do local value = reason[key] - if type(key) == "number" then - -- elseif key == "require" then - elseif key ~= "time" then + local skip = type(key) == "number" or key == "time" + if not skip then if first then first = false else self:append(" ") end - if key == "event" then - value = value:match("User (.*)") or value - end if key == "keys" then value = type(value) == "string" and value or value.lhs or value[1] end @@ -414,11 +410,18 @@ function M:plugin(plugin) if plugin._.kind ~= "disabled" then for handler in pairs(Handler.types) do if plugin[handler] then - local trigger = {} - for _, value in ipairs(plugin[handler]) do - table.insert(trigger, type(value) == "table" and value[1] or value) - end - reason[handler] = table.concat(trigger, " ") + local values = Handler.handlers[handler]:values(plugin) + values = vim.tbl_map(function(value) + if handler == "ft" or handler == "event" then + ---@cast value LazyEvent + return value.id + elseif handler == "keys" then + ---@cast value LazyKeys + return value.lhs .. (value.mode == "n" and "" or " (" .. value.mode .. ")") + end + return value + end, vim.tbl_values(values)) + reason[handler] = table.concat(values, " ") end end end From 9ca9a63be5672aafbb30cf6984c065da3927b1ee Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 11 Oct 2023 12:26:07 +0000 Subject: [PATCH 035/527] chore(build): auto-generate vimdoc --- doc/lazy.nvim.txt | 77 ++++++++++++++++++++++++----------------------- 1 file changed, 40 insertions(+), 37 deletions(-) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index bf45902..62a6025 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: 2023 October 10 +*lazy.nvim.txt* For Neovim >= 0.8.0 Last change: 2023 October 11 ============================================================================== Table of Contents *lazy.nvim-table-of-contents* @@ -103,9 +103,9 @@ It is recommended to run `:checkhealth lazy` after installation. PLUGIN SPEC *lazy.nvim-lazy.nvim-plugin-spec* - ---------------------------------------------------------------------------------------------------------------------------------- + -------------------------------------------------------------------------------------------------------------------------------- Property Type Description - -------------- ------------------------------------------------------------ ------------------------------------------------------ + -------------- ------------------------------------------------------------ ---------------------------------------------------- [1] string? Short plugin url. Will be expanded using config.git.url_format @@ -113,40 +113,40 @@ PLUGIN SPEC *lazy.nvim-lazy.nvim-plugin-spec* 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 + 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 + 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. + 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. + 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() + 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 + config fun(LazyPlugin, opts:table) or true config is executed when the plugin loads. The + default implementation will automatically run require(MAIN).setup(opts). Lazy uses several heuristics to determine the plugin’s MAIN module automatically based on the plugin’s name. See also @@ -160,11 +160,12 @@ 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 - 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. + 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 @@ -172,16 +173,18 @@ PLUGIN SPEC *lazy.nvim-lazy.nvim-plugin-spec* 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 + 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 + 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[] BufEnter or with a pattern like BufEnter *.lua + 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[] @@ -196,17 +199,17 @@ PLUGIN SPEC *lazy.nvim-lazy.nvim-plugin-spec* 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. + 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 - ---------------------------------------------------------------------------------------------------------------------------------- + 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 ~ From 906ff8e569872d9081cfc9246d917011c22b5e61 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 11 Oct 2023 15:00:30 +0200 Subject: [PATCH 036/527] chore(main): release 10.12.0 (#1102) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- CHANGELOG.md | 13 +++++++++++++ lua/lazy/core/config.lua | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e427d30..11b36a3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [10.12.0](https://github.com/folke/lazy.nvim/compare/v10.11.0...v10.12.0) (2023-10-11) + + +### Features + +* **event:** added support for structured events (see readme on event) ([303a3ed](https://github.com/folke/lazy.nvim/commit/303a3ed6a874bb5bdebf11ecdf99e1dfa3eed2c3)) +* **event:** custom lazy event hook for distros ([b65d308](https://github.com/folke/lazy.nvim/commit/b65d3086623448b93bf02055f73819b76ca1dd78)) + + +### Bug Fixes + +* **ui:** use actual handler values for rendering plugin handlers ([99ee284](https://github.com/folke/lazy.nvim/commit/99ee28473962d9ab8aa11db2d2cc201e38f0f432)) + ## [10.11.0](https://github.com/folke/lazy.nvim/compare/v10.10.0...v10.11.0) (2023-10-10) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 9333785..e74eee6 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -171,7 +171,7 @@ M.defaults = { debug = false, } -M.version = "10.11.0" -- x-release-please-version +M.version = "10.12.0" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 43c284a57870e1a7ed42782eacf444a6a752f81e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maria=20Jos=C3=A9=20Solano?= Date: Wed, 11 Oct 2023 22:18:53 -0700 Subject: [PATCH 037/527] feat(keys): include custom keys in help menu (#1105) --- README.md | 33 +++++++++++++++++++-------------- doc/lazy.nvim.txt | 37 +++++++++++++++++++++---------------- lua/lazy/core/config.lua | 33 +++++++++++++++++++-------------- lua/lazy/view/init.lua | 7 ++++--- lua/lazy/view/render.lua | 8 ++++++++ 5 files changed, 71 insertions(+), 47 deletions(-) diff --git a/README.md b/README.md index f17dd46..13b25e1 100644 --- a/README.md +++ b/README.md @@ -371,22 +371,27 @@ return { browser = nil, ---@type string? throttle = 20, -- how frequently should the ui process render events custom_keys = { - -- you can define custom key maps here. - -- To disable one of the defaults, set it to false + -- 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. - -- open lazygit log - ["l"] = function(plugin) - require("lazy.util").float_term({ "lazygit", "log" }, { - cwd = plugin.dir, - }) - end, + ["l"] = { + function(plugin) + require("lazy.util").float_term({ "lazygit", "log" }, { + cwd = plugin.dir, + }) + end, + desc = "Open lazygit log", + }, - -- open a terminal for the plugin dir - ["t"] = function(plugin) - require("lazy.util").float_term(nil, { - cwd = plugin.dir, - }) - end, + ["t"] = { + function(plugin) + require("lazy.util").float_term(nil, { + cwd = plugin.dir, + }) + end, + desc = "Open terminal in plugin dir", + }, }, }, diff = { diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index 62a6025..a0cd52f 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -473,22 +473,27 @@ CONFIGURATION *lazy.nvim-lazy.nvim-configuration* browser = nil, ---@type string? throttle = 20, -- how frequently should the ui process render events custom_keys = { - -- you can define custom key maps here. - -- To disable one of the defaults, set it to false - - -- open lazygit log - ["l"] = function(plugin) - require("lazy.util").float_term({ "lazygit", "log" }, { - cwd = plugin.dir, - }) - end, - - -- open a terminal for the plugin dir - ["t"] = function(plugin) - require("lazy.util").float_term(nil, { - cwd = plugin.dir, - }) - end, + -- 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 --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index e74eee6..81b4477 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -81,22 +81,27 @@ M.defaults = { browser = nil, ---@type string? throttle = 20, -- how frequently should the ui process render events custom_keys = { - -- you can define custom key maps here. - -- To disable one of the defaults, set it to false + -- 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. - -- open lazygit log - ["l"] = function(plugin) - require("lazy.util").float_term({ "lazygit", "log" }, { - cwd = plugin.dir, - }) - end, + ["l"] = { + function(plugin) + require("lazy.util").float_term({ "lazygit", "log" }, { + cwd = plugin.dir, + }) + end, + desc = "Open lazygit log", + }, - -- open a terminal for the plugin dir - ["t"] = function(plugin) - require("lazy.util").float_term(nil, { - cwd = plugin.dir, - }) - end, + ["t"] = { + function(plugin) + require("lazy.util").float_term(nil, { + cwd = plugin.dir, + }) + end, + desc = "Open terminal in plugin dir", + }, }, }, diff = { diff --git a/lua/lazy/view/init.lua b/lua/lazy/view/init.lua index 1be4b16..e62fc6e 100644 --- a/lua/lazy/view/init.lua +++ b/lua/lazy/view/init.lua @@ -121,9 +121,10 @@ function M.create() end end) - for key, handler in pairs(Config.options.ui.custom_keys) do - if handler then - self:on_key(key, function() + for lhs, rhs in pairs(Config.options.ui.custom_keys) do + if rhs then + local handler = type(rhs) == "table" and rhs[1] or rhs + self:on_key(lhs, function() local plugin = self.render:get_plugin() if plugin then handler(plugin) diff --git a/lua/lazy/view/render.lua b/lua/lazy/view/render.lua index d4cfdfb..fca229b 100644 --- a/lua/lazy/view/render.lua +++ b/lua/lazy/view/render.lua @@ -209,6 +209,14 @@ function M:help() self:append(" " .. (mode.desc_plugin or mode.desc)):nl() end end + for lhs, rhs in pairs(Config.options.ui.custom_keys) do + if type(rhs) == "table" and rhs.desc then + self:append("- ", "LazySpecial", { indent = 2 }) + self:append("Custom key ", "Title") + self:append(lhs, "LazyProp") + self:append(" " .. rhs.desc):nl() + end + end end function M:progressbar() From 84ae36f30d157ad2d3fb54abdad15700429cf5b6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 12 Oct 2023 05:19:35 +0000 Subject: [PATCH 038/527] chore(build): auto-generate vimdoc --- 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 a0cd52f..4b859db 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: 2023 October 11 +*lazy.nvim.txt* For Neovim >= 0.8.0 Last change: 2023 October 12 ============================================================================== Table of Contents *lazy.nvim-table-of-contents* @@ -476,7 +476,7 @@ CONFIGURATION *lazy.nvim-lazy.nvim-configuration* -- 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" }, { @@ -485,7 +485,7 @@ CONFIGURATION *lazy.nvim-lazy.nvim-configuration* end, desc = "Open lazygit log", }, - + ["t"] = { function(plugin) require("lazy.util").float_term(nil, { From 117556d9e73136c434b553b29c0d32a05152eecc Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 12 Oct 2023 11:40:26 +0200 Subject: [PATCH 039/527] chore(main): release 10.13.0 (#1106) 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 11b36a3..935ac60 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [10.13.0](https://github.com/folke/lazy.nvim/compare/v10.12.0...v10.13.0) (2023-10-12) + + +### Features + +* **keys:** include custom keys in help menu ([#1105](https://github.com/folke/lazy.nvim/issues/1105)) ([43c284a](https://github.com/folke/lazy.nvim/commit/43c284a57870e1a7ed42782eacf444a6a752f81e)) + ## [10.12.0](https://github.com/folke/lazy.nvim/compare/v10.11.0...v10.12.0) (2023-10-11) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 81b4477..fe963d7 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -176,7 +176,7 @@ M.defaults = { debug = false, } -M.version = "10.12.0" -- x-release-please-version +M.version = "10.13.0" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 7f70dd17497973f2a83e7e46aa7479111174e765 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Thu, 12 Oct 2023 12:23:39 +0200 Subject: [PATCH 040/527] fix(git): unset GIT_INDEX_FILE so we dont accidentally overwrite a different git repo. Fixes #1107 --- lua/lazy/manage/process.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/lua/lazy/manage/process.lua b/lua/lazy/manage/process.lua index 00883e7..1db3677 100644 --- a/lua/lazy/manage/process.lua +++ b/lua/lazy/manage/process.lua @@ -64,6 +64,7 @@ function M.spawn(cmd, opts) env.GIT_DIR = nil env.GIT_WORK_TREE = nil env.GIT_TERMINAL_PROMPT = "0" + env.GIT_INDEX_FILE = nil ---@type string[] local env_flat = {} From 33c447b96e1cb1a5a2be87982d5d32bb5054079d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 12 Oct 2023 12:40:23 +0200 Subject: [PATCH 041/527] chore(main): release 10.13.1 (#1108) 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 935ac60..936aa88 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [10.13.1](https://github.com/folke/lazy.nvim/compare/v10.13.0...v10.13.1) (2023-10-12) + + +### Bug Fixes + +* **git:** unset GIT_INDEX_FILE so we dont accidentally overwrite a different git repo. Fixes [#1107](https://github.com/folke/lazy.nvim/issues/1107) ([7f70dd1](https://github.com/folke/lazy.nvim/commit/7f70dd17497973f2a83e7e46aa7479111174e765)) + ## [10.13.0](https://github.com/folke/lazy.nvim/compare/v10.12.0...v10.13.0) (2023-10-12) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index fe963d7..c68dd84 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -176,7 +176,7 @@ M.defaults = { debug = false, } -M.version = "10.13.0" -- x-release-please-version +M.version = "10.13.1" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 37694611946387dc79d546bdc193bc8611ac1c6d Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Fri, 13 Oct 2023 11:37:38 +0200 Subject: [PATCH 042/527] fix(float): disable swapfile for files shown in Float --- lua/lazy/view/float.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lua/lazy/view/float.lua b/lua/lazy/view/float.lua index f69108e..0a21b38 100644 --- a/lua/lazy/view/float.lua +++ b/lua/lazy/view/float.lua @@ -104,6 +104,8 @@ function M:mount() self.buf = self.buf elseif self.opts.file then self.buf = vim.fn.bufadd(self.opts.file) + vim.bo[self.buf].readonly = true + vim.bo[self.buf].swapfile = false vim.fn.bufload(self.buf) vim.bo[self.buf].modifiable = false elseif self.opts.buf then From 70f764bf735f74aed795188aeb8e57ccae0ae94e Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Fri, 13 Oct 2023 11:37:52 +0200 Subject: [PATCH 043/527] fix(util): Util.merge now skips nil args --- lua/lazy/core/util.lua | 11 ++++------- tests/core/util_spec.lua | 22 +++++++++++++++++++++- 2 files changed, 25 insertions(+), 8 deletions(-) diff --git a/lua/lazy/core/util.lua b/lua/lazy/core/util.lua index dd9b2a9..0b27797 100644 --- a/lua/lazy/core/util.lua +++ b/lua/lazy/core/util.lua @@ -396,22 +396,19 @@ end ---@param ... T ---@return T function M.merge(...) - local values = { ... } - local ret = values[1] - + local ret = select(1, ...) if ret == vim.NIL then ret = nil end - - for i = 2, #values, 1 do - local value = values[i] + for i = 2, select("#", ...) do + local value = select(i, ...) if can_merge(ret) and can_merge(value) then for k, v in pairs(value) do ret[k] = M.merge(ret[k], v) end elseif value == vim.NIL then ret = nil - else + elseif value ~= nil then ret = value end end diff --git a/tests/core/util_spec.lua b/tests/core/util_spec.lua index 97c42c7..1d3592c 100644 --- a/tests/core/util_spec.lua +++ b/tests/core/util_spec.lua @@ -101,6 +101,22 @@ describe("util", function() input = { { a = 1 }, { b = 2 } }, output = { a = 1, b = 2 }, }, + { + input = { nil, { a = 1 }, { b = 2 } }, + output = { a = 1, b = 2 }, + }, + { + input = { { a = 1 }, { b = 2 }, nil }, + output = { a = 1, b = 2 }, + }, + { + input = { { a = 1 }, nil, { b = 2 } }, + output = { a = 1, b = 2 }, + }, + { + input = { nil, { a = 1 }, nil, { b = 2 }, nil }, + output = { a = 1, b = 2 }, + }, { input = { { a = 1 }, { a = 2 } }, output = { a = 2 }, @@ -120,7 +136,11 @@ describe("util", function() } for _, test in ipairs(tests) do - assert.same(test.output, Util.merge(unpack(test.input))) + local n = 0 + for i in pairs(test.input) do + n = math.max(n, i) + end + assert.same(test.output, Util.merge(unpack(test.input, 1, n))) end end) end) From e15dfab3c3729af6e54df2828c82db9698ba2c0a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 13 Oct 2023 09:38:43 +0000 Subject: [PATCH 044/527] 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 4b859db..b602b6a 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: 2023 October 12 +*lazy.nvim.txt* For Neovim >= 0.8.0 Last change: 2023 October 13 ============================================================================== Table of Contents *lazy.nvim-table-of-contents* From a026f7395324aad8df1cbd45112d620f528123ba Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Fri, 13 Oct 2023 12:37:41 +0200 Subject: [PATCH 045/527] docs: fix types for `keys`. Fixes #1109 --- README.md | 2 +- lua/lazy/types.lua | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 13b25e1..86cc9ef 100644 --- a/README.md +++ b/README.md @@ -104,7 +104,7 @@ require("lazy").setup({ | **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 `LazyKeys[]` or `fun(self:LazyPlugin, keys:string[]):(string \| LazyKeys)[]` | Lazy-load on key mapping | +| **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 | diff --git a/lua/lazy/types.lua b/lua/lazy/types.lua index e83b9c4..54c0930 100644 --- a/lua/lazy/types.lua +++ b/lua/lazy/types.lua @@ -61,10 +61,10 @@ ---@field _ LazyPluginState ---@class LazyPluginSpecHandlers ----@field event? string[]|string|fun(self:LazyPlugin, event:string[]):string[] +---@field event? string[]|string|LazyEventSpec[]|fun(self:LazyPlugin, event:string[]):string[] ---@field cmd? string[]|string|fun(self:LazyPlugin, cmd:string[]):string[] ---@field ft? string[]|string|fun(self:LazyPlugin, ft:string[]):string[] ----@field keys? string|string[]|LazyKeys[]|fun(self:LazyPlugin, keys:string[]):(string|LazyKeys)[] +---@field keys? string|string[]|LazyKeysSpec[]|fun(self:LazyPlugin, keys:string[]):(string|LazyKeys)[] ---@field module? false ---@class LazyPluginSpec: LazyPluginBase,LazyPluginSpecHandlers,LazyPluginHooks,LazyPluginRef From 8a6379eddd2bffaad20aefe74580c1b546477ae8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 13 Oct 2023 10:38:26 +0000 Subject: [PATCH 046/527] chore(build): auto-generate vimdoc --- doc/lazy.nvim.txt | 162 +++++++++++++++++++++++----------------------- 1 file changed, 81 insertions(+), 81 deletions(-) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index b602b6a..878faa9 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -103,113 +103,113 @@ It is recommended to run `:checkhealth lazy` after installation. PLUGIN SPEC *lazy.nvim-lazy.nvim-plugin-spec* - -------------------------------------------------------------------------------------------------------------------------------- - Property Type Description - -------------- ------------------------------------------------------------ ---------------------------------------------------- - [1] string? Short plugin url. Will be expanded using - config.git.url_format + ------------------------------------------------------------------------------------------------------------------------------------ + 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 + dir string? A directory pointing to a local plugin - url string? A custom git url where the plugin is hosted + 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 + 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 + 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 + 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 + 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. + 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. + 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 + 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() + 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). 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. + config fun(LazyPlugin, opts:table) or true config is executed when the plugin loads. The + default implementation will automatically run + require(MAIN).setup(opts). 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() + 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 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. - branch string? Branch of the repository + branch string? Branch of the repository - tag string? Tag of the repository + tag string? Tag of the repository - commit string? Commit 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 + 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 + 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 + 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} + 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[] + 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[] + ft string? or string[] or Lazy-load on filetype + fun(self:LazyPlugin, ft:string[]):string[] - keys string? or string[] or LazyKeys[] or Lazy-load on key mapping - fun(self:LazyPlugin, keys:string[]):(string \| LazyKeys)[] + 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 + 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. + 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 - -------------------------------------------------------------------------------------------------------------------------------- + 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 ~ From 9f5637f1d7112637df29ca1104540874e9c84b72 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Fri, 13 Oct 2023 13:14:39 +0200 Subject: [PATCH 047/527] docs: another LazyKeys reference. Fixes #1109 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 86cc9ef..9fcf781 100644 --- a/README.md +++ b/README.md @@ -142,7 +142,7 @@ 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 `LazyKeys` table with the following key-value pairs: +can be a `LazyKeysSpec` table with the following key-value pairs: - **[1]**: (`string`) lhs **_(required)_** - **[2]**: (`string|fun()`) rhs **_(optional)_** From 8d712c8e5d7ee0c43713934e955a17e39a1aad72 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 13 Oct 2023 11:15:19 +0000 Subject: [PATCH 048/527] chore(build): auto-generate vimdoc --- 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 878faa9..6b76d6a 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -249,7 +249,8 @@ 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 `LazyKeys` table with the following key-value pairs: +mappings, or it can be a `LazyKeysSpec` table with the following key-value +pairs: - **[1]**(`string`) lhs **(required)** - **[2]**(`string|fun()`) rhs **(optional)** From 276e572f645430bcfd6fd25faa301ea9077f6ab1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 13 Oct 2023 13:17:52 +0200 Subject: [PATCH 049/527] chore(main): release 10.13.2 (#1110) 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 936aa88..fbb9bdc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## [10.13.2](https://github.com/folke/lazy.nvim/compare/v10.13.1...v10.13.2) (2023-10-13) + + +### Bug Fixes + +* **float:** disable swapfile for files shown in Float ([3769461](https://github.com/folke/lazy.nvim/commit/37694611946387dc79d546bdc193bc8611ac1c6d)) +* **util:** Util.merge now skips nil args ([70f764b](https://github.com/folke/lazy.nvim/commit/70f764bf735f74aed795188aeb8e57ccae0ae94e)) + ## [10.13.1](https://github.com/folke/lazy.nvim/compare/v10.13.0...v10.13.1) (2023-10-12) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index c68dd84..c77936a 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -176,7 +176,7 @@ M.defaults = { debug = false, } -M.version = "10.13.1" -- x-release-please-version +M.version = "10.13.2" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From ad5da0ae20beca5dd89cb17c515c237c46c37b1e Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 14 Oct 2023 16:00:30 +0200 Subject: [PATCH 050/527] fix(ui): sort lazy plugin handlers --- lua/lazy/view/render.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/lua/lazy/view/render.lua b/lua/lazy/view/render.lua index fca229b..b5d83a0 100644 --- a/lua/lazy/view/render.lua +++ b/lua/lazy/view/render.lua @@ -429,6 +429,7 @@ function M:plugin(plugin) end return value end, vim.tbl_values(values)) + table.sort(values) reason[handler] = table.concat(values, " ") end end From 2b8b8b020b2922722cbc2bd2f51b894699689c1f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 14 Oct 2023 14:01:16 +0000 Subject: [PATCH 051/527] 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 6b76d6a..dead002 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: 2023 October 13 +*lazy.nvim.txt* For Neovim >= 0.8.0 Last change: 2023 October 14 ============================================================================== Table of Contents *lazy.nvim-table-of-contents* From a27935e0d4d14658f976f50042b98d254b8c13fd Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 14 Oct 2023 17:02:44 +0200 Subject: [PATCH 052/527] chore(main): release 10.13.3 (#1116) 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 fbb9bdc..9a05737 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [10.13.3](https://github.com/folke/lazy.nvim/compare/v10.13.2...v10.13.3) (2023-10-14) + + +### Bug Fixes + +* **ui:** sort lazy plugin handlers ([ad5da0a](https://github.com/folke/lazy.nvim/commit/ad5da0ae20beca5dd89cb17c515c237c46c37b1e)) + ## [10.13.2](https://github.com/folke/lazy.nvim/compare/v10.13.1...v10.13.2) (2023-10-13) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index c77936a..9652da0 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -176,7 +176,7 @@ M.defaults = { debug = false, } -M.version = "10.13.2" -- x-release-please-version +M.version = "10.13.3" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From a993bfd6de7266c531b1f462a1d64e307b4ca349 Mon Sep 17 00:00:00 2001 From: sibouras <64098483+sibouras@users.noreply.github.com> Date: Sat, 14 Oct 2023 16:14:45 +0100 Subject: [PATCH 053/527] docs: update git.log in readme (#1115) * docs: update git.log in readme * Revert "docs: update git.log in readme" This reverts commit ff602aa987cde7324a9d15f2f888628f2741ea3f. * update git.log in lazy.core.config --- lua/lazy/core/config.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 9652da0..f38ee1f 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -20,8 +20,8 @@ M.defaults = { concurrency = jit.os:find("Windows") and (vim.loop.available_parallelism() * 2) or nil, ---@type number limit the maximum amount of concurrent tasks git = { -- defaults for the `Lazy log` command - -- log = { "-10" }, -- show the last 10 commits - log = { "-8" }, -- show commits from the last 3 days + -- 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, From 3b31897275d5c09e2654db1c163b87eb383ca25e Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 14 Oct 2023 17:30:24 +0200 Subject: [PATCH 054/527] fix(cmd): lazy-cmds no longer show an error for buffer-local commands --- lua/lazy/core/handler/cmd.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/lazy/core/handler/cmd.lua b/lua/lazy/core/handler/cmd.lua index 6ff9623..ef7a2bd 100644 --- a/lua/lazy/core/handler/cmd.lua +++ b/lua/lazy/core/handler/cmd.lua @@ -33,7 +33,7 @@ function M:_add(cmd) self:_load(cmd) - local info = vim.api.nvim_get_commands({})[cmd] + local info = vim.api.nvim_get_commands({})[cmd] or vim.api.nvim_buf_get_commands(0, {})[cmd] if not info then return Util.error("Command `" .. cmd .. "` not found after loading " .. plugins) end From 1c16e4236f0937e8955865a0e5e046c7dafbc4b5 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 14 Oct 2023 17:33:31 +0200 Subject: [PATCH 055/527] chore(main): release 10.13.4 (#1117) 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 9a05737..95c49a1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [10.13.4](https://github.com/folke/lazy.nvim/compare/v10.13.3...v10.13.4) (2023-10-14) + + +### Bug Fixes + +* **cmd:** lazy-cmds no longer show an error for buffer-local commands ([3b31897](https://github.com/folke/lazy.nvim/commit/3b31897275d5c09e2654db1c163b87eb383ca25e)) + ## [10.13.3](https://github.com/folke/lazy.nvim/compare/v10.13.2...v10.13.3) (2023-10-14) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index f38ee1f..cf278a9 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -176,7 +176,7 @@ M.defaults = { debug = false, } -M.version = "10.13.3" -- x-release-please-version +M.version = "10.13.4" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 0c53d4673ff02c57a192558325b394cfd9adde0f Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 14 Oct 2023 23:07:01 +0200 Subject: [PATCH 056/527] feat(plugin): treat url changes as warnings. They will only be shown with checkhealth --- lua/lazy/core/plugin.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/lazy/core/plugin.lua b/lua/lazy/core/plugin.lua index 3e5743a..dbfcb46 100644 --- a/lua/lazy/core/plugin.lua +++ b/lua/lazy/core/plugin.lua @@ -441,7 +441,7 @@ 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:error("Two plugins with the same name and different url:\n" .. vim.inspect({ old = old, new = new })) + 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 From 3dc413d6fd279dfff777a9f9a964697a16c5aabc Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sun, 15 Oct 2023 08:36:15 +0200 Subject: [PATCH 057/527] fix(plugin): improved dir/dev merging. Fixes #993 --- lua/lazy/core/plugin.lua | 38 +++++++++++++++++++++++++++----------- lua/lazy/types.lua | 1 + tests/core/plugin_spec.lua | 37 +++++++++++++++++++++++++++++++++++++ 3 files changed, 65 insertions(+), 11 deletions(-) diff --git a/lua/lazy/core/plugin.lua b/lua/lazy/core/plugin.lua index dbfcb46..a915d8f 100644 --- a/lua/lazy/core/plugin.lua +++ b/lua/lazy/core/plugin.lua @@ -84,8 +84,11 @@ function Spec:add(plugin, results) end end + ---@type string? + local dir + if plugin.dir then - plugin.dir = Util.norm(plugin.dir) + dir = Util.norm(plugin.dir) -- local plugin plugin.name = plugin.name or Spec.get_name(plugin.dir) elseif plugin.url then @@ -99,16 +102,6 @@ function Spec:add(plugin, results) end end end - -- dev plugins - if - plugin.dev - and (not Config.options.dev.fallback or vim.fn.isdirectory(Config.options.dev.path .. "/" .. plugin.name) == 1) - then - plugin.dir = Config.options.dev.path .. "/" .. plugin.name - else - -- remote plugin - plugin.dir = Config.options.root .. "/" .. plugin.name - end elseif is_ref then plugin.name = plugin[1] else @@ -121,6 +114,17 @@ function Spec:add(plugin, results) return end + -- dev plugins + if + plugin.dev + and (not Config.options.dev.fallback or vim.fn.isdirectory(Config.options.dev.path .. "/" .. plugin.name) == 1) + then + dir = Config.options.dev.path .. "/" .. plugin.name + elseif plugin.dev == false then + -- explicitely 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" @@ -134,12 +138,15 @@ function Spec:add(plugin, results) 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] @@ -328,11 +335,14 @@ end function Spec:report(level) level = level or vim.log.levels.ERROR + local count = 0 for _, notif in ipairs(self.notifs) do if notif.level >= level then Util.notify(notif.msg, { level = notif.level }) + count = count + 1 end end + return count end ---@param spec LazySpec|LazySpecImport @@ -448,6 +458,12 @@ function Spec:merge(old, new) 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 ~= new.dir then + self:warn("Plugin `" .. new.name .. "` changed `dir`:\n- from: `" .. new.dir .. "`\n- to: `" .. new_dir .. "`") + end + new.dir = new_dir + new._.super = old setmetatable(new, { __index = old }) diff --git a/lua/lazy/types.lua b/lua/lazy/types.lua index 54c0930..0434359 100644 --- a/lua/lazy/types.lua +++ b/lua/lazy/types.lua @@ -18,6 +18,7 @@ ---@field cond? boolean ---@field super? LazyPlugin ---@field module? string +---@field dir? string Explicit dir or dev set for this plugin ---@alias PluginOpts table|fun(self:LazyPlugin, opts:table):table? diff --git a/tests/core/plugin_spec.lua b/tests/core/plugin_spec.lua index 15eb060..cae8542 100644 --- a/tests/core/plugin_spec.lua +++ b/tests/core/plugin_spec.lua @@ -50,6 +50,43 @@ describe("plugin spec url/name", function() end end) +describe("plugin spec dir", function() + local tests = { + { + "~/projects/gitsigns.nvim", + { "lewis6991/gitsigns.nvim", opts = {}, dev = true }, + { "lewis6991/gitsigns.nvim" }, + }, + { + "~/projects/gitsigns.nvim", + { "lewis6991/gitsigns.nvim", opts = {}, dev = true }, + { "gitsigns.nvim" }, + }, + { + "~/projects/gitsigns.nvim", + { "lewis6991/gitsigns.nvim", opts = {} }, + { "lewis6991/gitsigns.nvim", dev = true }, + }, + { + "~/projects/gitsigns.nvim", + { "lewis6991/gitsigns.nvim", opts = {} }, + { "gitsigns.nvim", dev = true }, + }, + } + + 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() + 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 spec opt", function() it("handles dependencies", function() Config.options.defaults.lazy = false From c8e2091e6d2836b587b9892e0fb64afaec36926a Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sun, 15 Oct 2023 08:51:54 +0200 Subject: [PATCH 058/527] fix(plugin): dont allow `dir` changes when we already loaded files from the plugin's old dir. Show an error in this case. Fixes #993 --- lua/lazy/core/loader.lua | 1 + lua/lazy/core/plugin.lua | 13 +++++++++++-- lua/lazy/types.lua | 1 + 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/lua/lazy/core/loader.lua b/lua/lazy/core/loader.lua index 9e62371..bc41864 100644 --- a/lua/lazy/core/loader.lua +++ b/lua/lazy/core/loader.lua @@ -495,6 +495,7 @@ end function M.auto_load(modname, modpath) local plugin = Plugin.find(modpath) if plugin and modpath:find(plugin.dir, 1, true) == 1 then + plugin._.rtp_loaded = true -- don't load if we're loading specs or if the plugin is already loaded if not (Plugin.loading or plugin._.loaded) then if plugin.module == false then diff --git a/lua/lazy/core/plugin.lua b/lua/lazy/core/plugin.lua index a915d8f..a51806e 100644 --- a/lua/lazy/core/plugin.lua +++ b/lua/lazy/core/plugin.lua @@ -459,10 +459,19 @@ function Spec:merge(old, new) end local new_dir = new._.dir or old._.dir or (new.name and (Config.options.root .. "/" .. new.name)) or nil - if new_dir ~= new.dir then - self:warn("Plugin `" .. new.name .. "` changed `dir`:\n- from: `" .. new.dir .. "`\n- to: `" .. new_dir .. "`") + 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 }) diff --git a/lua/lazy/types.lua b/lua/lazy/types.lua index 0434359..dcbcf18 100644 --- a/lua/lazy/types.lua +++ b/lua/lazy/types.lua @@ -19,6 +19,7 @@ ---@field super? LazyPlugin ---@field module? string ---@field dir? string Explicit dir or dev set for this plugin +---@field rtp_loaded? boolean ---@alias PluginOpts table|fun(self:LazyPlugin, opts:table):table? From c5598617daad5fc4915032fef987c70efa48c0ef Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 15 Oct 2023 06:53:52 +0000 Subject: [PATCH 059/527] 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 dead002..8d1bb74 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: 2023 October 14 +*lazy.nvim.txt* For Neovim >= 0.8.0 Last change: 2023 October 15 ============================================================================== Table of Contents *lazy.nvim-table-of-contents* From ed6c9ffe2174bcfe4c17199ec4535aa4d4be1e62 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 15 Oct 2023 22:24:48 +0200 Subject: [PATCH 060/527] chore(main): release 10.14.0 (#1120) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- CHANGELOG.md | 13 +++++++++++++ lua/lazy/core/config.lua | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 95c49a1..a19283e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [10.14.0](https://github.com/folke/lazy.nvim/compare/v10.13.4...v10.14.0) (2023-10-15) + + +### Features + +* **plugin:** treat url changes as warnings. They will only be shown with checkhealth ([0c53d46](https://github.com/folke/lazy.nvim/commit/0c53d4673ff02c57a192558325b394cfd9adde0f)) + + +### Bug Fixes + +* **plugin:** dont allow `dir` changes when we already loaded files from the plugin's old dir. Show an error in this case. Fixes [#993](https://github.com/folke/lazy.nvim/issues/993) ([c8e2091](https://github.com/folke/lazy.nvim/commit/c8e2091e6d2836b587b9892e0fb64afaec36926a)) +* **plugin:** improved dir/dev merging. Fixes [#993](https://github.com/folke/lazy.nvim/issues/993) ([3dc413d](https://github.com/folke/lazy.nvim/commit/3dc413d6fd279dfff777a9f9a964697a16c5aabc)) + ## [10.13.4](https://github.com/folke/lazy.nvim/compare/v10.13.3...v10.13.4) (2023-10-14) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index cf278a9..7fa7a91 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -176,7 +176,7 @@ M.defaults = { debug = false, } -M.version = "10.13.4" -- x-release-please-version +M.version = "10.14.0" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 1cfd6d1f368ab72690e31cf4d8e15c36d8b60202 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Mon, 16 Oct 2023 15:05:16 +0200 Subject: [PATCH 061/527] fix(loader): don't load handlers before installing plugins --- lua/lazy/core/handler/event.lua | 3 ++- lua/lazy/core/handler/init.lua | 11 ++++++++++- lua/lazy/core/handler/keys.lua | 3 ++- lua/lazy/core/plugin.lua | 29 +++++++++++++++++++---------- lua/lazy/types.lua | 2 ++ lua/lazy/view/render.lua | 26 ++++++++++++++------------ 6 files changed, 49 insertions(+), 25 deletions(-) diff --git a/lua/lazy/core/handler/event.lua b/lua/lazy/core/handler/event.lua index dd1a38f..018d04b 100644 --- a/lua/lazy/core/handler/event.lua +++ b/lua/lazy/core/handler/event.lua @@ -64,10 +64,11 @@ end ---@param plugin LazyPlugin function M:values(plugin) + local Plugin = require("lazy.core.plugin") ---@type table local values = {} ---@diagnostic disable-next-line: no-unknown - for _, value in ipairs(plugin[self.type] or {}) do + for _, value in ipairs(Plugin.values(plugin, self.type, true)) do local event = self:parse(value) values[event.id] = event end diff --git a/lua/lazy/core/handler/init.lua b/lua/lazy/core/handler/init.lua index 127ccae..8a5179d 100644 --- a/lua/lazy/core/handler/init.lua +++ b/lua/lazy/core/handler/init.lua @@ -39,6 +39,10 @@ end ---@param plugin LazyPlugin function M.disable(plugin) + if not plugin._.handlers_enabled then + return + end + plugin._.handlers_enabled = false for type, handler in pairs(M.handlers) do if plugin[type] then handler:del(plugin) @@ -49,11 +53,15 @@ end ---@param plugin LazyPlugin function M.enable(plugin) if not plugin._.loaded then + if plugin._.handlers_enabled then + return + end for type, handler in pairs(M.handlers) do if plugin[type] then handler:add(plugin) end end + plugin._.handlers_enabled = true end end @@ -80,10 +88,11 @@ function M:_del(_value) end ---@param plugin LazyPlugin function M:values(plugin) + local Plugin = require("lazy.core.plugin") ---@type table local values = {} ---@diagnostic disable-next-line: no-unknown - for _, value in ipairs(plugin[self.type] or {}) do + for _, value in ipairs(Plugin.values(plugin, self.type, true)) do values[value] = value end return values diff --git a/lua/lazy/core/handler/keys.lua b/lua/lazy/core/handler/keys.lua index 9a87128..a7f7f68 100644 --- a/lua/lazy/core/handler/keys.lua +++ b/lua/lazy/core/handler/keys.lua @@ -52,7 +52,8 @@ end ---@param plugin LazyPlugin function M:values(plugin) - return M.resolve(plugin.keys) + local Plugin = require("lazy.core.plugin") + return M.resolve(Plugin.values(plugin, "keys", true)) end ---@param spec? (string|LazyKeysSpec)[] diff --git a/lua/lazy/core/plugin.lua b/lua/lazy/core/plugin.lua index a51806e..9c36f71 100644 --- a/lua/lazy/core/plugin.lua +++ b/lua/lazy/core/plugin.lua @@ -42,15 +42,6 @@ end function Spec:parse(spec) self:normalize(spec) self:fix_disabled() - - -- calculate handlers - for _, plugin in pairs(self.plugins) do - for _, handler in pairs(Handler.types) do - if plugin[handler] then - plugin[handler] = M.values(plugin, handler, true) - end - end - end end -- PERF: optimized code to get package name without using lua patterns @@ -609,8 +600,26 @@ end ---@param prop string ---@param is_list? boolean function M.values(plugin, prop, is_list) + if not plugin[prop] then + return {} + end + plugin._.values = plugin._.values or {} + local key = prop .. (is_list and "_list" or "") + if plugin._.values[key] == nil then + plugin[prop] = M._values(plugin, prop, is_list) + plugin._.values[key] = true + end + return plugin[prop] or {} +end + +-- Merges super values or runs the values function to override values or return new ones +-- Used for opts, cmd, event, ft and keys +---@param plugin LazyPlugin +---@param prop string +---@param is_list? boolean +function M._values(plugin, prop, is_list) ---@type table - local ret = plugin._.super and M.values(plugin._.super, prop, is_list) or {} + local ret = plugin._.super and M._values(plugin._.super, prop, is_list) or {} local values = rawget(plugin, prop) if not values then diff --git a/lua/lazy/types.lua b/lua/lazy/types.lua index dcbcf18..346d8e4 100644 --- a/lua/lazy/types.lua +++ b/lua/lazy/types.lua @@ -20,6 +20,8 @@ ---@field module? string ---@field dir? string Explicit dir or dev set for this plugin ---@field rtp_loaded? boolean +---@field values? table +---@field handlers_enabled? boolean ---@alias PluginOpts table|fun(self:LazyPlugin, opts:table):table? diff --git a/lua/lazy/view/render.lua b/lua/lazy/view/render.lua index b5d83a0..df37b74 100644 --- a/lua/lazy/view/render.lua +++ b/lua/lazy/view/render.lua @@ -415,7 +415,7 @@ function M:plugin(plugin) else self:append(" ") local reason = {} - if plugin._.kind ~= "disabled" then + if plugin._.kind ~= "disabled" and plugin._.handlers_enabled then for handler in pairs(Handler.types) do if plugin[handler] then local values = Handler.handlers[handler]:values(plugin) @@ -542,17 +542,19 @@ function M:details(plugin) end end) - for handler in pairs(Handler.types) do - if plugin[handler] then - table.insert(props, { - handler, - function() - for _, value in ipairs(plugin[handler]) do - self:reason({ [handler] = value }) - self:append(" ") - end - end, - }) + if plugin._.handlers_enabled then + for handler in pairs(Handler.types) do + if plugin[handler] then + table.insert(props, { + handler, + function() + for _, value in ipairs(Plugin.values(plugin, handler, true)) do + self:reason({ [handler] = value }) + self:append(" ") + end + end, + }) + end end end self:props(props, { indent = 6 }) From 1ea2eaefa66fdc5a2a7e7b9309c11291cca0a020 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Mon, 16 Oct 2023 15:11:01 +0200 Subject: [PATCH 062/527] test: fixed tests for plugin spec --- tests/core/plugin_spec.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/core/plugin_spec.lua b/tests/core/plugin_spec.lua index cae8542..6df2e81 100644 --- a/tests/core/plugin_spec.lua +++ b/tests/core/plugin_spec.lua @@ -237,6 +237,7 @@ describe("plugin spec opt", function() local spec = Plugin.Spec.new(test) assert(#spec.notifs == 0) assert(vim.tbl_count(spec.plugins) == 1) + Plugin.values(spec.plugins.bar, "event", true) assert(type(spec.plugins.bar.event) == "table") assert(#spec.plugins.bar.event == 2) assert(vim.tbl_contains(spec.plugins.bar.event, "mod1")) @@ -299,6 +300,7 @@ describe("plugin spec opt", function() local spec = Plugin.Spec.new(test) assert(#spec.notifs == 0) assert(vim.tbl_count(spec.plugins) == 1) + Plugin.values(spec.plugins.bar, "event", true) assert(type(spec.plugins.bar.event) == "table") assert(#spec.plugins.bar.event == 2) assert(vim.tbl_contains(spec.plugins.bar.event, "mod1")) From 24a93426c412f356b3dc51d5f9d4604689bb7dbe Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 16 Oct 2023 13:12:01 +0000 Subject: [PATCH 063/527] 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 8d1bb74..80df4c9 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: 2023 October 15 +*lazy.nvim.txt* For Neovim >= 0.8.0 Last change: 2023 October 16 ============================================================================== Table of Contents *lazy.nvim-table-of-contents* From 239f0fa9c181150656ed23e33465349b61a3ed20 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 16 Oct 2023 15:30:19 +0200 Subject: [PATCH 064/527] chore(main): release 10.14.1 (#1123) 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 a19283e..6cdb490 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [10.14.1](https://github.com/folke/lazy.nvim/compare/v10.14.0...v10.14.1) (2023-10-16) + + +### Bug Fixes + +* **loader:** don't load handlers before installing plugins ([1cfd6d1](https://github.com/folke/lazy.nvim/commit/1cfd6d1f368ab72690e31cf4d8e15c36d8b60202)) + ## [10.14.0](https://github.com/folke/lazy.nvim/compare/v10.13.4...v10.14.0) (2023-10-15) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 7fa7a91..06ed181 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -176,7 +176,7 @@ M.defaults = { debug = false, } -M.version = "10.14.0" -- x-release-please-version +M.version = "10.14.1" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 2270bbbc48503f468633cc5c2065321001c4f0ac Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Mon, 16 Oct 2023 18:11:02 +0200 Subject: [PATCH 065/527] fix(plugin): work-around for Plugin.values error. Will add proper fix later. Fixes #1124 --- lua/lazy/core/plugin.lua | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lua/lazy/core/plugin.lua b/lua/lazy/core/plugin.lua index 9c36f71..d9ad3ac 100644 --- a/lua/lazy/core/plugin.lua +++ b/lua/lazy/core/plugin.lua @@ -556,6 +556,10 @@ function M.load() Config.plugins[name]._ = plugin._ Config.plugins[name]._.dep = dep Config.plugins[name]._.super = super + -- FIXME: work-around for changes related to Plugin.values + for handler in pairs(Handler) do + Config.plugins[name][handler] = plugin[handler] + end end end Util.track() From b9c604e839e854bc999e99b90319f1b49776aeac Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 16 Oct 2023 18:18:42 +0200 Subject: [PATCH 066/527] chore(main): release 10.14.2 (#1125) 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 6cdb490..8998644 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [10.14.2](https://github.com/folke/lazy.nvim/compare/v10.14.1...v10.14.2) (2023-10-16) + + +### Bug Fixes + +* **plugin:** work-around for Plugin.values error. Will add proper fix later. Fixes [#1124](https://github.com/folke/lazy.nvim/issues/1124) ([2270bbb](https://github.com/folke/lazy.nvim/commit/2270bbbc48503f468633cc5c2065321001c4f0ac)) + ## [10.14.1](https://github.com/folke/lazy.nvim/compare/v10.14.0...v10.14.1) (2023-10-16) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 06ed181..beafd4c 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -176,7 +176,7 @@ M.defaults = { debug = false, } -M.version = "10.14.1" -- x-release-please-version +M.version = "10.14.2" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 2f169e74d46dea437661ddefccdc1f397a073e09 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Mon, 16 Oct 2023 22:34:44 +0200 Subject: [PATCH 067/527] refactor(handlers): lazy resolving of plugin handlers (#1126) * refactor(handlers): lazy resolving of plugin handlers * test: fixed tests --- lua/lazy/core/config.lua | 4 +- lua/lazy/core/handler/event.lua | 15 +------ lua/lazy/core/handler/ft.lua | 3 +- lua/lazy/core/handler/init.lua | 61 +++++++++++++++----------- lua/lazy/core/handler/keys.lua | 21 ++++++--- lua/lazy/core/plugin.lua | 23 +++++----- lua/lazy/types.lua | 15 +++---- lua/lazy/view/render.lua | 76 +++++++++++++++------------------ tests/core/plugin_spec.lua | 28 +++++++----- 9 files changed, 126 insertions(+), 120 deletions(-) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index beafd4c..0ed35ee 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -55,7 +55,7 @@ M.defaults = { icons = { cmd = " ", config = "", - event = "", + event = " ", ft = " ", init = " ", import = " ", @@ -67,7 +67,7 @@ M.defaults = { runtime = " ", require = "󰢱 ", source = " ", - start = "", + start = " ", task = "✔ ", list = { "●", diff --git a/lua/lazy/core/handler/event.lua b/lua/lazy/core/handler/event.lua index 018d04b..aff4572 100644 --- a/lua/lazy/core/handler/event.lua +++ b/lua/lazy/core/handler/event.lua @@ -37,7 +37,7 @@ M.group = vim.api.nvim_create_augroup("lazy_handler_event", { clear = true }) ---@param spec LazyEventSpec ---@return LazyEvent -function M:parse(spec) +function M:_parse(spec) local ret = M.mappings[spec] --[[@as LazyEvent?]] if ret then return ret @@ -62,19 +62,6 @@ function M:parse(spec) return ret end ----@param plugin LazyPlugin -function M:values(plugin) - local Plugin = require("lazy.core.plugin") - ---@type table - local values = {} - ---@diagnostic disable-next-line: no-unknown - for _, value in ipairs(Plugin.values(plugin, self.type, true)) do - local event = self:parse(value) - values[event.id] = event - end - return values -end - ---@param event LazyEvent function M:_add(event) local done = false diff --git a/lua/lazy/core/handler/ft.lua b/lua/lazy/core/handler/ft.lua index 7af2b9a..9b33d37 100644 --- a/lua/lazy/core/handler/ft.lua +++ b/lua/lazy/core/handler/ft.lua @@ -13,7 +13,8 @@ function M:add(plugin) end end -function M:parse(value) +---@return LazyEvent +function M:_parse(value) return { id = value, event = "FileType", diff --git a/lua/lazy/core/handler/init.lua b/lua/lazy/core/handler/init.lua index 8a5179d..ba45de5 100644 --- a/lua/lazy/core/handler/init.lua +++ b/lua/lazy/core/handler/init.lua @@ -39,29 +39,20 @@ end ---@param plugin LazyPlugin function M.disable(plugin) - if not plugin._.handlers_enabled then - return - end - plugin._.handlers_enabled = false - for type, handler in pairs(M.handlers) do - if plugin[type] then - handler:del(plugin) - end + for type in pairs(plugin._.handlers or {}) do + M.handlers[type]:del(plugin) end end ---@param plugin LazyPlugin function M.enable(plugin) if not plugin._.loaded then - if plugin._.handlers_enabled then - return + if not plugin._.handlers then + M.load(plugin) end - for type, handler in pairs(M.handlers) do - if plugin[type] then - handler:add(plugin) - end + for type in pairs(plugin._.handlers or {}) do + M.handlers[type]:add(plugin) end - plugin._.handlers_enabled = true end end @@ -86,21 +77,40 @@ function M:_add(_value) end ---@protected function M:_del(_value) end +---@param value any +---@param _plugin LazyPlugin +---@return string|{id:string} +function M:_parse(value, _plugin) + assert(type(value) == "string", "Expected string, got " .. vim.inspect(value)) + return value +end + +---@param values any[] ---@param plugin LazyPlugin -function M:values(plugin) - local Plugin = require("lazy.core.plugin") +function M:_values(values, plugin) ---@type table - local values = {} - ---@diagnostic disable-next-line: no-unknown - for _, value in ipairs(Plugin.values(plugin, self.type, true)) do - values[value] = value + local ret = {} + for _, value in ipairs(values) do + local parsed = self:_parse(value, plugin) + ret[type(parsed) == "string" and parsed or parsed.id] = parsed + end + return ret +end + +---@param plugin LazyPlugin +function M.load(plugin) + local Plugin = require("lazy.core.plugin") + plugin._.handlers = {} + for type, handler in pairs(M.handlers) do + if plugin[type] then + plugin._.handlers[type] = handler:_values(Plugin.values(plugin, type, true), plugin) + end end - return values end ---@param plugin LazyPlugin function M:add(plugin) - for key, value in pairs(self:values(plugin)) do + for key, value in pairs(plugin._.handlers[self.type] or {}) do if not self.active[key] then self.active[key] = {} self:_add(value) @@ -112,7 +122,10 @@ end ---@param plugin LazyPlugin function M:del(plugin) - for key, value in pairs(self:values(plugin)) do + if not plugin._.handlers then + return + end + for key, value in pairs(plugin._.handlers[self.type] or {}) do if self.active[key] and self.active[key][plugin.name] then self.active[key][plugin.name] = nil if vim.tbl_isempty(self.active[key]) then diff --git a/lua/lazy/core/handler/keys.lua b/lua/lazy/core/handler/keys.lua index a7f7f68..e19d6e5 100644 --- a/lua/lazy/core/handler/keys.lua +++ b/lua/lazy/core/handler/keys.lua @@ -19,10 +19,13 @@ local Util = require("lazy.core.util") ---@field rhs? string|fun() rhs ---@field mode? string ---@field id string +---@field name string ---@class LazyKeysHandler:LazyHandler local M = {} +local skip = { mode = true, id = true, ft = true, rhs = true, lhs = true } + ---@param value string|LazyKeysSpec ---@param mode? string ---@return LazyKeys @@ -37,12 +40,18 @@ function M.parse(value, mode) ret[2] = nil ret.mode = mode or "n" ret.id = vim.api.nvim_replace_termcodes(ret.lhs, true, true, true) + if ret.mode ~= "n" then ret.id = ret.id .. " (" .. ret.mode .. ")" end return ret end +---@param keys LazyKeys +function M.to_string(keys) + return keys.lhs .. (keys.mode == "n" and "" or " (" .. keys.mode .. ")") +end + ---@param lhs string ---@param mode? string function M:have(lhs, mode) @@ -50,10 +59,8 @@ function M:have(lhs, mode) return self.managed[keys.id] ~= nil end ----@param plugin LazyPlugin -function M:values(plugin) - local Plugin = require("lazy.core.plugin") - return M.resolve(Plugin.values(plugin, "keys", true)) +function M:_values(values) + return M.resolve(values) end ---@param spec? (string|LazyKeysSpec)[] @@ -79,7 +86,6 @@ end ---@param keys LazyKeys function M.opts(keys) - local skip = { mode = true, id = true, ft = true, rhs = true, lhs = true } local opts = {} ---@type LazyKeysBase ---@diagnostic disable-next-line: no-unknown for k, v in pairs(keys) do @@ -106,8 +112,9 @@ function M:_add(keys) self.active[keys.id] = nil if plugins then - Util.track({ keys = lhs }) - Loader.load(plugins, { keys = lhs }) + local name = M.to_string(keys) + Util.track({ keys = name }) + Loader.load(plugins, { keys = name }) Util.track() end diff --git a/lua/lazy/core/plugin.lua b/lua/lazy/core/plugin.lua index d9ad3ac..229b6bf 100644 --- a/lua/lazy/core/plugin.lua +++ b/lua/lazy/core/plugin.lua @@ -556,10 +556,6 @@ function M.load() Config.plugins[name]._ = plugin._ Config.plugins[name]._.dep = dep Config.plugins[name]._.super = super - -- FIXME: work-around for changes related to Plugin.values - for handler in pairs(Handler) do - Config.plugins[name][handler] = plugin[handler] - end end end Util.track() @@ -607,29 +603,32 @@ function M.values(plugin, prop, is_list) if not plugin[prop] then return {} end - plugin._.values = plugin._.values or {} + plugin._.cache = plugin._.cache or {} local key = prop .. (is_list and "_list" or "") - if plugin._.values[key] == nil then - plugin[prop] = M._values(plugin, prop, is_list) - plugin._.values[key] = true + if plugin._.cache[key] == nil then + plugin._.cache[key] = M._values(plugin, plugin, prop, is_list) end - return plugin[prop] or {} + return plugin._.cache[key] end -- Merges super values or runs the values function to override values or return new ones -- Used for opts, cmd, event, ft and keys +---@param root LazyPlugin ---@param plugin LazyPlugin ---@param prop string ---@param is_list? boolean -function M._values(plugin, prop, is_list) +function M._values(root, plugin, prop, is_list) + if not plugin[prop] then + return {} + end ---@type table - local ret = plugin._.super and M._values(plugin._.super, prop, is_list) or {} + local ret = plugin._.super and M._values(root, plugin._.super, prop, is_list) or {} local values = rawget(plugin, prop) if not values then return ret elseif type(values) == "function" then - ret = values(plugin, ret) or ret + ret = values(root, ret) or ret return type(ret) == "table" and ret or { ret } end diff --git a/lua/lazy/types.lua b/lua/lazy/types.lua index 346d8e4..0525ca0 100644 --- a/lua/lazy/types.lua +++ b/lua/lazy/types.lua @@ -20,8 +20,8 @@ ---@field module? string ---@field dir? string Explicit dir or dev set for this plugin ---@field rtp_loaded? boolean ----@field values? table ----@field handlers_enabled? boolean +---@field handlers? LazyPluginHandlers +---@field cache? table ---@alias PluginOpts table|fun(self:LazyPlugin, opts:table):table? @@ -32,12 +32,11 @@ ---@field build? string|fun(self:LazyPlugin)|(string|fun(self:LazyPlugin))[] ---@field opts? PluginOpts ----@class LazyPluginHandlers ----@field event? LazyEventSpec[] ----@field cmd? string[] ----@field ft? string[] ----@field keys? (string|LazyKeysSpec)[] ----@field module? false +---@class LazyPluginHandlers: {[string]: any} +---@field event? table +---@field ft? table +---@field keys? table +---@field cmd? table ---@class LazyPluginRef ---@field branch? string diff --git a/lua/lazy/view/render.lua b/lua/lazy/view/render.lua index df37b74..770abf8 100644 --- a/lua/lazy/view/render.lua +++ b/lua/lazy/view/render.lua @@ -1,6 +1,7 @@ local Config = require("lazy.core.config") local Git = require("lazy.manage.git") local Handler = require("lazy.core.handler") +local Keys = require("lazy.core.handler.keys") local Plugin = require("lazy.core.plugin") local Sections = require("lazy.view.sections") local Util = require("lazy.util") @@ -334,12 +335,10 @@ function M:reason(reason, opts) else self:append(" ") end - if key == "keys" then - value = type(value) == "string" and value or value.lhs or value[1] - end local hl = "LazyReason" .. key:sub(1, 1):upper() .. key:sub(2) local icon = Config.options.ui.icons[key] if icon then + icon = icon:gsub("%s*$", "") self:append(icon .. " ", hl) self:append(value, hl) else @@ -411,35 +410,18 @@ function M:plugin(plugin) end local plugin_start = self:row() if plugin._.loaded then + -- When the plugin is loaded, only show the loading reason self:reason(plugin._.loaded) else + -- otherwise show all lazy handlers self:append(" ") - local reason = {} - if plugin._.kind ~= "disabled" and plugin._.handlers_enabled then - for handler in pairs(Handler.types) do - if plugin[handler] then - local values = Handler.handlers[handler]:values(plugin) - values = vim.tbl_map(function(value) - if handler == "ft" or handler == "event" then - ---@cast value LazyEvent - return value.id - elseif handler == "keys" then - ---@cast value LazyKeys - return value.lhs .. (value.mode == "n" and "" or " (" .. value.mode .. ")") - end - return value - end, vim.tbl_values(values)) - table.sort(values) - reason[handler] = table.concat(values, " ") - end - end - end + self:handlers(plugin) for _, other in pairs(Config.plugins) do if vim.tbl_contains(other.dependencies or {}, plugin.name) then - reason.plugin = other.name + self:reason({ plugin = other.name }) + self:append(" ") end end - self:reason(reason) end self:diagnostics(plugin) self:nl() @@ -542,26 +524,36 @@ function M:details(plugin) end end) - if plugin._.handlers_enabled then - for handler in pairs(Handler.types) do - if plugin[handler] then - table.insert(props, { - handler, - function() - for _, value in ipairs(Plugin.values(plugin, handler, true)) do - self:reason({ [handler] = value }) - self:append(" ") - end - end, - }) - end - end + for handler in pairs(plugin._.handlers or {}) do + table.insert(props, { + handler, + function() + self:handlers(plugin, handler) + end, + }) end self:props(props, { indent = 6 }) self:nl() end +---@param plugin LazyPlugin +---@param types? LazyHandlerTypes[]|LazyHandlerTypes +function M:handlers(plugin, types) + if not plugin._.handlers then + return + end + types = type(types) == "string" and { types } or types + types = types and types or vim.tbl_keys(Handler.types) + for _, t in ipairs(types) do + for id, value in pairs(plugin._.handlers[t] or {}) do + value = t == "keys" and Keys.to_string(value) or id + self:reason({ [t] = value }) + self:append(" ") + end + end +end + ---@alias LazyProps {[1]:string, [2]:string|fun(), [3]?:string}[] ---@param props LazyProps ---@param opts? {indent: number} @@ -690,16 +682,16 @@ function M:debug() Util.foreach(require("lazy.core.handler").handlers, function(handler_type, handler) Util.foreach(handler.active, function(value, plugins) - value = type(value) == "table" and value[1] or value + assert(type(value) == "string") if not vim.tbl_isempty(plugins) then ---@type string[] plugins = vim.tbl_values(plugins) table.sort(plugins) self:append("● ", "LazySpecial", { indent = 2 }) if handler_type == "keys" then - for k, v in pairs(Handler.handlers.keys:values(Config.plugins[plugins[1]])) do + for k, v in pairs(Config.plugins[plugins[1]]._.handlers.keys) do if k == value then - value = v + value = v.name break end end diff --git a/tests/core/plugin_spec.lua b/tests/core/plugin_spec.lua index 6df2e81..ee5b007 100644 --- a/tests/core/plugin_spec.lua +++ b/tests/core/plugin_spec.lua @@ -1,4 +1,5 @@ local Config = require("lazy.core.config") +local Handler = require("lazy.core.handler") local Plugin = require("lazy.core.plugin") local assert = require("luassert") @@ -142,6 +143,9 @@ describe("plugin spec opt", function() end) describe("deps", function() + before_each(function() + Handler.init() + end) it("handles dep names", function() Config.options.defaults.lazy = false local tests = { @@ -237,11 +241,13 @@ describe("plugin spec opt", function() local spec = Plugin.Spec.new(test) assert(#spec.notifs == 0) assert(vim.tbl_count(spec.plugins) == 1) - Plugin.values(spec.plugins.bar, "event", true) - assert(type(spec.plugins.bar.event) == "table") - assert(#spec.plugins.bar.event == 2) - assert(vim.tbl_contains(spec.plugins.bar.event, "mod1")) - assert(vim.tbl_contains(spec.plugins.bar.event, "mod2")) + Handler.load(spec.plugins.bar) + vim.print(spec.plugins.bar._.handlers) + local events = vim.tbl_keys(spec.plugins.bar._.handlers.event or {}) + assert(type(events) == "table") + assert(#events == 2) + assert(vim.tbl_contains(events, "mod1")) + assert(vim.tbl_contains(events, "mod2")) end end) end) @@ -297,14 +303,16 @@ describe("plugin spec opt", function() { { "foo/bar", event = "mod1" }, { "foo/bar", event = { "mod2" } } }, } for _, test in ipairs(tests) do + Handler.init() local spec = Plugin.Spec.new(test) assert(#spec.notifs == 0) assert(vim.tbl_count(spec.plugins) == 1) - Plugin.values(spec.plugins.bar, "event", true) - assert(type(spec.plugins.bar.event) == "table") - assert(#spec.plugins.bar.event == 2) - assert(vim.tbl_contains(spec.plugins.bar.event, "mod1")) - assert(vim.tbl_contains(spec.plugins.bar.event, "mod2")) + Handler.load(spec.plugins.bar) + local events = spec.plugins.bar._.handlers.event + assert(type(events) == "table") + assert(vim.tbl_count(events) == 2) + assert(events["mod1"]) + assert(events["mod2"]) end end) From c1b98873730d7121fec6a2f732b2083cd2cd62bf Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Mon, 16 Oct 2023 23:04:57 +0200 Subject: [PATCH 068/527] perf(plugin): cache lazy handler values --- lua/lazy/core/plugin.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lua/lazy/core/plugin.lua b/lua/lazy/core/plugin.lua index 229b6bf..fc25f8d 100644 --- a/lua/lazy/core/plugin.lua +++ b/lua/lazy/core/plugin.lua @@ -594,7 +594,8 @@ function M.has_errors(plugin) return false end --- Merges super values or runs the values function to override values or return new ones +-- Merges super values or runs the values function to override values or return new ones. +-- Values are cached for performance. -- Used for opts, cmd, event, ft and keys ---@param plugin LazyPlugin ---@param prop string From 3049575bd84335c63171282c1991089f80977620 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 16 Oct 2023 23:09:07 +0200 Subject: [PATCH 069/527] chore(main): release 10.14.3 (#1127) 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 8998644..9906d4b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [10.14.3](https://github.com/folke/lazy.nvim/compare/v10.14.2...v10.14.3) (2023-10-16) + + +### Performance Improvements + +* **plugin:** cache lazy handler values ([c1b9887](https://github.com/folke/lazy.nvim/commit/c1b98873730d7121fec6a2f732b2083cd2cd62bf)) + ## [10.14.2](https://github.com/folke/lazy.nvim/compare/v10.14.1...v10.14.2) (2023-10-16) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 0ed35ee..59d0b67 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -176,7 +176,7 @@ M.defaults = { debug = false, } -M.version = "10.14.2" -- x-release-please-version +M.version = "10.14.3" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From fb9795e49fcd45e99bf386c675fbca28d98bf0a6 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Tue, 17 Oct 2023 00:29:09 +0200 Subject: [PATCH 070/527] fix(ui): fixed keymaps in debug view --- lua/lazy/view/render.lua | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lua/lazy/view/render.lua b/lua/lazy/view/render.lua index 770abf8..c79be62 100644 --- a/lua/lazy/view/render.lua +++ b/lua/lazy/view/render.lua @@ -682,7 +682,6 @@ function M:debug() Util.foreach(require("lazy.core.handler").handlers, function(handler_type, handler) Util.foreach(handler.active, function(value, plugins) - assert(type(value) == "string") if not vim.tbl_isempty(plugins) then ---@type string[] plugins = vim.tbl_values(plugins) @@ -691,7 +690,7 @@ function M:debug() if handler_type == "keys" then for k, v in pairs(Config.plugins[plugins[1]]._.handlers.keys) do if k == value then - value = v.name + value = Keys.to_string(v) break end end From f73986546cadecbcc0531c14b73d4e2cd679d672 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 17 Oct 2023 00:33:20 +0200 Subject: [PATCH 071/527] chore(main): release 10.14.4 (#1128) 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 9906d4b..3432f19 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [10.14.4](https://github.com/folke/lazy.nvim/compare/v10.14.3...v10.14.4) (2023-10-16) + + +### Bug Fixes + +* **ui:** fixed keymaps in debug view ([fb9795e](https://github.com/folke/lazy.nvim/commit/fb9795e49fcd45e99bf386c675fbca28d98bf0a6)) + ## [10.14.3](https://github.com/folke/lazy.nvim/compare/v10.14.2...v10.14.3) (2023-10-16) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 59d0b67..cde7506 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -176,7 +176,7 @@ M.defaults = { debug = false, } -M.version = "10.14.3" -- x-release-please-version +M.version = "10.14.4" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From cdfa78888159323abc931db26f3301360393fbb7 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Tue, 17 Oct 2023 08:36:09 +0200 Subject: [PATCH 072/527] fix(loader): fixed event check in reload. Fixes #1124 --- lua/lazy/core/loader.lua | 6 ++++-- lua/lazy/types.lua | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/lua/lazy/core/loader.lua b/lua/lazy/core/loader.lua index bc41864..edf9ba7 100644 --- a/lua/lazy/core/loader.lua +++ b/lua/lazy/core/loader.lua @@ -259,8 +259,10 @@ function M.reload(plugin) load = true end - for _, event in ipairs(plugin.event or {}) do - if event == "VimEnter" or event == "UIEnter" or event:find("VeryLazy") then + local events = plugin._.handlers and plugin._.handlers.event and plugin._.handlers.event or {} + + for _, event in pairs(events) do + if event.id:find("VimEnter") or event.id:find("UIEnter") or event.id:find("VeryLazy") then load = true break end diff --git a/lua/lazy/types.lua b/lua/lazy/types.lua index 0525ca0..a3dd9b9 100644 --- a/lua/lazy/types.lua +++ b/lua/lazy/types.lua @@ -32,7 +32,7 @@ ---@field build? string|fun(self:LazyPlugin)|(string|fun(self:LazyPlugin))[] ---@field opts? PluginOpts ----@class LazyPluginHandlers: {[string]: any} +---@class LazyPluginHandlers ---@field event? table ---@field ft? table ---@field keys? table From c373663b491e2e3426a55bb199ebfccff96fbaca Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 17 Oct 2023 06:36:51 +0000 Subject: [PATCH 073/527] 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 80df4c9..5474610 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: 2023 October 16 +*lazy.nvim.txt* For Neovim >= 0.8.0 Last change: 2023 October 17 ============================================================================== Table of Contents *lazy.nvim-table-of-contents* From c7298a10db9b9ef975472827e5898b0c494b70bd Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 17 Oct 2023 10:04:13 +0200 Subject: [PATCH 074/527] chore(main): release 10.14.5 (#1129) 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 3432f19..0cac2ce 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [10.14.5](https://github.com/folke/lazy.nvim/compare/v10.14.4...v10.14.5) (2023-10-17) + + +### Bug Fixes + +* **loader:** fixed event check in reload. Fixes [#1124](https://github.com/folke/lazy.nvim/issues/1124) ([cdfa788](https://github.com/folke/lazy.nvim/commit/cdfa78888159323abc931db26f3301360393fbb7)) + ## [10.14.4](https://github.com/folke/lazy.nvim/compare/v10.14.3...v10.14.4) (2023-10-16) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index cde7506..7e970e4 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -176,7 +176,7 @@ M.defaults = { debug = false, } -M.version = "10.14.4" -- x-release-please-version +M.version = "10.14.5" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 7613ab2abb1bd99e039ae02030bc2c48b7626925 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Tue, 17 Oct 2023 10:29:48 +0200 Subject: [PATCH 075/527] fix(ui): running tasks are now less twitchy --- lua/lazy/manage/runner.lua | 25 ++++++++++++++++++++----- lua/lazy/types.lua | 1 + lua/lazy/view/sections.lua | 3 +++ 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/lua/lazy/manage/runner.lua b/lua/lazy/manage/runner.lua index 85c20be..0ac0c15 100644 --- a/lua/lazy/manage/runner.lua +++ b/lua/lazy/manage/runner.lua @@ -8,7 +8,7 @@ local Util = require("lazy.util") ---@field concurrency? number ---@alias PipelineStep {task:string, opts?:TaskOptions} ----@alias LazyRunnerTask {co:thread, status: {task?:LazyTask, waiting?:boolean}} +---@alias LazyRunnerTask {co:thread, status: {task?:LazyTask, waiting?:boolean}, plugin: LazyPlugin} ---@class Runner ---@field _plugins LazyPlugin[] @@ -29,6 +29,9 @@ function Runner.new(opts) else self._plugins = plugins or Config.plugins end + table.sort(self._plugins, function(a, b) + return a.name < b.name + end) self._running = {} self._on_done = {} @@ -54,12 +57,19 @@ function Runner:_resume(entry) end function Runner:resume(waiting) + 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 + end + end + end + end local running = 0 for _, entry in ipairs(self._running) do if entry.status then - if waiting and entry.status.waiting then - entry.status.waiting = false - end if not entry.status.waiting and self:_resume(entry) then running = running + 1 if self._opts.concurrency and running >= self._opts.concurrency then @@ -76,7 +86,7 @@ function Runner:start() local co = coroutine.create(self.run_pipeline) local ok, err = coroutine.resume(co, self, plugin) if ok then - table.insert(self._running, { co = co, status = {} }) + table.insert(self._running, { co = co, status = {}, plugin = plugin }) else Util.error("Could not start tasks for " .. plugin.name .. "\n" .. err) end @@ -99,21 +109,26 @@ end ---@async ---@param plugin LazyPlugin function Runner:run_pipeline(plugin) + 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 local task = self:queue(plugin, step.task, step.opts) if task then coroutine.yield({ task = task }) assert(task:is_done()) if task.error then + plugin._.working = false return end end end end + plugin._.working = false end ---@param plugin LazyPlugin diff --git a/lua/lazy/types.lua b/lua/lazy/types.lua index a3dd9b9..222acbe 100644 --- a/lua/lazy/types.lua +++ b/lua/lazy/types.lua @@ -8,6 +8,7 @@ ---@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 diff --git a/lua/lazy/view/sections.lua b/lua/lazy/view/sections.lua index 8325332..0c1f578 100644 --- a/lua/lazy/view/sections.lua +++ b/lua/lazy/view/sections.lua @@ -24,6 +24,9 @@ return { }, { filter = function(plugin) + if plugin._.working then + return true + end return has_task(plugin, function(task) return task:is_running() end) From 03419f3e5f7590194d599aa8a1a7a7841409d141 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Tue, 17 Oct 2023 16:52:32 +0200 Subject: [PATCH 076/527] fix(cmd): shedule error message instead of showing directly --- lua/lazy/core/handler/cmd.lua | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lua/lazy/core/handler/cmd.lua b/lua/lazy/core/handler/cmd.lua index ef7a2bd..658c957 100644 --- a/lua/lazy/core/handler/cmd.lua +++ b/lua/lazy/core/handler/cmd.lua @@ -35,7 +35,10 @@ function M:_add(cmd) local info = vim.api.nvim_get_commands({})[cmd] or vim.api.nvim_buf_get_commands(0, {})[cmd] if not info then - return Util.error("Command `" .. cmd .. "` not found after loading " .. plugins) + vim.schedule(function() + Util.error("Command `" .. cmd .. "` not found after loading " .. plugins) + end) + return end command.nargs = info.nargs From c059eece0cdd681b2dd212946e3d48544cc079bf Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Tue, 17 Oct 2023 17:43:37 +0200 Subject: [PATCH 077/527] refactor: Handler.load => Handler.resolve --- lua/lazy/core/handler/init.lua | 4 ++-- tests/core/plugin_spec.lua | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lua/lazy/core/handler/init.lua b/lua/lazy/core/handler/init.lua index ba45de5..b7ce3e5 100644 --- a/lua/lazy/core/handler/init.lua +++ b/lua/lazy/core/handler/init.lua @@ -48,7 +48,7 @@ end function M.enable(plugin) if not plugin._.loaded then if not plugin._.handlers then - M.load(plugin) + M.resolve(plugin) end for type in pairs(plugin._.handlers or {}) do M.handlers[type]:add(plugin) @@ -98,7 +98,7 @@ function M:_values(values, plugin) end ---@param plugin LazyPlugin -function M.load(plugin) +function M.resolve(plugin) local Plugin = require("lazy.core.plugin") plugin._.handlers = {} for type, handler in pairs(M.handlers) do diff --git a/tests/core/plugin_spec.lua b/tests/core/plugin_spec.lua index ee5b007..51f6e03 100644 --- a/tests/core/plugin_spec.lua +++ b/tests/core/plugin_spec.lua @@ -241,7 +241,7 @@ describe("plugin spec opt", function() local spec = Plugin.Spec.new(test) assert(#spec.notifs == 0) assert(vim.tbl_count(spec.plugins) == 1) - Handler.load(spec.plugins.bar) + Handler.resolve(spec.plugins.bar) vim.print(spec.plugins.bar._.handlers) local events = vim.tbl_keys(spec.plugins.bar._.handlers.event or {}) assert(type(events) == "table") @@ -307,7 +307,7 @@ describe("plugin spec opt", function() local spec = Plugin.Spec.new(test) assert(#spec.notifs == 0) assert(vim.tbl_count(spec.plugins) == 1) - Handler.load(spec.plugins.bar) + Handler.resolve(spec.plugins.bar) local events = spec.plugins.bar._.handlers.event assert(type(events) == "table") assert(vim.tbl_count(events) == 2) From daab5fe2807c55867d5f7cfb6ef0944783361be2 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Tue, 17 Oct 2023 17:44:14 +0200 Subject: [PATCH 078/527] fix(loader): dont autoload when lazy handlers have not been setup yet. Fixes #1132 --- lua/lazy/core/loader.lua | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/lua/lazy/core/loader.lua b/lua/lazy/core/loader.lua index edf9ba7..7cbd6f8 100644 --- a/lua/lazy/core/loader.lua +++ b/lua/lazy/core/loader.lua @@ -16,6 +16,7 @@ M.init_done = false M.disabled_rtp_plugins = { packer_compiled = true } ---@type table M.did_ftdetect = {} +M.did_handlers = false function M.disable_rtp_plugin(plugin) M.disabled_rtp_plugins[plugin] = true @@ -56,6 +57,7 @@ function M.setup() -- setup handlers Util.track("handlers") Handler.setup() + M.did_handlers = true Util.track() end @@ -498,8 +500,11 @@ function M.auto_load(modname, modpath) local plugin = Plugin.find(modpath) if plugin and modpath:find(plugin.dir, 1, true) == 1 then plugin._.rtp_loaded = true - -- don't load if we're loading specs or if the plugin is already loaded - if not (Plugin.loading or plugin._.loaded) then + -- don't load if: + -- * handlers haven't been setup yet + -- * we're loading specs + -- * the plugin is already loaded + if M.did_handlers and not (Plugin.loading or plugin._.loaded) then if plugin.module == false then error("Plugin " .. plugin.name .. " is not loaded and is configured with module=false") end @@ -508,9 +513,7 @@ function M.auto_load(modname, modpath) error("You're trying to load `" .. plugin.name .. "` for which `cond==false`") end end - return true end - return false end ---@param modname string From 4c75c8eeb957a99aa44ce8e526c04340ab358c5e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 17 Oct 2023 21:52:13 +0200 Subject: [PATCH 079/527] chore(main): release 10.14.6 (#1130) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- CHANGELOG.md | 9 +++++++++ lua/lazy/core/config.lua | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0cac2ce..7355141 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog +## [10.14.6](https://github.com/folke/lazy.nvim/compare/v10.14.5...v10.14.6) (2023-10-17) + + +### Bug Fixes + +* **cmd:** shedule error message instead of showing directly ([03419f3](https://github.com/folke/lazy.nvim/commit/03419f3e5f7590194d599aa8a1a7a7841409d141)) +* **loader:** dont autoload when lazy handlers have not been setup yet. Fixes [#1132](https://github.com/folke/lazy.nvim/issues/1132) ([daab5fe](https://github.com/folke/lazy.nvim/commit/daab5fe2807c55867d5f7cfb6ef0944783361be2)) +* **ui:** running tasks are now less twitchy ([7613ab2](https://github.com/folke/lazy.nvim/commit/7613ab2abb1bd99e039ae02030bc2c48b7626925)) + ## [10.14.5](https://github.com/folke/lazy.nvim/compare/v10.14.4...v10.14.5) (2023-10-17) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 7e970e4..7ba6851 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -176,7 +176,7 @@ M.defaults = { debug = false, } -M.version = "10.14.5" -- x-release-please-version +M.version = "10.14.6" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 71007c715f14b395546cc319005a6fba9e43c705 Mon Sep 17 00:00:00 2001 From: SandeshPyakurel <85491057+SandeshPyakurel@users.noreply.github.com> Date: Thu, 19 Oct 2023 23:58:25 +0545 Subject: [PATCH 080/527] docs: Typos fixed in CHANGELOG.md (#1140) --- CHANGELOG.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7355141..a09c1a2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ ### Bug Fixes -* **cmd:** shedule error message instead of showing directly ([03419f3](https://github.com/folke/lazy.nvim/commit/03419f3e5f7590194d599aa8a1a7a7841409d141)) +* **cmd:** schedule error message instead of showing directly ([03419f3](https://github.com/folke/lazy.nvim/commit/03419f3e5f7590194d599aa8a1a7a7841409d141)) * **loader:** dont autoload when lazy handlers have not been setup yet. Fixes [#1132](https://github.com/folke/lazy.nvim/issues/1132) ([daab5fe](https://github.com/folke/lazy.nvim/commit/daab5fe2807c55867d5f7cfb6ef0944783361be2)) * **ui:** running tasks are now less twitchy ([7613ab2](https://github.com/folke/lazy.nvim/commit/7613ab2abb1bd99e039ae02030bc2c48b7626925)) @@ -133,7 +133,7 @@ ### Bug Fixes -* **manage:** prevend auto conversion 'CRLF' to 'LF' in update lazy-lock.json on Windows. Fixes [#1093](https://github.com/folke/lazy.nvim/issues/1093) ([#1094](https://github.com/folke/lazy.nvim/issues/1094)) ([5579d72](https://github.com/folke/lazy.nvim/commit/5579d72576b21b9c8c2d01838598aece5dc2be6d)) +* **manage:** prevent auto conversion 'CRLF' to 'LF' in update lazy-lock.json on Windows. Fixes [#1093](https://github.com/folke/lazy.nvim/issues/1093) ([#1094](https://github.com/folke/lazy.nvim/issues/1094)) ([5579d72](https://github.com/folke/lazy.nvim/commit/5579d72576b21b9c8c2d01838598aece5dc2be6d)) * **profiling:** ensure proper traces in case of require errors ([2782f81](https://github.com/folke/lazy.nvim/commit/2782f8125e793940f5bf942af1a1df0bbc989d11)) ## [10.9.0](https://github.com/folke/lazy.nvim/compare/v10.8.2...v10.9.0) (2023-10-09) @@ -459,7 +459,7 @@ ### Features -* **plugin:** added support for `weak` specs. They will not be included in the final spec if not specified somwhere else ([8564f6d](https://github.com/folke/lazy.nvim/commit/8564f6d22b78a4a0fba9811faa556159b6c90a49)) +* **plugin:** added support for `weak` specs. They will not be included in the final spec if not specified somewhere else ([8564f6d](https://github.com/folke/lazy.nvim/commit/8564f6d22b78a4a0fba9811faa556159b6c90a49)) ### Bug Fixes @@ -480,7 +480,7 @@ ### Bug Fixes -* **loader:** dont clear tasks when istalling missing plugins ([80c4dec](https://github.com/folke/lazy.nvim/commit/80c4decc3226551b433dfea5e459998a96f17822)) +* **loader:** dont clear tasks when installing missing plugins ([80c4dec](https://github.com/folke/lazy.nvim/commit/80c4decc3226551b433dfea5e459998a96f17822)) * **loader:** reset cache before installing plugins during startup. Fixes [#803](https://github.com/folke/lazy.nvim/issues/803) ([aecdaab](https://github.com/folke/lazy.nvim/commit/aecdaab6a6ce8c9fdf9f983d5f943c6cfb11bf61)) ## [9.16.0](https://github.com/folke/lazy.nvim/compare/v9.15.0...v9.16.0) (2023-05-13) @@ -758,7 +758,7 @@ ### Features * deactivate WIP ([57a3960](https://github.com/folke/lazy.nvim/commit/57a3960fafc210f240a07439d1adfaba09d6ff59)) -* use "wslview" instead of "xsl-open" if it exsits ([#509](https://github.com/folke/lazy.nvim/issues/509)) ([2451ea4](https://github.com/folke/lazy.nvim/commit/2451ea4e655bc60ef639ad284e69c6fca15da352)) +* use "wslview" instead of "xsl-open" if it exists ([#509](https://github.com/folke/lazy.nvim/issues/509)) ([2451ea4](https://github.com/folke/lazy.nvim/commit/2451ea4e655bc60ef639ad284e69c6fca15da352)) ### Bug Fixes @@ -1100,7 +1100,7 @@ ### Features * **git:** added support for packed-refs. Fixes [#260](https://github.com/folke/lazy.nvim/issues/260) ([865ff41](https://github.com/folke/lazy.nvim/commit/865ff414c70d20648000d1b9d754dba64dbf4a62)) -* **ui:** make brower configurable. Fixes [#248](https://github.com/folke/lazy.nvim/issues/248) ([679d85c](https://github.com/folke/lazy.nvim/commit/679d85c9ffb6bd49d27267b3a282eeb73e063cde)) +* **ui:** make browser configurable. Fixes [#248](https://github.com/folke/lazy.nvim/issues/248) ([679d85c](https://github.com/folke/lazy.nvim/commit/679d85c9ffb6bd49d27267b3a282eeb73e063cde)) * **ui:** show when plugin would be loaded for unloaded plugins. Fixes [#261](https://github.com/folke/lazy.nvim/issues/261) ([5575d2b](https://github.com/folke/lazy.nvim/commit/5575d2b2a9eb7e104d85f4f68754ef3734c7a4a1)) @@ -1167,7 +1167,7 @@ ### Bug Fixes -* **cache:** ad jit.verion to cache version string. Fixes [#225](https://github.com/folke/lazy.nvim/issues/225) ([e3ffcff](https://github.com/folke/lazy.nvim/commit/e3ffcff7cce1206a2e41b413b0923a3aafeb9306)) +* **cache:** ad jit.version to cache version string. Fixes [#225](https://github.com/folke/lazy.nvim/issues/225) ([e3ffcff](https://github.com/folke/lazy.nvim/commit/e3ffcff7cce1206a2e41b413b0923a3aafeb9306)) * **cache:** added support for top level lua linked directories. Fixes [#233](https://github.com/folke/lazy.nvim/issues/233) ([853d4d5](https://github.com/folke/lazy.nvim/commit/853d4d58381870a4804ee7d822d3331d3cc5924d)) * **cache:** always normalize modname separators ([8544c38](https://github.com/folke/lazy.nvim/commit/8544c389ab54dd21c562b2763829670c71266caa)) * **cache:** check package.loaded after auto-load and return existing module if present. Fixes [#224](https://github.com/folke/lazy.nvim/issues/224) ([044e28b](https://github.com/folke/lazy.nvim/commit/044e28bf8bb454335c63998ef6f21bc34b3e6124)) @@ -1187,7 +1187,7 @@ * **loader:** show proper error message when trying to load a plugin that is not installed. Fixes [#201](https://github.com/folke/lazy.nvim/issues/201). Fixes [#202](https://github.com/folke/lazy.nvim/issues/202) ([956164d](https://github.com/folke/lazy.nvim/commit/956164d27dc02b8d3c21c9ef7cc9028d854b0978)) * **loader:** temporary fix for Vimtex and others. See [#230](https://github.com/folke/lazy.nvim/issues/230) ([c7122d6](https://github.com/folke/lazy.nvim/commit/c7122d64cdf16766433588486adcee67571de6d0)) * **loader:** when `config=true`, pass `nil` to `setup()`. Fixes [#208](https://github.com/folke/lazy.nvim/issues/208) ([5f423b2](https://github.com/folke/lazy.nvim/commit/5f423b29c65f536a9c41a34a8328372baa444da5)) -* only show fired ft events in debug obvioulsy. Fixes [#232](https://github.com/folke/lazy.nvim/issues/232) ([c7c1295](https://github.com/folke/lazy.nvim/commit/c7c1295c3e429d4a95e36b5c5b2dfcbeca61f42d)) +* only show fired ft events in debug obviously. Fixes [#232](https://github.com/folke/lazy.nvim/issues/232) ([c7c1295](https://github.com/folke/lazy.nvim/commit/c7c1295c3e429d4a95e36b5c5b2dfcbeca61f42d)) * **rtp:** correct order of adding to rtp. Fixes [#226](https://github.com/folke/lazy.nvim/issues/226) ([4e3a973](https://github.com/folke/lazy.nvim/commit/4e3a973f85bd2393009d495ecfd6c058345309d4)) From 9788a19ec0b4036028e78aec702634b4b89d3470 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 19 Oct 2023 18:14:04 +0000 Subject: [PATCH 081/527] 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 5474610..d92274b 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: 2023 October 17 +*lazy.nvim.txt* For Neovim >= 0.8.0 Last change: 2023 October 19 ============================================================================== Table of Contents *lazy.nvim-table-of-contents* From 6b7b4c5b96b39806e3b8a02ade07bee468f57b58 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sun, 22 Oct 2023 14:24:27 +0200 Subject: [PATCH 082/527] style: show full trace when debug=true --- 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 0b27797..77cb8f5 100644 --- a/lua/lazy/core/util.lua +++ b/lua/lazy/core/util.lua @@ -75,7 +75,7 @@ function M.pretty_trace(opts) if not info then break end - if info.what ~= "C" and not info.source:find("lazy.nvim") then + if info.what ~= "C" and (Config.options.debug or not info.source:find("lazy.nvim")) then local source = info.source:sub(2) if source:find(Config.options.root, 1, true) == 1 then source = source:sub(#Config.options.root + 1) From 42fb1e89adb8008a401848e131c5ecb985db52f1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 22 Oct 2023 12:25:19 +0000 Subject: [PATCH 083/527] 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 d92274b..3c1e435 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: 2023 October 19 +*lazy.nvim.txt* For Neovim >= 0.8.0 Last change: 2023 October 22 ============================================================================== Table of Contents *lazy.nvim-table-of-contents* From 4446fdb9af1b1c41560f6cc41452eee826a8bce0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maria=20Jos=C3=A9=20Solano?= Date: Sun, 22 Oct 2023 22:52:54 -0700 Subject: [PATCH 084/527] feat(ui): check pinned packages that can't be updated (#1139) * style: fix filter types * feat: check outdated pinned plugins --- README.md | 1 + lua/lazy/core/config.lua | 1 + lua/lazy/manage/task/git.lua | 9 ++++++++- lua/lazy/types.lua | 1 + lua/lazy/view/sections.lua | 12 ++++++++---- 5 files changed, 19 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 9fcf781..ebcca6a 100644 --- a/README.md +++ b/README.md @@ -409,6 +409,7 @@ return { 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 diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 7ba6851..3f1f269 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -119,6 +119,7 @@ M.defaults = { 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 diff --git a/lua/lazy/manage/task/git.lua b/lua/lazy/manage/task/git.lua index 9913ea1..a1bfcf6 100644 --- a/lua/lazy/manage/task/git.lua +++ b/lua/lazy/manage/task/git.lua @@ -42,7 +42,14 @@ M.log = { error("no target commit found") end assert(target.commit, self.plugin.name .. " " .. target.branch) - if not Git.eq(info, target) 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 table.insert(args, info.commit .. ".." .. target.commit) diff --git a/lua/lazy/types.lua b/lua/lazy/types.lua index 222acbe..5085b14 100644 --- a/lua/lazy/types.lua +++ b/lua/lazy/types.lua @@ -14,6 +14,7 @@ ---@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 diff --git a/lua/lazy/view/sections.lua b/lua/lazy/view/sections.lua index 0c1f578..5dfb57e 100644 --- a/lua/lazy/view/sections.lua +++ b/lua/lazy/view/sections.lua @@ -50,14 +50,12 @@ return { title = "Breaking Changes", }, { - ---@param plugin LazyPlugin filter = function(plugin) return plugin._.updated and plugin._.updated.from ~= plugin._.updated.to end, title = "Updated", }, { - ---@param plugin LazyPlugin filter = function(plugin) return plugin._.cloned end, @@ -66,7 +64,7 @@ return { { ---@param plugin LazyPlugin filter = function(plugin) - return plugin._.updates + return plugin._.updates ~= nil end, title = "Updates", }, @@ -90,9 +88,15 @@ return { end, title = "Not Installed", }, + { + filter = function (plugin) + return plugin._.outdated + end, + title = "Outdated", + }, { filter = function(plugin) - return plugin._.loaded + return plugin._.loaded ~= nil end, title = "Loaded", }, From e42fccc3cda70266e0841c5126de2c23e8982800 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 23 Oct 2023 05:53:33 +0000 Subject: [PATCH 085/527] chore(build): auto-generate vimdoc --- 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 3c1e435..0462e83 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: 2023 October 22 +*lazy.nvim.txt* For Neovim >= 0.8.0 Last change: 2023 October 23 ============================================================================== Table of Contents *lazy.nvim-table-of-contents* @@ -512,6 +512,7 @@ CONFIGURATION *lazy.nvim-lazy.nvim-configuration* 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 From 312e424a084a43b8b786f786b884be60043c23dc Mon Sep 17 00:00:00 2001 From: Serhii Karvatskyi Date: Wed, 25 Oct 2023 21:00:50 +0300 Subject: [PATCH 086/527] fix(loader): when reloading, clear plugin properties cache (#1153) See #445 --- 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 7cbd6f8..0dc9e9f 100644 --- a/lua/lazy/core/loader.lua +++ b/lua/lazy/core/loader.lua @@ -216,6 +216,9 @@ function M.deactivate(plugin) -- disable handlers Handler.disable(plugin) + -- clear plugin properties cache + plugin._.cache = nil + -- remove loaded lua modules Util.walkmods(plugin.dir .. "/lua", function(modname) package.loaded[modname] = nil From f82bac799cd9107b3538d30d3cd3b62a53c94025 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 25 Oct 2023 18:01:37 +0000 Subject: [PATCH 087/527] 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 0462e83..a356eb1 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: 2023 October 23 +*lazy.nvim.txt* For Neovim >= 0.8.0 Last change: 2023 October 25 ============================================================================== Table of Contents *lazy.nvim-table-of-contents* From 16603c6917435d8446f7357cb61095138a417085 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 25 Oct 2023 20:13:09 +0200 Subject: [PATCH 088/527] chore(main): release 10.15.0 (#1147) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- CHANGELOG.md | 12 ++++++++++++ lua/lazy/core/config.lua | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a09c1a2..5692ca4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,17 @@ # Changelog +## [10.15.0](https://github.com/folke/lazy.nvim/compare/v10.14.6...v10.15.0) (2023-10-25) + + +### Features + +* **ui:** check pinned packages that can't be updated ([#1139](https://github.com/folke/lazy.nvim/issues/1139)) ([4446fdb](https://github.com/folke/lazy.nvim/commit/4446fdb9af1b1c41560f6cc41452eee826a8bce0)) + + +### Bug Fixes + +* **loader:** when reloading, clear plugin properties cache ([#1153](https://github.com/folke/lazy.nvim/issues/1153)) ([312e424](https://github.com/folke/lazy.nvim/commit/312e424a084a43b8b786f786b884be60043c23dc)), closes [#445](https://github.com/folke/lazy.nvim/issues/445) + ## [10.14.6](https://github.com/folke/lazy.nvim/compare/v10.14.5...v10.14.6) (2023-10-17) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 3f1f269..2b18a24 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -177,7 +177,7 @@ M.defaults = { debug = false, } -M.version = "10.14.6" -- x-release-please-version +M.version = "10.15.0" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 314193af1d63181bff65e8b24db416e34c5fae86 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 4 Nov 2023 10:14:03 +0100 Subject: [PATCH 089/527] fix(build): allow build=false to skip building --- lua/lazy/manage/task/plugin.lua | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lua/lazy/manage/task/plugin.lua b/lua/lazy/manage/task/plugin.lua index ea623ee..e058c50 100644 --- a/lua/lazy/manage/task/plugin.lua +++ b/lua/lazy/manage/task/plugin.lua @@ -30,6 +30,11 @@ M.build = { local builders = self.plugin.build + -- Skip if `build` is set to `false` + if builders == false then + return + end + local build_file = get_build_file(self.plugin) if build_file then if builders then From 32dead0376f83b96728f5c799df64d0f0a325254 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 4 Nov 2023 09:14:45 +0000 Subject: [PATCH 090/527] 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 a356eb1..4c69064 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: 2023 October 25 +*lazy.nvim.txt* For Neovim >= 0.8.0 Last change: 2023 November 04 ============================================================================== Table of Contents *lazy.nvim-table-of-contents* From 3674036a59a6a4a65559343d606a92145a782533 Mon Sep 17 00:00:00 2001 From: Riley Bruins Date: Sat, 4 Nov 2023 03:05:02 -0700 Subject: [PATCH 091/527] fix(ui): properly highlight breaking change commit scope (#1160) --- 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 c79be62..7487056 100644 --- a/lua/lazy/view/render.lua +++ b/lua/lazy/view/render.lua @@ -475,7 +475,7 @@ function M:log(task) self:append(vim.trim(msg), dimmed and "LazyDimmed" or nil):highlight({ ["#%d+"] = "LazyCommitIssue", ["^%S+:"] = dimmed and "Bold" or "LazyCommitType", - ["^%S+(%(.*%)):"] = "LazyCommitScope", + ["^%S+(%(.*%))!?:"] = "LazyCommitScope", ["`.-`"] = "@text.literal.markdown_inline", ["%*.-%*"] = "Italic", ["%*%*.-%*%*"] = "Bold", From 96584866b9c5e998cbae300594d0ccfd0c464627 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 4 Nov 2023 11:12:07 +0100 Subject: [PATCH 092/527] chore(main): release 10.15.1 (#1166) 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 5692ca4..f953d5c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## [10.15.1](https://github.com/folke/lazy.nvim/compare/v10.15.0...v10.15.1) (2023-11-04) + + +### Bug Fixes + +* **build:** allow build=false to skip building ([314193a](https://github.com/folke/lazy.nvim/commit/314193af1d63181bff65e8b24db416e34c5fae86)) +* **ui:** properly highlight breaking change commit scope ([#1160](https://github.com/folke/lazy.nvim/issues/1160)) ([3674036](https://github.com/folke/lazy.nvim/commit/3674036a59a6a4a65559343d606a92145a782533)) + ## [10.15.0](https://github.com/folke/lazy.nvim/compare/v10.14.6...v10.15.0) (2023-10-25) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 2b18a24..1fbf3ef 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -177,7 +177,7 @@ M.defaults = { debug = false, } -M.version = "10.15.0" -- x-release-please-version +M.version = "10.15.1" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 47d4baafcc370f16c195fd718f37f8fb1e0aa9a1 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Fri, 19 Jan 2024 16:09:28 +0100 Subject: [PATCH 093/527] fix(fs): error when plugin directory to delete is not a valid directory --- lua/lazy/manage/task/fs.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/lazy/manage/task/fs.lua b/lua/lazy/manage/task/fs.lua index 525997e..c753143 100644 --- a/lua/lazy/manage/task/fs.lua +++ b/lua/lazy/manage/task/fs.lua @@ -13,7 +13,7 @@ M.clean = { assert(dir:find(Config.options.root, 1, true) == 1, self.plugin.dir .. " should be under packpath!") local stat = vim.loop.fs_lstat(dir) - assert(stat.type == "directory", self.plugin.dir .. " should be a directory!") + assert(stat and stat.type == "directory", self.plugin.dir .. " should be a directory!") Util.walk(dir, function(path, _, type) if type == "directory" then From 747bb955c5bfb2dc5d51280132f00a56a53f9f6d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 19 Jan 2024 15:10:07 +0000 Subject: [PATCH 094/527] 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 4c69064..9b9bc16 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: 2023 November 04 +*lazy.nvim.txt* For Neovim >= 0.8.0 Last change: 2024 January 19 ============================================================================== Table of Contents *lazy.nvim-table-of-contents* From 5757b551fc6066d836b9e45f70b41561ca619272 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 20 Jan 2024 14:11:32 +0100 Subject: [PATCH 095/527] fix(keys): allow global/local ft keymaps to exist at the same time. Fixes #1241 --- lua/lazy/core/handler/keys.lua | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lua/lazy/core/handler/keys.lua b/lua/lazy/core/handler/keys.lua index e19d6e5..6ca2c50 100644 --- a/lua/lazy/core/handler/keys.lua +++ b/lua/lazy/core/handler/keys.lua @@ -41,6 +41,11 @@ function M.parse(value, mode) ret.mode = mode or "n" ret.id = vim.api.nvim_replace_termcodes(ret.lhs, true, true, true) + if ret.ft then + local ft = type(ret.ft) == "string" and { ret.ft } or ret.ft --[[@as string[] ]] + ret.id = ret.id .. " (" .. table.concat(ft, ", ") .. ")" + end + if ret.mode ~= "n" then ret.id = ret.id .. " (" .. ret.mode .. ")" end From 42694c4fda37b786670ed2edb7521833954b09ba Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 20 Jan 2024 13:12:10 +0000 Subject: [PATCH 096/527] 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 9b9bc16..1b1b744 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 January 19 +*lazy.nvim.txt* For Neovim >= 0.8.0 Last change: 2024 January 20 ============================================================================== Table of Contents *lazy.nvim-table-of-contents* From a6f782adc1ace840a7e671c731daab7851cba6af Mon Sep 17 00:00:00 2001 From: atusy <30277794+atusy@users.noreply.github.com> Date: Sat, 20 Jan 2024 22:19:09 +0900 Subject: [PATCH 097/527] feat(plugin): dev.path can now be a function (#1157) In some case, `dev.path .. plugin.name` is not enoguh. For example, when using `ghq` to manage projects, plugin directories may vary by onewrs of the plugins. With this change, users can do something like below ``` lua require("lazy").setup("plugins", { dev = { path = function(p) -- ghq local path, cnt = string.gsub(p.url, "^https://(.*)%.git$", "~/ghq/%1") if cnt == 1 then return path end -- fallback to default return "~/projects/" .. plugin.name end, }, }) ``` --- README.md | 2 +- lua/lazy/core/config.lua | 6 ++++-- lua/lazy/core/plugin.lua | 15 ++++++++++----- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index ebcca6a..18ade37 100644 --- a/README.md +++ b/README.md @@ -320,7 +320,7 @@ return { filter = true, }, dev = { - -- directory where you store your local plugin projects + ---@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"} diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 1fbf3ef..90c4206 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -30,7 +30,7 @@ M.defaults = { filter = true, }, dev = { - -- directory where you store your local plugin projects + ---@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"} @@ -213,7 +213,9 @@ function M.setup(opts) table.insert(M.options.install.colorscheme, "habamax") M.options.root = Util.norm(M.options.root) - M.options.dev.path = Util.norm(M.options.dev.path) + if type(M.options.dev.path) == "string" then + M.options.dev.path = Util.norm(M.options.dev.path) + end M.options.lockfile = Util.norm(M.options.lockfile) M.options.readme.root = Util.norm(M.options.readme.root) diff --git a/lua/lazy/core/plugin.lua b/lua/lazy/core/plugin.lua index fc25f8d..64c93cd 100644 --- a/lua/lazy/core/plugin.lua +++ b/lua/lazy/core/plugin.lua @@ -106,11 +106,16 @@ function Spec:add(plugin, results) end -- dev plugins - if - plugin.dev - and (not Config.options.dev.fallback or vim.fn.isdirectory(Config.options.dev.path .. "/" .. plugin.name) == 1) - then - dir = Config.options.dev.path .. "/" .. plugin.name + 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 -- explicitely select the default path dir = Config.options.root .. "/" .. plugin.name From 3e0c0a05bdbec315d58c2f181f8dcec04ef6b24d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 20 Jan 2024 13:19:39 +0000 Subject: [PATCH 098/527] 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 1b1b744..e65b6c8 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -423,7 +423,7 @@ CONFIGURATION *lazy.nvim-lazy.nvim-configuration* filter = true, }, dev = { - -- directory where you store your local plugin projects + ---@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"} From 1b3df6c00797e1b12f7c16148261e9dd841a33dd Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 20 Jan 2024 14:49:47 +0100 Subject: [PATCH 099/527] fix(health): dont warn on submodules. Fixes #1174 --- lua/lazy/health.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/lua/lazy/health.lua b/lua/lazy/health.lua index 929092d..89feabe 100644 --- a/lua/lazy/health.lua +++ b/lua/lazy/health.lua @@ -131,6 +131,7 @@ M.valid = { "opts", "pin", "priority", + "submodules", "tag", "url", "version", From d0d410bc222a475202d9c2b55d1c5fbd12c26ffe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Kr=C3=B3l?= Date: Sat, 20 Jan 2024 15:05:26 +0100 Subject: [PATCH 100/527] fix(git): comment sign detection in get_config function (#1281) - Modify the condition in the get_config function to correctly ignore comments and blank lines. - Update the regular expression to exclude lines starting with '#' or ';'. - This change ensures that only valid key-value pairs are added to the configuration table. --- lua/lazy/manage/git.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/lazy/manage/git.lua b/lua/lazy/manage/git.lua index 98c44b5..6b0ab58 100644 --- a/lua/lazy/manage/git.lua +++ b/lua/lazy/manage/git.lua @@ -217,7 +217,7 @@ function M.get_config(repo) current_section = section:gsub('%s+"', "."):gsub('"+%s*$', "") else -- Ignore comments and blank lines - if not line:match("^%s*#") and line:match("%S") then + if not line:match("^%s*[#;]") and line:match("%S") then local key, value = line:match("^%s*(%S+)%s*=%s*(.+)%s*$") ret[current_section .. "." .. key] = value end From 89e6840d8b921a545724153c2a667624ea7d495b Mon Sep 17 00:00:00 2001 From: Johnny Horvi Date: Sat, 20 Jan 2024 15:08:08 +0100 Subject: [PATCH 101/527] docs: fix typo (#1230) --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 18ade37..148f0bd 100644 --- a/README.md +++ b/README.md @@ -654,7 +654,7 @@ In practice this means that step 10 of [Neovim Initialization](https://neovim.io 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 you rtp are sourced (excluding `/after`) +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. @@ -824,7 +824,7 @@ To uninstall **lazy.nvim**, you need to remove the following files and directori 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, so they no longer need to specify a `build` command. +This makes it easier for users, as they no longer need to specify a `build` command. ## 📦 Other Neovim Plugin Managers in Lua From 0b507680ee5bbc998fdc54a40119de964dbc96cc Mon Sep 17 00:00:00 2001 From: Tomasz Wysocki <121371814+tomaszwysocki@users.noreply.github.com> Date: Sat, 20 Jan 2024 15:08:38 +0100 Subject: [PATCH 102/527] docs: fix typo in README.md (#1226) Corrected a typo in Migration Guide section of the README file. Co-authored-by: Tomasz Wysocki --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 148f0bd..c404f63 100644 --- a/README.md +++ b/README.md @@ -738,8 +738,8 @@ Any other property will override the property from the parent spec. - `lock` ➡️ `pin` - `disable=true` ➡️ `enabled = false` - `tag='*'` ➡️ `version="*"` -- `after` ℹ️ **_not needed_** for most use-cases. Use `dependencies` otherwise. -- `wants` ℹ️ **_not needed_** for most use-cases. Use `dependencies` otherwise. +- `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) From 17d9c93943c692e084dbf203e47e7fa122386d0f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 20 Jan 2024 14:09:14 +0000 Subject: [PATCH 103/527] chore(build): auto-generate vimdoc --- doc/lazy.nvim.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index e65b6c8..2fec161 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -768,7 +768,7 @@ 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 you rtp are sourced (excluding `/after`) +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. @@ -859,8 +859,8 @@ PACKER.NVIM ~ - `lock` `pin` - `disable=true` `enabled = false` - `tag='*'` `version="*"` -- `after` **not needed** for most use-cases. Use `dependencies` otherwise. -- `wants` **not needed** for most use-cases. Use `dependencies` otherwise. +- `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| @@ -979,7 +979,7 @@ 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, so they no longer need to specify a `build` +This makes it easier for users, as they no longer need to specify a `build` command. From 7ded44ce2a442aa32b90488b8f1f9c8ca6899f3b Mon Sep 17 00:00:00 2001 From: star-szr <327943+star-szr@users.noreply.github.com> Date: Sun, 21 Jan 2024 04:50:23 -0500 Subject: [PATCH 104/527] feat(ui): add style to dimmed commits (#1210) --- lua/lazy/view/config.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/lazy/view/config.lua b/lua/lazy/view/config.lua index cf7df1c..ea8a066 100644 --- a/lua/lazy/view/config.lua +++ b/lua/lazy/view/config.lua @@ -24,7 +24,7 @@ function M.get_commands() return ret end -M.dimmed_commits = { "build", "ci", "chore", "doc", "test" } +M.dimmed_commits = { "build", "ci", "chore", "doc", "style", "test" } M.keys = { hover = "K", From ababf0dab5375befb4525ede3b16e8d2c6b65ad2 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 21 Jan 2024 09:50:53 +0000 Subject: [PATCH 105/527] 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 2fec161..6e16e3e 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 January 20 +*lazy.nvim.txt* For Neovim >= 0.8.0 Last change: 2024 January 21 ============================================================================== Table of Contents *lazy.nvim-table-of-contents* From a9b9a4b3a2dcc1e81828cfd74bfb61193b014b67 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sun, 21 Jan 2024 11:10:24 +0100 Subject: [PATCH 106/527] fix(keys): make sure we don't delete the global mapping when executing an ft keymap. See #1241 --- lua/lazy/core/handler/keys.lua | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lua/lazy/core/handler/keys.lua b/lua/lazy/core/handler/keys.lua index 6ca2c50..815fcbb 100644 --- a/lua/lazy/core/handler/keys.lua +++ b/lua/lazy/core/handler/keys.lua @@ -163,7 +163,11 @@ end -- mapping when needed ---@param keys LazyKeys function M:_del(keys) - pcall(vim.keymap.del, keys.mode, keys.lhs) + pcall(vim.keymap.del, keys.mode, keys.lhs, { + -- NOTE: for buffer-local mappings, we only delete the mapping for the current buffer + -- So the mapping could still exist in other buffers + buffer = keys.ft and true or nil, + }) -- make sure to create global mappings when needed -- buffer-local mappings are managed by lazy if not keys.ft then From d09084c4b1f5c58724152a4acad7c880117a95ea Mon Sep 17 00:00:00 2001 From: Emilia Simmons Date: Sun, 21 Jan 2024 05:40:46 -0500 Subject: [PATCH 107/527] fix(keys): fix abbreviation expansion on lazy load (#1219) --- lua/lazy/core/handler/keys.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lua/lazy/core/handler/keys.lua b/lua/lazy/core/handler/keys.lua index 815fcbb..e2020d1 100644 --- a/lua/lazy/core/handler/keys.lua +++ b/lua/lazy/core/handler/keys.lua @@ -128,6 +128,9 @@ function M:_add(keys) self:_set(keys, buf) end + if keys.mode:sub(-1) == 'a' then + lhs = lhs .. '' + end local feed = vim.api.nvim_replace_termcodes("" .. lhs, true, true, true) -- insert instead of append the lhs vim.api.nvim_feedkeys(feed, "i", false) From 28126922c9b54e35a192ac415788f202c3944c9f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 21 Jan 2024 11:43:48 +0100 Subject: [PATCH 108/527] chore(main): release 10.16.0 (#1284) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- CHANGELOG.md | 18 ++++++++++++++++++ lua/lazy/core/config.lua | 2 +- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f953d5c..8232b8a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,23 @@ # Changelog +## [10.16.0](https://github.com/folke/lazy.nvim/compare/v10.15.1...v10.16.0) (2024-01-21) + + +### Features + +* **plugin:** dev.path can now be a function ([#1157](https://github.com/folke/lazy.nvim/issues/1157)) ([a6f782a](https://github.com/folke/lazy.nvim/commit/a6f782adc1ace840a7e671c731daab7851cba6af)) +* **ui:** add style to dimmed commits ([#1210](https://github.com/folke/lazy.nvim/issues/1210)) ([7ded44c](https://github.com/folke/lazy.nvim/commit/7ded44ce2a442aa32b90488b8f1f9c8ca6899f3b)) + + +### Bug Fixes + +* **fs:** error when plugin directory to delete is not a valid directory ([47d4baa](https://github.com/folke/lazy.nvim/commit/47d4baafcc370f16c195fd718f37f8fb1e0aa9a1)) +* **git:** comment sign detection in get_config function ([#1281](https://github.com/folke/lazy.nvim/issues/1281)) ([d0d410b](https://github.com/folke/lazy.nvim/commit/d0d410bc222a475202d9c2b55d1c5fbd12c26ffe)) +* **health:** dont warn on submodules. Fixes [#1174](https://github.com/folke/lazy.nvim/issues/1174) ([1b3df6c](https://github.com/folke/lazy.nvim/commit/1b3df6c00797e1b12f7c16148261e9dd841a33dd)) +* **keys:** allow global/local ft keymaps to exist at the same time. Fixes [#1241](https://github.com/folke/lazy.nvim/issues/1241) ([5757b55](https://github.com/folke/lazy.nvim/commit/5757b551fc6066d836b9e45f70b41561ca619272)) +* **keys:** fix abbreviation expansion on lazy load ([#1219](https://github.com/folke/lazy.nvim/issues/1219)) ([d09084c](https://github.com/folke/lazy.nvim/commit/d09084c4b1f5c58724152a4acad7c880117a95ea)) +* **keys:** make sure we don't delete the global mapping when executing an ft keymap. See [#1241](https://github.com/folke/lazy.nvim/issues/1241) ([a9b9a4b](https://github.com/folke/lazy.nvim/commit/a9b9a4b3a2dcc1e81828cfd74bfb61193b014b67)) + ## [10.15.1](https://github.com/folke/lazy.nvim/compare/v10.15.0...v10.15.1) (2023-11-04) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 90c4206..e5f5f1a 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -177,7 +177,7 @@ M.defaults = { debug = false, } -M.version = "10.15.1" -- x-release-please-version +M.version = "10.16.0" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 670a6fec7f9b03134849e308d87f4dc316875c46 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Tue, 23 Jan 2024 21:51:00 +0100 Subject: [PATCH 109/527] fix(manage): better support for using the default colorscheme during install. See #1277 --- 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 0dc9e9f..2d011dc 100644 --- a/lua/lazy/core/loader.lua +++ b/lua/lazy/core/loader.lua @@ -67,6 +67,9 @@ function M.install_missing() for _, plugin in pairs(Config.plugins) do if not (plugin._.installed or Plugin.has_errors(plugin)) then for _, colorscheme in ipairs(Config.options.install.colorscheme) do + if colorscheme == "default" then + break + end M.colorscheme(colorscheme) if vim.g.colors_name or pcall(vim.cmd.colorscheme, colorscheme) then break From aedcd79811d491b60d0a6577a9c1701063c2a609 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 23 Jan 2024 20:51:51 +0000 Subject: [PATCH 110/527] 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 6e16e3e..5138375 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 January 21 +*lazy.nvim.txt* For Neovim >= 0.8.0 Last change: 2024 January 23 ============================================================================== Table of Contents *lazy.nvim-table-of-contents* From 5aea4e7021287d7bcda6f31d7ad234580940be32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=8D=E7=94=9F=E8=8A=B1?= Date: Fri, 8 Mar 2024 01:27:50 +0900 Subject: [PATCH 111/527] fix(types): fix incorrect LuaLS types (#1339) --- 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 5085b14..5d1980a 100644 --- a/lua/lazy/types.lua +++ b/lua/lazy/types.lua @@ -69,7 +69,7 @@ ---@field event? string[]|string|LazyEventSpec[]|fun(self:LazyPlugin, event:string[]):string[] ---@field cmd? string[]|string|fun(self:LazyPlugin, cmd:string[]):string[] ---@field ft? string[]|string|fun(self:LazyPlugin, ft:string[]):string[] ----@field keys? string|string[]|LazyKeysSpec[]|fun(self:LazyPlugin, keys:string[]):(string|LazyKeys)[] +---@field keys? string|string[]|LazyKeysSpec[]|fun(self:LazyPlugin, keys:string[]):((string|LazyKeys)[]) ---@field module? false ---@class LazyPluginSpec: LazyPluginBase,LazyPluginSpecHandlers,LazyPluginHooks,LazyPluginRef From 5be95fe3b4f024337b54e38cb2562f29b4504d45 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 7 Mar 2024 16:28:22 +0000 Subject: [PATCH 112/527] 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 5138375..2f30f42 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 January 23 +*lazy.nvim.txt* For Neovim >= 0.8.0 Last change: 2024 March 07 ============================================================================== Table of Contents *lazy.nvim-table-of-contents* From c96fc24555e838a5d9ae6207c0e74919a8c603da Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Thu, 7 Mar 2024 17:30:37 +0100 Subject: [PATCH 113/527] style: format --- lua/lazy/core/handler/keys.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lua/lazy/core/handler/keys.lua b/lua/lazy/core/handler/keys.lua index e2020d1..382d732 100644 --- a/lua/lazy/core/handler/keys.lua +++ b/lua/lazy/core/handler/keys.lua @@ -128,8 +128,8 @@ function M:_add(keys) self:_set(keys, buf) end - if keys.mode:sub(-1) == 'a' then - lhs = lhs .. '' + if keys.mode:sub(-1) == "a" then + lhs = lhs .. "" end local feed = vim.api.nvim_replace_termcodes("" .. lhs, true, true, true) -- insert instead of append the lhs From 0694651fd37c3645e1683b4f392d4e38e7d2991b Mon Sep 17 00:00:00 2001 From: TheSast <27977196+TheSast@users.noreply.github.com> Date: Thu, 7 Mar 2024 16:32:07 +0000 Subject: [PATCH 114/527] feat(loader): warn when maplocalleader is changed after init (#1326) * feat(loader): warn when maplocalleader is changed after init * docs: default maplocalleader --------- Co-authored-by: Folke Lemaitre --- README.md | 3 ++- lua/lazy/core/config.lua | 4 ++++ lua/lazy/core/loader.lua | 1 + lua/lazy/manage/reloader.lua | 7 +++++++ 4 files changed, 14 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index c404f63..7231917 100644 --- a/README.md +++ b/README.md @@ -67,6 +67,7 @@ require("lazy").setup(plugins, opts) ```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", @@ -537,7 +538,7 @@ Any command can have a **bang** to make the command wait till it finished. For e if you want to sync lazy from the cmdline, you can use: ```shell -$ nvim --headless "+Lazy! sync" +qa +nvim --headless "+Lazy! sync" +qa ``` `opts` is a table with the following key-values: diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index e5f5f1a..6b64c9d 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -199,6 +199,9 @@ M.me = nil ---@type string M.mapleader = nil +---@type string +M.maplocalleader = nil + function M.headless() return #vim.api.nvim_list_uis() == 0 end @@ -245,6 +248,7 @@ function M.setup(opts) -- disable plugin loading since we do all of that ourselves vim.go.loadplugins = false M.mapleader = vim.g.mapleader + M.maplocalleader = vim.g.maplocalleader if M.headless() then require("lazy.view.commands").setup() diff --git a/lua/lazy/core/loader.lua b/lua/lazy/core/loader.lua index 2d011dc..ac5f471 100644 --- a/lua/lazy/core/loader.lua +++ b/lua/lazy/core/loader.lua @@ -50,6 +50,7 @@ function M.setup() Util.track() end Config.mapleader = vim.g.mapleader + Config.maplocalleader = vim.g.maplocalleader -- report any warnings & errors Config.spec:report() diff --git a/lua/lazy/manage/reloader.lua b/lua/lazy/manage/reloader.lua index c48cc9f..e94f038 100644 --- a/lua/lazy/manage/reloader.lua +++ b/lua/lazy/manage/reloader.lua @@ -76,6 +76,13 @@ function M.check(start) Config.mapleader = vim.g.mapleader end + if Loader.init_done and Config.maplocalleader ~= vim.g.maplocalleader then + vim.schedule(function() + require("lazy.core.util").warn("You need to set `vim.g.maplocalleader` **BEFORE** loading lazy") + end) + Config.maplocalleader = vim.g.maplocalleader + end + if not (start or #changes == 0) then vim.schedule(function() if Config.options.change_detection.notify and not Config.headless() then From e1e8d2f0f6e1cc1df3430458453a817cbd287bed Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 7 Mar 2024 16:32:44 +0000 Subject: [PATCH 115/527] chore(build): auto-generate vimdoc --- 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 2f30f42..3e61949 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -90,6 +90,7 @@ Nextstep is to add **lazy.nvim** below the code added in the prior step in >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", @@ -653,7 +654,7 @@ 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 + nvim --headless "+Lazy! sync" +qa < `opts` is a table with the following key-values: From d5c58bb1937f8aee390f206e724ef23b0cc95eb3 Mon Sep 17 00:00:00 2001 From: Wayne Wu <11427457+wyw@users.noreply.github.com> Date: Fri, 8 Mar 2024 00:32:52 +0800 Subject: [PATCH 116/527] fix(ui): remove a single space character from home title (#1309) Align home pill title spacing with other pills --- 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 7487056..1d97dd3 100644 --- a/lua/lazy/view/render.lua +++ b/lua/lazy/view/render.lua @@ -124,7 +124,7 @@ function M:title() local title = " " .. mode.name:sub(1, 1):upper() .. mode.name:sub(2) .. " (" .. mode.key .. ") " if mode.name == "home" then if self.view.state.mode == "home" then - title = " lazy.nvim " .. Config.options.ui.icons.lazy + title = " lazy.nvim " .. Config.options.ui.icons.lazy else title = " lazy.nvim (H) " end From 298bed190e40b67bb1c20c4d5845c2c0c7da450f Mon Sep 17 00:00:00 2001 From: Riley Bruins Date: Thu, 7 Mar 2024 08:34:29 -0800 Subject: [PATCH 117/527] fix: update to new treesitter capture groups (#1294) --- README.md | 8 ++++---- doc/lazy.nvim.txt | 8 ++++---- lua/lazy/view/colors.lua | 8 ++++---- lua/lazy/view/render.lua | 4 ++-- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 7231917..10fabe9 100644 --- a/README.md +++ b/README.md @@ -791,7 +791,7 @@ To uninstall **lazy.nvim**, you need to remove the following files and directori | **LazyCommitScope** | **_Italic_** | conventional commit scope | | **LazyCommitType** | **_Title_** | conventional commit type | | **LazyDimmed** | **_Conceal_** | property | -| **LazyDir** | **_@text.reference_** | directory | +| **LazyDir** | **_@markup.link_** | directory | | **LazyH1** | **_IncSearch_** | home button | | **LazyH2** | **_Bold_** | titles | | **LazyLocal** | **_Constant_** | | @@ -806,14 +806,14 @@ To uninstall **lazy.nvim**, you need to remove the following files and directori | **LazyReasonImport** | **_Identifier_** | | | **LazyReasonKeys** | **_Statement_** | | | **LazyReasonPlugin** | **_Special_** | | -| **LazyReasonRequire** | **_@parameter_** | | +| **LazyReasonRequire** | **_@variable.parameter_** | | | **LazyReasonRuntime** | **_@macro_** | | | **LazyReasonSource** | **_Character_** | | -| **LazyReasonStart** | **_@field_** | | +| **LazyReasonStart** | **_@variable.member_** | | | **LazySpecial** | **_@punctuation.special_** | | | **LazyTaskError** | **_ErrorMsg_** | task errors | | **LazyTaskOutput** | **_MsgArea_** | task output | -| **LazyUrl** | **_@text.reference_** | url | +| **LazyUrl** | **_@markup.link_** | url | | **LazyValue** | **_@string_** | value of a property | diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index 3e61949..617bdc1 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -924,7 +924,7 @@ Click to see all highlight groups ~ LazyDimmed Conceal property - LazyDir _@text.reference_ directory + LazyDir _@markup.link_ directory LazyH1 IncSearch homebutton @@ -955,13 +955,13 @@ Click to see all highlight groups ~ LazyReasonPlugin Special - LazyReasonRequire _@parameter_ + LazyReasonRequire _@variable.parameter_ LazyReasonRuntime _@macro_ LazyReasonSource Character - LazyReasonStart _@field_ + LazyReasonStart _@variable.member_ LazySpecial _@punctuation.special_ @@ -969,7 +969,7 @@ Click to see all highlight groups ~ LazyTaskOutput MsgArea task output - LazyUrl _@text.reference_ url + LazyUrl _@markup.link_ url LazyValue _@string_ valueof a property --------------------------------------------------------------------------------- diff --git a/lua/lazy/view/colors.lua b/lua/lazy/view/colors.lua index cc00a3a..83269f9 100644 --- a/lua/lazy/view/colors.lua +++ b/lua/lazy/view/colors.lua @@ -21,18 +21,18 @@ M.colors = { ReasonPlugin = "Special", ReasonEvent = "Constant", ReasonKeys = "Statement", - ReasonStart = "@field", + ReasonStart = "@variable.member", ReasonSource = "Character", ReasonFt = "Character", ReasonCmd = "Operator", ReasonImport = "Identifier", - ReasonRequire = "@parameter", + ReasonRequire = "@variable.parameter", Button = "CursorLine", ButtonActive = "Visual", TaskOutput = "MsgArea", -- task output TaskError = "ErrorMsg", -- task errors - Dir = "@text.reference", -- directory - Url = "@text.reference", -- url + Dir = "@markup.link", -- directory + Url = "@markup.link", -- url } M.did_setup = false diff --git a/lua/lazy/view/render.lua b/lua/lazy/view/render.lua index 1d97dd3..5d7e197 100644 --- a/lua/lazy/view/render.lua +++ b/lua/lazy/view/render.lua @@ -476,7 +476,7 @@ function M:log(task) ["#%d+"] = "LazyCommitIssue", ["^%S+:"] = dimmed and "Bold" or "LazyCommitType", ["^%S+(%(.*%))!?:"] = "LazyCommitScope", - ["`.-`"] = "@text.literal.markdown_inline", + ["`.-`"] = "@markup.raw.markdown_inline", ["%*.-%*"] = "Italic", ["%*%*.-%*%*"] = "Bold", }) @@ -582,7 +582,7 @@ function M:profile() self:append("Based on the actual CPU time of the Neovim process till "):append("UIEnter", "LazySpecial") self:append("."):nl() self:append("This is more accurate than ") - self:append("`nvim --startuptime`", "@text.literal.markdown_inline") + self:append("`nvim --startuptime`", "@markup.raw.markdown_inline") self:append(".") else self:append("An accurate startuptime based on the actual CPU time of the Neovim process is not available."):nl() From a5ac16955e09f285074287b53e833ab675d15eef Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 7 Mar 2024 16:35:04 +0000 Subject: [PATCH 118/527] chore(build): auto-generate vimdoc --- 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 617bdc1..844aa6d 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -955,13 +955,13 @@ Click to see all highlight groups ~ LazyReasonPlugin Special - LazyReasonRequire _@variable.parameter_ + LazyReasonRequire _@variable.parameter_ LazyReasonRuntime _@macro_ LazyReasonSource Character - LazyReasonStart _@variable.member_ + LazyReasonStart _@variable.member_ LazySpecial _@punctuation.special_ From 83493db50a434a4c5c648faf41e2ead80f96e478 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 7 Mar 2024 17:41:58 +0100 Subject: [PATCH 119/527] chore(main): release 10.17.0 (#1292) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- CHANGELOG.md | 15 +++++++++++++++ lua/lazy/core/config.lua | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8232b8a..e766de1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,20 @@ # Changelog +## [10.17.0](https://github.com/folke/lazy.nvim/compare/v10.16.0...v10.17.0) (2024-03-07) + + +### Features + +* **loader:** warn when maplocalleader is changed after init ([#1326](https://github.com/folke/lazy.nvim/issues/1326)) ([0694651](https://github.com/folke/lazy.nvim/commit/0694651fd37c3645e1683b4f392d4e38e7d2991b)) + + +### Bug Fixes + +* **manage:** better support for using the default colorscheme during install. See [#1277](https://github.com/folke/lazy.nvim/issues/1277) ([670a6fe](https://github.com/folke/lazy.nvim/commit/670a6fec7f9b03134849e308d87f4dc316875c46)) +* **types:** fix incorrect LuaLS types ([#1339](https://github.com/folke/lazy.nvim/issues/1339)) ([5aea4e7](https://github.com/folke/lazy.nvim/commit/5aea4e7021287d7bcda6f31d7ad234580940be32)) +* **ui:** remove a single space character from home title ([#1309](https://github.com/folke/lazy.nvim/issues/1309)) ([d5c58bb](https://github.com/folke/lazy.nvim/commit/d5c58bb1937f8aee390f206e724ef23b0cc95eb3)) +* update to new treesitter capture groups ([#1294](https://github.com/folke/lazy.nvim/issues/1294)) ([298bed1](https://github.com/folke/lazy.nvim/commit/298bed190e40b67bb1c20c4d5845c2c0c7da450f)) + ## [10.16.0](https://github.com/folke/lazy.nvim/compare/v10.15.1...v10.16.0) (2024-01-21) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 6b64c9d..60934a0 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -177,7 +177,7 @@ M.defaults = { debug = false, } -M.version = "10.16.0" -- x-release-please-version +M.version = "10.17.0" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 9e157df077d24654d0cdefe08158cd4f76e85fe8 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Fri, 22 Mar 2024 08:58:36 +0100 Subject: [PATCH 120/527] feat: refactor all vim.loop -> vim.uv and add a shim when needed --- lua/lazy/core/cache.lua | 12 ++++++------ lua/lazy/core/config.lua | 2 +- lua/lazy/core/loader.lua | 4 ++-- lua/lazy/core/util.lua | 16 ++++++++-------- lua/lazy/health.lua | 4 ++-- lua/lazy/help.lua | 6 +++--- lua/lazy/init.lua | 12 +++++++----- lua/lazy/manage/process.lua | 2 +- lua/lazy/manage/reloader.lua | 4 ++-- lua/lazy/manage/runner.lua | 2 +- lua/lazy/manage/task/fs.lua | 8 ++++---- lua/lazy/manage/task/git.lua | 4 ++-- lua/lazy/manage/task/init.lua | 6 +++--- lua/lazy/stats.lua | 2 +- lua/lazy/util.lua | 4 ++-- tests/core/e2e_spec.lua | 4 ++-- tests/core/util_spec.lua | 4 ++-- tests/helpers.lua | 6 +++--- tests/init.lua | 2 +- 19 files changed, 53 insertions(+), 51 deletions(-) diff --git a/lua/lazy/core/cache.lua b/lua/lazy/core/cache.lua index ea9f4d9..6588c1e 100644 --- a/lua/lazy/core/cache.lua +++ b/lua/lazy/core/cache.lua @@ -1,4 +1,4 @@ -local uv = vim.loop +local uv = vim.uv local M = {} @@ -51,7 +51,7 @@ end ---@private function Loader.normalize(path) if path:sub(1, 1) == "~" then - local home = vim.loop.os_homedir() or "~" + local home = vim.uv.os_homedir() or "~" if home:sub(-1) == "\\" or home:sub(-1) == "/" then home = home:sub(1, -2) end @@ -222,7 +222,7 @@ end --- Loads the given module path using the cache ---@param modpath string ---@param opts? {hash?: CacheHash, mode?: "b"|"t"|"bt", env?:table} (table|nil) Options for loading the module: ---- - hash: (table) the hash of the file to load if it is already known. (defaults to `vim.loop.fs_stat({modpath})`) +--- - hash: (table) the hash of the file to load if it is already known. (defaults to `vim.uv.fs_stat({modpath})`) --- - mode: (string) the mode to load the module with. "b"|"t"|"bt" (defaults to `nil`) --- - env: (table) the environment to load the module in. (defaults to `nil`) ---@see |luaL_loadfile()| @@ -442,9 +442,9 @@ function Loader.lsmod(path) if not Loader._indexed[path] then local start = uv.hrtime() Loader._indexed[path] = {} - local handle = vim.loop.fs_scandir(path .. "/lua") + local handle = vim.uv.fs_scandir(path .. "/lua") while handle do - local name, t = vim.loop.fs_scandir_next(handle) + local name, t = vim.uv.fs_scandir_next(handle) if not name then break end @@ -480,7 +480,7 @@ function M._profile_loaders() for l, loader in pairs(package.loaders) do local loc = debug.getinfo(loader, "Sn").source:sub(2) package.loaders[l] = function(modname) - local start = vim.loop.hrtime() + local start = vim.uv.hrtime() local ret = loader(modname) Loader.track("loader " .. l .. ": " .. loc, start) Loader.track("loader_all", start) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 60934a0..0e6b7ee 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -17,7 +17,7 @@ M.defaults = { -- leave nil when passing the spec as the first argument to setup() spec = nil, ---@type LazySpec lockfile = vim.fn.stdpath("config") .. "/lazy-lock.json", -- lockfile generated after running update. - concurrency = jit.os:find("Windows") and (vim.loop.available_parallelism() * 2) or nil, ---@type number limit the maximum amount of concurrent tasks + concurrency = jit.os:find("Windows") and (vim.uv.available_parallelism() * 2) or nil, ---@type number limit the maximum amount of concurrent tasks git = { -- defaults for the `Lazy log` command -- log = { "--since=3 days ago" }, -- show commits from the last 3 days diff --git a/lua/lazy/core/loader.lua b/lua/lazy/core/loader.lua index ac5f471..9cd5018 100644 --- a/lua/lazy/core/loader.lua +++ b/lua/lazy/core/loader.lua @@ -472,7 +472,7 @@ function M.add_to_rtp(plugin) table.insert(rtp, idx_dir or (#rtp + 1), plugin.dir) local after = plugin.dir .. "/after" - if vim.loop.fs_stat(after) then + if vim.uv.fs_stat(after) then table.insert(rtp, idx_after or (#rtp + 1), after) end @@ -495,7 +495,7 @@ function M.colorscheme(name) if not plugin._.loaded then for _, ext in ipairs({ "lua", "vim" }) do local path = plugin.dir .. "/colors/" .. name .. "." .. ext - if vim.loop.fs_stat(path) then + if vim.uv.fs_stat(path) then return M.load(plugin, { colorscheme = name }) end end diff --git a/lua/lazy/core/util.lua b/lua/lazy/core/util.lua index 77cb8f5..e51e670 100644 --- a/lua/lazy/core/util.lua +++ b/lua/lazy/core/util.lua @@ -12,7 +12,7 @@ function M.track(data, time) if data then local entry = { data = data, - time = time or vim.loop.hrtime(), + time = time or vim.uv.hrtime(), } table.insert(M._profiles[#M._profiles], entry) @@ -23,7 +23,7 @@ function M.track(data, time) else ---@type LazyProfile local entry = table.remove(M._profiles) - entry.time = vim.loop.hrtime() - entry.time + entry.time = vim.uv.hrtime() - entry.time return entry end end @@ -54,7 +54,7 @@ end ---@return string function M.norm(path) if path:sub(1, 1) == "~" then - local home = vim.loop.os_homedir() + local home = vim.uv.os_homedir() if home:sub(-1) == "\\" or home:sub(-1) == "/" then home = home:sub(1, -2) end @@ -175,9 +175,9 @@ end ---@param path string ---@param fn fun(path: string, name:string, type:FileType):boolean? function M.ls(path, fn) - local handle = vim.loop.fs_scandir(path) + local handle = vim.uv.fs_scandir(path) while handle do - local name, t = vim.loop.fs_scandir_next(handle) + local name, t = vim.uv.fs_scandir_next(handle) if not name then break end @@ -187,7 +187,7 @@ function M.ls(path, fn) -- HACK: type is not always returned due to a bug in luv, -- so fecth it with fs_stat instead when needed. -- see https://github.com/folke/lazy.nvim/issues/306 - if fn(fname, name, t or vim.loop.fs_stat(fname).type) == false then + if fn(fname, name, t or vim.uv.fs_stat(fname).type) == false then break end end @@ -263,7 +263,7 @@ function M.lsmod(modname, fn) return end - if vim.loop.fs_stat(root .. ".lua") then + if vim.uv.fs_stat(root .. ".lua") then fn(modname, root .. ".lua") end @@ -272,7 +272,7 @@ function M.lsmod(modname, fn) fn(modname, path) elseif (type == "file" or type == "link") and name:sub(-4) == ".lua" then fn(modname .. "." .. name:sub(1, -5), path) - elseif type == "directory" and vim.loop.fs_stat(path .. "/init.lua") then + elseif type == "directory" and vim.uv.fs_stat(path .. "/init.lua") then fn(modname .. "." .. name, path .. "/init.lua") end end) diff --git a/lua/lazy/health.lua b/lua/lazy/health.lua index 89feabe..bcc546a 100644 --- a/lua/lazy/health.lua +++ b/lua/lazy/health.lua @@ -26,7 +26,7 @@ function M.check() local existing = false for _, site in pairs(sites) do for _, packs in ipairs(vim.fn.expand(site .. "/pack/*", false, true)) do - if not packs:find("[/\\]dist$") and vim.loop.fs_stat(packs) then + if not packs:find("[/\\]dist$") and vim.uv.fs_stat(packs) then existing = true warn("found existing packages at `" .. packs .. "`") end @@ -46,7 +46,7 @@ function M.check() end local packer_compiled = vim.fn.stdpath("config") .. "/plugin/packer_compiled.lua" - if vim.loop.fs_stat(packer_compiled) then + if vim.uv.fs_stat(packer_compiled) then error("please remove the file `" .. packer_compiled .. "`") else ok("packer_compiled.lua not found") diff --git a/lua/lazy/help.lua b/lua/lazy/help.lua index a33e808..aa7666e 100644 --- a/lua/lazy/help.lua +++ b/lua/lazy/help.lua @@ -4,7 +4,7 @@ local Util = require("lazy.util") local M = {} function M.index(plugin) - if Config.options.readme.skip_if_doc_exists and vim.loop.fs_stat(plugin.dir .. "/doc") then + if Config.options.readme.skip_if_doc_exists and vim.uv.fs_stat(plugin.dir .. "/doc") then return {} end @@ -17,7 +17,7 @@ function M.index(plugin) local tags = {} for _, file in ipairs(files) do file = Util.norm(file) - if vim.loop.fs_stat(file) then + if vim.uv.fs_stat(file) then local rel_file = file:sub(#plugin.dir + 1) local tag_filename = plugin.name .. vim.fn.fnamemodify(rel_file, ":h"):gsub("%W+", "-"):gsub("^%-$", "") local lines = vim.split(Util.read_file(file), "\n") @@ -50,7 +50,7 @@ function M.update() Util.ls(docs, function(path, name, type) if type == "file" and name:sub(-2) == "md" then - vim.loop.fs_unlink(path) + vim.uv.fs_unlink(path) end end) ---@type {file:string, tag:string, line:string}[] diff --git a/lua/lazy/init.lua b/lua/lazy/init.lua index 75ccfa2..3bfa8c8 100644 --- a/lua/lazy/init.lua +++ b/lua/lazy/init.lua @@ -2,6 +2,8 @@ local M = {} M._start = 0 +vim.uv = vim.uv or vim.uv + local function profile_require() local done = {} ---@type table local r = require @@ -35,7 +37,7 @@ function M.setup(spec, opts) opts.spec = spec end - M._start = M._start == 0 and vim.loop.hrtime() or M._start + M._start = M._start == 0 and vim.uv.hrtime() or M._start if vim.g.lazy_did_setup then return vim.notify( "Re-sourcing your config is not supported with lazy.nvim", @@ -53,7 +55,7 @@ function M.setup(spec, opts) if not (pcall(require, "ffi") and jit and jit.version) then return vim.notify("lazy.nvim requires Neovim built with LuaJIT", vim.log.levels.ERROR, { title = "lazy.nvim" }) end - local start = vim.loop.hrtime() + local start = vim.uv.hrtime() -- use the Neovim cache if available if vim.loader and vim.fn.has("nvim-0.9.1") == 1 then @@ -89,7 +91,7 @@ function M.setup(spec, opts) end Util.track({ plugin = "lazy.nvim" }) -- setup start - Util.track("module", vim.loop.hrtime() - start) + Util.track("module", vim.uv.hrtime() - start) -- load config Util.track("config") @@ -100,7 +102,7 @@ function M.setup(spec, opts) Loader.setup() -- correct time delta and loaded - local delta = vim.loop.hrtime() - start + local delta = vim.uv.hrtime() - start Util.track().time = delta -- end setup if Config.plugins["lazy.nvim"] then Config.plugins["lazy.nvim"]._.loaded = { time = delta, source = "init.lua" } @@ -120,7 +122,7 @@ end function M.bootstrap() local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" - if not vim.loop.fs_stat(lazypath) then + if not vim.uv.fs_stat(lazypath) then vim.fn.system({ "git", "clone", diff --git a/lua/lazy/manage/process.lua b/lua/lazy/manage/process.lua index 1db3677..5bb2716 100644 --- a/lua/lazy/manage/process.lua +++ b/lua/lazy/manage/process.lua @@ -41,7 +41,7 @@ M.signals = { } ---@diagnostic disable-next-line: no-unknown -local uv = vim.loop +local uv = vim.uv ---@class ProcessOpts ---@field args string[] diff --git a/lua/lazy/manage/reloader.lua b/lua/lazy/manage/reloader.lua index e94f038..ef9305c 100644 --- a/lua/lazy/manage/reloader.lua +++ b/lua/lazy/manage/reloader.lua @@ -16,7 +16,7 @@ function M.enable() M.timer:stop() end if #Config.spec.modules > 0 then - M.timer = assert(vim.loop.new_timer()) + M.timer = assert(vim.uv.new_timer()) M.check(true) M.timer:start(2000, 2000, M.check) end @@ -44,7 +44,7 @@ function M.check(start) -- spec is a module local function check(_, modpath) checked[modpath] = true - local hash = vim.loop.fs_stat(modpath) + local hash = vim.uv.fs_stat(modpath) if hash then if M.files[modpath] then if not M.eq(M.files[modpath], hash) then diff --git a/lua/lazy/manage/runner.lua b/lua/lazy/manage/runner.lua index 0ac0c15..7e3a39d 100644 --- a/lua/lazy/manage/runner.lua +++ b/lua/lazy/manage/runner.lua @@ -92,7 +92,7 @@ function Runner:start() end end - local check = vim.loop.new_check() + local check = vim.uv.new_check() check:start(function() if self:resume() then return diff --git a/lua/lazy/manage/task/fs.lua b/lua/lazy/manage/task/fs.lua index c753143..c99c8bf 100644 --- a/lua/lazy/manage/task/fs.lua +++ b/lua/lazy/manage/task/fs.lua @@ -12,17 +12,17 @@ M.clean = { local dir = self.plugin.dir:gsub("/+$", "") assert(dir:find(Config.options.root, 1, true) == 1, self.plugin.dir .. " should be under packpath!") - local stat = vim.loop.fs_lstat(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.loop.fs_rmdir(path) + vim.uv.fs_rmdir(path) else - vim.loop.fs_unlink(path) + vim.uv.fs_unlink(path) end end) - vim.loop.fs_rmdir(dir) + vim.uv.fs_rmdir(dir) self.plugin._.installed = false end, diff --git a/lua/lazy/manage/task/git.lua b/lua/lazy/manage/task/git.lua index a1bfcf6..c838f30 100644 --- a/lua/lazy/manage/task/git.lua +++ b/lua/lazy/manage/task/git.lua @@ -15,7 +15,7 @@ M.log = { if opts.updated and not (plugin._.updated and plugin._.updated.from ~= plugin._.updated.to) then return true end - local stat = vim.loop.fs_stat(plugin.dir .. "/.git") + local stat = vim.uv.fs_stat(plugin.dir .. "/.git") return not (stat and stat.type == "directory") end, ---@param opts {args?: string[], updated?:boolean, check?:boolean} @@ -106,7 +106,7 @@ M.clone = { self.plugin._.cloned = true self.plugin._.installed = true self.plugin._.dirty = true - vim.loop.fs_unlink(marker) + vim.uv.fs_unlink(marker) end end, }) diff --git a/lua/lazy/manage/task/init.lua b/lua/lazy/manage/task/init.lua index a68c7d7..2397cdf 100644 --- a/lua/lazy/manage/task/init.lua +++ b/lua/lazy/manage/task/init.lua @@ -65,7 +65,7 @@ function Task:start() self:start() end) end - self._started = vim.loop.hrtime() + self._started = vim.uv.hrtime() ---@type boolean, string|any local ok, err = pcall(self._task, self, self._opts) if not ok then @@ -81,7 +81,7 @@ function Task:_check() return end end - self._ended = vim.loop.hrtime() + self._ended = vim.uv.hrtime() if self._opts.on_done then self._opts.on_done(self) end @@ -97,7 +97,7 @@ function Task:time() return 0 end if not self:is_done() then - return (vim.loop.hrtime() - self._started) / 1e6 + return (vim.uv.hrtime() - self._started) / 1e6 end return (self._ended - self._started) / 1e6 end diff --git a/lua/lazy/stats.lua b/lua/lazy/stats.lua index a898ff7..c4f1ec2 100644 --- a/lua/lazy/stats.lua +++ b/lua/lazy/stats.lua @@ -54,7 +54,7 @@ function M.cputime() end local function fallback() - return (vim.loop.hrtime() - require("lazy")._start) / 1e6 + return (vim.uv.hrtime() - require("lazy")._start) / 1e6 end local ok, ret = pcall(real) diff --git a/lua/lazy/util.lua b/lua/lazy/util.lua index d841255..1c73d43 100644 --- a/lua/lazy/util.lua +++ b/lua/lazy/util.lua @@ -2,7 +2,7 @@ local M = setmetatable({}, { __index = require("lazy.core.util") }) function M.file_exists(file) - return vim.loop.fs_stat(file) ~= nil + return vim.uv.fs_stat(file) ~= nil end ---@param opts? LazyFloatOptions @@ -71,7 +71,7 @@ end ---@param fn F ---@return F function M.throttle(ms, fn) - local timer = vim.loop.new_timer() + local timer = vim.uv.new_timer() local running = false local first = true diff --git a/tests/core/e2e_spec.lua b/tests/core/e2e_spec.lua index a7d02fc..37cdca5 100644 --- a/tests/core/e2e_spec.lua +++ b/tests/core/e2e_spec.lua @@ -28,8 +28,8 @@ describe("lazy", function() "folke/paint.nvim", }, { install_missing = true, defaults = { lazy = true } }) assert(3 == vim.tbl_count(Config.plugins)) - assert(vim.loop.fs_stat(root .. "/paint.nvim/README.md")) - assert(vim.loop.fs_stat(root .. "/neodev.nvim/README.md")) + 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) diff --git a/tests/core/util_spec.lua b/tests/core/util_spec.lua index 1d3592c..a497881 100644 --- a/tests/core/util_spec.lua +++ b/tests/core/util_spec.lua @@ -12,7 +12,7 @@ describe("util", function() end end Helpers.fs_rm("") - assert(not vim.loop.fs_stat(Helpers.path("")), "fs root should be deleted") + assert(not vim.uv.fs_stat(Helpers.path("")), "fs root should be deleted") end) it("lsmod lists all mods in dir", function() @@ -85,7 +85,7 @@ describe("util", function() assert.same(Helpers.path("old/lua/foobar"), root) Helpers.fs_rm("old") - assert(not vim.loop.fs_stat(Helpers.path("old/lua/foobar")), "old/lua/foobar should not exist") + assert(not vim.uv.fs_stat(Helpers.path("old/lua/foobar")), "old/lua/foobar should not exist") -- vim.opt.rtp = rtp vim.opt.rtp:append(Helpers.path("new")) diff --git a/tests/helpers.lua b/tests/helpers.lua index 48d84f9..b722a4a 100644 --- a/tests/helpers.lua +++ b/tests/helpers.lua @@ -26,12 +26,12 @@ function M.fs_rm(dir) dir = Util.norm(M.fs_root .. "/" .. dir) Util.walk(dir, function(path, _, type) if type == "directory" then - vim.loop.fs_rmdir(path) + vim.uv.fs_rmdir(path) else - vim.loop.fs_unlink(path) + vim.uv.fs_unlink(path) end end) - vim.loop.fs_rmdir(dir) + vim.uv.fs_rmdir(dir) end return M diff --git a/tests/init.lua b/tests/init.lua index a72b101..7b243c5 100644 --- a/tests/init.lua +++ b/tests/init.lua @@ -9,7 +9,7 @@ end function M.load(plugin) local name = plugin:match(".*/(.*)") local package_root = M.root(".tests/site/pack/deps/start/") - if not vim.loop.fs_stat(package_root .. name) then + if not vim.uv.fs_stat(package_root .. name) then print("Installing " .. plugin) vim.fn.mkdir(package_root, "p") vim.fn.system({ From 6705a0f11f3108ce499f933662602b08f99a6a65 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 22 Mar 2024 07:59:10 +0000 Subject: [PATCH 121/527] 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 844aa6d..cf2c53b 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 March 07 +*lazy.nvim.txt* For Neovim >= 0.8.0 Last change: 2024 March 22 ============================================================================== Table of Contents *lazy.nvim-table-of-contents* From b2174810cdf18fab850cefd0a50788b19b2d8e94 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 22 Mar 2024 09:01:10 +0100 Subject: [PATCH 122/527] chore(main): release 10.18.0 (#1369) 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 e766de1..36eaeff 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [10.18.0](https://github.com/folke/lazy.nvim/compare/v10.17.0...v10.18.0) (2024-03-22) + + +### Features + +* refactor all vim.loop -> vim.uv and add a shim when needed ([9e157df](https://github.com/folke/lazy.nvim/commit/9e157df077d24654d0cdefe08158cd4f76e85fe8)) + ## [10.17.0](https://github.com/folke/lazy.nvim/compare/v10.16.0...v10.17.0) (2024-03-07) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 0e6b7ee..910280e 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -177,7 +177,7 @@ M.defaults = { debug = false, } -M.version = "10.17.0" -- x-release-please-version +M.version = "10.18.0" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 61dddaec58f8594e40e95a8d5069ce7e493089df Mon Sep 17 00:00:00 2001 From: Michael Braun Date: Fri, 22 Mar 2024 09:15:46 +0100 Subject: [PATCH 123/527] fix: uv shim was not falling back to vim.loop (#1370) --- lua/lazy/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/lazy/init.lua b/lua/lazy/init.lua index 3bfa8c8..91acd37 100644 --- a/lua/lazy/init.lua +++ b/lua/lazy/init.lua @@ -2,7 +2,7 @@ local M = {} M._start = 0 -vim.uv = vim.uv or vim.uv +vim.uv = vim.uv or vim.loop local function profile_require() local done = {} ---@type table From c76cc600304e07e8677173fcecb45aa866a5681c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 22 Mar 2024 09:17:40 +0100 Subject: [PATCH 124/527] chore(main): release 10.18.1 (#1372) 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 36eaeff..8f1ac4d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [10.18.1](https://github.com/folke/lazy.nvim/compare/v10.18.0...v10.18.1) (2024-03-22) + + +### Bug Fixes + +* uv shim was not falling back to vim.loop ([#1370](https://github.com/folke/lazy.nvim/issues/1370)) ([61dddae](https://github.com/folke/lazy.nvim/commit/61dddaec58f8594e40e95a8d5069ce7e493089df)) + ## [10.18.0](https://github.com/folke/lazy.nvim/compare/v10.17.0...v10.18.0) (2024-03-22) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 910280e..7c86d1e 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -177,7 +177,7 @@ M.defaults = { debug = false, } -M.version = "10.18.0" -- x-release-please-version +M.version = "10.18.1" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From b6f7ef856b36c5edbe9f03e3a8554b97c458c953 Mon Sep 17 00:00:00 2001 From: William Mathewson Date: Fri, 22 Mar 2024 08:18:36 +0000 Subject: [PATCH 125/527] fix(ui): Add "bot" to dimmed commands list (#1367) nvim-treesitter has added a bot to automate updating parsers. This feels similar to the other commands that are dimmed. --- lua/lazy/view/config.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/lazy/view/config.lua b/lua/lazy/view/config.lua index ea8a066..e834573 100644 --- a/lua/lazy/view/config.lua +++ b/lua/lazy/view/config.lua @@ -24,7 +24,7 @@ function M.get_commands() return ret end -M.dimmed_commits = { "build", "ci", "chore", "doc", "style", "test" } +M.dimmed_commits = { "bot", "build", "ci", "chore", "doc", "style", "test" } M.keys = { hover = "K", From 3132d7d27d56d6bb4bdd0a09623d162b3cf1c588 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 22 Mar 2024 09:19:32 +0100 Subject: [PATCH 126/527] chore(main): release 10.18.2 (#1373) 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 8f1ac4d..83c104f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [10.18.2](https://github.com/folke/lazy.nvim/compare/v10.18.1...v10.18.2) (2024-03-22) + + +### Bug Fixes + +* **ui:** Add "bot" to dimmed commands list ([#1367](https://github.com/folke/lazy.nvim/issues/1367)) ([b6f7ef8](https://github.com/folke/lazy.nvim/commit/b6f7ef856b36c5edbe9f03e3a8554b97c458c953)) + ## [10.18.1](https://github.com/folke/lazy.nvim/compare/v10.18.0...v10.18.1) (2024-03-22) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 7c86d1e..cce6519 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -177,7 +177,7 @@ M.defaults = { debug = false, } -M.version = "10.18.1" -- x-release-please-version +M.version = "10.18.2" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 9131ea4c4ae59e347716659088a76d9b9ce3b2f5 Mon Sep 17 00:00:00 2001 From: Riley Bruins Date: Fri, 22 Mar 2024 14:42:17 -0700 Subject: [PATCH 127/527] fix(cache): vim.loop fallback (#1375) --- lua/lazy/core/cache.lua | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lua/lazy/core/cache.lua b/lua/lazy/core/cache.lua index 6588c1e..07cb677 100644 --- a/lua/lazy/core/cache.lua +++ b/lua/lazy/core/cache.lua @@ -1,4 +1,4 @@ -local uv = vim.uv +local uv = vim.uv or vim.loop local M = {} @@ -51,7 +51,7 @@ end ---@private function Loader.normalize(path) if path:sub(1, 1) == "~" then - local home = vim.uv.os_homedir() or "~" + local home = uv.os_homedir() or "~" if home:sub(-1) == "\\" or home:sub(-1) == "/" then home = home:sub(1, -2) end @@ -442,9 +442,9 @@ function Loader.lsmod(path) if not Loader._indexed[path] then local start = uv.hrtime() Loader._indexed[path] = {} - local handle = vim.uv.fs_scandir(path .. "/lua") + local handle = uv.fs_scandir(path .. "/lua") while handle do - local name, t = vim.uv.fs_scandir_next(handle) + local name, t = uv.fs_scandir_next(handle) if not name then break end @@ -480,7 +480,7 @@ function M._profile_loaders() for l, loader in pairs(package.loaders) do local loc = debug.getinfo(loader, "Sn").source:sub(2) package.loaders[l] = function(modname) - local start = vim.uv.hrtime() + local start = uv.hrtime() local ret = loader(modname) Loader.track("loader " .. l .. ": " .. loc, start) Loader.track("loader_all", start) From 8134f2ac041a609f35ec8fc1a4cb4246292b0026 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 22 Mar 2024 22:51:11 +0100 Subject: [PATCH 128/527] chore(main): release 10.18.3 (#1376) 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 83c104f..7a9a652 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [10.18.3](https://github.com/folke/lazy.nvim/compare/v10.18.2...v10.18.3) (2024-03-22) + + +### Bug Fixes + +* **cache:** vim.loop fallback ([#1375](https://github.com/folke/lazy.nvim/issues/1375)) ([9131ea4](https://github.com/folke/lazy.nvim/commit/9131ea4c4ae59e347716659088a76d9b9ce3b2f5)) + ## [10.18.2](https://github.com/folke/lazy.nvim/compare/v10.18.1...v10.18.2) (2024-03-22) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index cce6519..63994c9 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -177,7 +177,7 @@ M.defaults = { debug = false, } -M.version = "10.18.2" -- x-release-please-version +M.version = "10.18.3" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 66466a2594ab0c446193772a68c236c7e4e02ade Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Fri, 22 Mar 2024 23:35:19 +0100 Subject: [PATCH 129/527] feat(util): option to force system app for util.open --- lua/lazy/util.lua | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lua/lazy/util.lua b/lua/lazy/util.lua index 1c73d43..a3b94f6 100644 --- a/lua/lazy/util.lua +++ b/lua/lazy/util.lua @@ -19,13 +19,15 @@ function M.wo(win, k, v) end end -function M.open(uri) - if M.file_exists(uri) then +---@param opts? {system?:boolean} +function M.open(uri, opts) + opts = opts or {} + if not opts.system and M.file_exists(uri) then return M.float({ style = "", file = uri }) end local Config = require("lazy.core.config") local cmd - if Config.options.ui.browser then + if not opts.system and Config.options.ui.browser then cmd = { Config.options.ui.browser, uri } elseif vim.fn.has("win32") == 1 then cmd = { "explorer", uri } From af6afefbb46ab29a8a1db69536b04290a9403876 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 22 Mar 2024 23:39:43 +0100 Subject: [PATCH 130/527] chore(main): release 10.19.0 (#1377) 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 7a9a652..d15874e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [10.19.0](https://github.com/folke/lazy.nvim/compare/v10.18.3...v10.19.0) (2024-03-22) + + +### Features + +* **util:** option to force system app for util.open ([66466a2](https://github.com/folke/lazy.nvim/commit/66466a2594ab0c446193772a68c236c7e4e02ade)) + ## [10.18.3](https://github.com/folke/lazy.nvim/compare/v10.18.2...v10.18.3) (2024-03-22) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 63994c9..dc05600 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -177,7 +177,7 @@ M.defaults = { debug = false, } -M.version = "10.18.3" -- x-release-please-version +M.version = "10.19.0" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From eade87fb837d6cdeef94587ce5e8c8dfb9f88920 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sun, 24 Mar 2024 11:30:00 +0100 Subject: [PATCH 131/527] fix(types): fixed type for `version`. Fixes #1381 --- 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 5d1980a..9926aee 100644 --- a/lua/lazy/types.lua +++ b/lua/lazy/types.lua @@ -44,7 +44,7 @@ ---@field branch? string ---@field tag? string ---@field commit? string ----@field version? string +---@field version? string|boolean ---@field pin? boolean ---@field submodules? boolean Defaults to true From 08954f723bf2d442ea020551e3acc956f4dc6dc7 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 24 Mar 2024 10:30:32 +0000 Subject: [PATCH 132/527] 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 cf2c53b..69e26cc 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 March 22 +*lazy.nvim.txt* For Neovim >= 0.8.0 Last change: 2024 March 24 ============================================================================== Table of Contents *lazy.nvim-table-of-contents* From a6b74f30d5aab79a40d932f449c0aa5d4a0c6934 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Tue, 26 Mar 2024 19:52:16 +0100 Subject: [PATCH 133/527] feat(ui): backdrop for the lazy floating window. Can be disabled with `opts.ui.backdrop` --- README.md | 117 ++++++++++++++++++++------------------- lua/lazy/core/config.lua | 5 +- lua/lazy/view/float.lua | 43 +++++++++++++- 3 files changed, 106 insertions(+), 59 deletions(-) diff --git a/README.md b/README.md index 10fabe9..48f64ba 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ 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.loop.fs_stat(lazypath) then +if not vim.uv.fs_stat(lazypath) then vim.fn.system({ "git", "clone", @@ -308,11 +308,12 @@ return { -- leave nil when passing the spec as the first argument to setup() spec = nil, ---@type LazySpec lockfile = vim.fn.stdpath("config") .. "/lazy-lock.json", -- lockfile generated after running update. - concurrency = jit.os:find("Windows") and (vim.loop.available_parallelism() * 2) or nil, ---@type number limit the maximum amount of concurrent tasks + ---@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 = { "-10" }, -- show the last 10 commits - log = { "-8" }, -- show commits from the last 3 days + -- 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, @@ -339,6 +340,8 @@ return { 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 @@ -346,7 +349,7 @@ return { icons = { cmd = " ", config = "", - event = "", + event = " ", ft = " ", init = " ", import = " ", @@ -358,7 +361,7 @@ return { runtime = " ", require = "󰢱 ", source = " ", - start = "", + start = " ", task = "✔ ", list = { "●", @@ -513,24 +516,24 @@ 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!!) | +| 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 | +| `: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 | @@ -781,40 +784,40 @@ To uninstall **lazy.nvim**, you need to remove the following files and directori -| 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 | +| 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 | diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index dc05600..4195336 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -17,7 +17,8 @@ M.defaults = { -- leave nil when passing the spec as the first argument to setup() spec = nil, ---@type LazySpec lockfile = vim.fn.stdpath("config") .. "/lazy-lock.json", -- lockfile generated after running update. - concurrency = jit.os:find("Windows") and (vim.uv.available_parallelism() * 2) or nil, ---@type number limit the maximum amount of concurrent tasks + ---@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 @@ -48,6 +49,8 @@ M.defaults = { 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 diff --git a/lua/lazy/view/float.lua b/lua/lazy/view/float.lua index 0a21b38..3e8938f 100644 --- a/lua/lazy/view/float.lua +++ b/lua/lazy/view/float.lua @@ -15,12 +15,15 @@ local ViewConfig = require("lazy.view.config") ---@field persistent? boolean ---@field ft? string ---@field noautocmd? boolean +---@field backdrop? float ---@class LazyFloat ---@field buf number ---@field win number ---@field opts LazyFloatOptions ---@field win_opts LazyWinOpts +---@field backdrop_buf number +---@field backdrop_win number ---@overload fun(opts?:LazyFloatOptions):LazyFloat local M = {} @@ -43,6 +46,7 @@ function M:init(opts) size = Config.options.ui.size, style = "minimal", border = Config.options.ui.border or "none", + backdrop = Config.options.ui.backdrop or 60, zindex = 50, }, opts or {}) @@ -62,7 +66,7 @@ function M:init(opts) } self:mount() self:on_key(ViewConfig.keys.close, self.close) - self:on({ "BufDelete", "BufHidden" }, self.close, { once = true }) + self:on({ "BufDelete", "BufHidden" }, self.close, { once = false }) return self end @@ -114,6 +118,24 @@ function M:mount() self.buf = vim.api.nvim_create_buf(false, true) end + if self.opts.backdrop and self.opts.backdrop < 100 then + self.backdrop_buf = vim.api.nvim_create_buf(false, true) + self.backdrop_win = vim.api.nvim_open_win(self.backdrop_buf, false, { + relative = "editor", + width = vim.o.columns, + height = vim.o.lines, + row = 0, + col = 0, + style = "minimal", + focusable = false, + zindex = self.opts.zindex - 1, + }) + vim.api.nvim_set_hl(0, "LazyBackdrop", { bg = "#000000", default = true }) + Util.wo(self.backdrop_win, "winhighlight", "Normal:LazyBackdrop") + Util.wo(self.backdrop_win, "winblend", self.opts.backdrop) + vim.bo[self.backdrop_buf].buftype = "nofile" + end + self:layout() self.win = vim.api.nvim_open_win(self.buf, true, self.win_opts) self:focus() @@ -149,6 +171,14 @@ function M:mount() end config.style = self.opts.style ~= "" and self.opts.style or nil vim.api.nvim_win_set_config(self.win, config) + + if self.backdrop_win and vim.api.nvim_win_is_valid(self.backdrop_win) then + vim.api.nvim_win_set_config(self.backdrop_win, { + width = vim.o.columns, + height = vim.o.lines, + }) + end + opts() vim.api.nvim_exec_autocmds("User", { pattern = "LazyFloatResized", modeline = false }) end, @@ -204,7 +234,18 @@ function M:close(opts) if wipe then self.buf = nil end + local backdrop_buf = self.backdrop_buf + local backdrop_win = self.backdrop_win + self.backdrop_buf = nil + self.backdrop_win = nil + vim.schedule(function() + if backdrop_win and vim.api.nvim_win_is_valid(backdrop_win) then + vim.api.nvim_win_close(backdrop_win, true) + end + if backdrop_buf and vim.api.nvim_buf_is_valid(backdrop_buf) then + vim.api.nvim_buf_delete(backdrop_buf, { force = true }) + end if win and vim.api.nvim_win_is_valid(win) then vim.api.nvim_win_close(win, true) end From 6749a259c140631e53282b93050e2ab8063db5eb Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 26 Mar 2024 18:52:53 +0000 Subject: [PATCH 134/527] chore(build): auto-generate vimdoc --- doc/lazy.nvim.txt | 160 ++++++++++++++++++++++++++-------------------- 1 file changed, 92 insertions(+), 68 deletions(-) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index 69e26cc..fee5a68 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 March 24 +*lazy.nvim.txt* For Neovim >= 0.8.0 Last change: 2024 March 26 ============================================================================== Table of Contents *lazy.nvim-table-of-contents* @@ -62,7 +62,7 @@ You can add the following Lua code to your `init.lua` to bootstrap >lua local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" - if not vim.loop.fs_stat(lazypath) then + if not vim.uv.fs_stat(lazypath) then vim.fn.system({ "git", "clone", @@ -411,11 +411,12 @@ CONFIGURATION *lazy.nvim-lazy.nvim-configuration* -- leave nil when passing the spec as the first argument to setup() spec = nil, ---@type LazySpec lockfile = vim.fn.stdpath("config") .. "/lazy-lock.json", -- lockfile generated after running update. - concurrency = jit.os:find("Windows") and (vim.loop.available_parallelism() * 2) or nil, ---@type number limit the maximum amount of concurrent tasks + ---@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 = { "-10" }, -- show the last 10 commits - log = { "-8" }, -- show commits from the last 3 days + -- 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, @@ -442,6 +443,8 @@ CONFIGURATION *lazy.nvim-lazy.nvim-configuration* 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 @@ -449,7 +452,7 @@ CONFIGURATION *lazy.nvim-lazy.nvim-configuration* icons = { cmd = " ", config = "", - event = "", + event = " ", ft = " ", init = " ", import = " ", @@ -461,7 +464,7 @@ CONFIGURATION *lazy.nvim-lazy.nvim-configuration* runtime = " ", require = "󰢱 ", source = " ", - start = "", + start = " ", task = "✔ ", list = { "●", @@ -611,45 +614,63 @@ 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 + --------------------------------------------------------------------------------------------------- + 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 + :Lazy clear require("lazy").clear() Clear finished tasks - :Lazy debug require("lazy").debug() Show debug information + :Lazy debug require("lazy").debug() Show debug information - :Lazy health require("lazy").health() Run :checkhealth lazy + :Lazy health require("lazy").health() Run :checkhealth lazy - :Lazy help require("lazy").help() Toggle this help page + :Lazy help require("lazy").help() Toggle this help page - :Lazy home require("lazy").home() Go back to plugin list + :Lazy home require("lazy").home() Go back to plugin list - :Lazy install [plugins] require("lazy").install(opts?) Install missing plugins + :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 log [plugins] require("lazy").log(opts?) Show recent updates - :Lazy profile require("lazy").profile() Show detailed profiling + :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: @@ -905,74 +926,77 @@ HIGHLIGHT GROUPS *lazy.nvim-lazy.nvim-highlight-groups* Click to see all highlight groups ~ - --------------------------------------------------------------------------------- - Highlight Group Default Group Description - ------------------- ------------------------ ------------------------------------ - LazyButton CursorLine + ----------------------------------------------------------------------- + Highlight Group Default Group Description + ----------------------- ----------------------- ----------------------- + LazyButton CursorLine - LazyButtonActive Visual + LazyButtonActive Visual - LazyComment Comment + LazyComment Comment - LazyCommit _@variable.builtin_ commitref + LazyCommit @variable.builtin commit ref - LazyCommitIssue Number + LazyCommitIssue Number - LazyCommitScope Italic conventional commit scope + LazyCommitScope Italic conventional commit + scope - LazyCommitType Title conventional commit type + LazyCommitType Title conventional commit + type - LazyDimmed Conceal property + LazyDimmed Conceal property - LazyDir _@markup.link_ directory + LazyDir @markup.link directory - LazyH1 IncSearch homebutton + LazyH1 IncSearch home button - LazyH2 Bold titles + LazyH2 Bold titles - LazyLocal Constant + LazyLocal Constant - LazyNoCond DiagnosticWarn unloaded icon for a plugin where - cond() was false + LazyNoCond DiagnosticWarn unloaded icon for a + plugin where cond() was + false - LazyNormal NormalFloat + LazyNormal NormalFloat - LazyProgressDone Constant progress bar done + LazyProgressDone Constant progress bar done - LazyProgressTodo LineNr progress bar todo + LazyProgressTodo LineNr progress bar todo - LazyProp Conceal property + LazyProp Conceal property - LazyReasonCmd Operator + LazyReasonCmd Operator - LazyReasonEvent Constant + LazyReasonEvent Constant - LazyReasonFt Character + LazyReasonFt Character - LazyReasonImport Identifier + LazyReasonImport Identifier - LazyReasonKeys Statement + LazyReasonKeys Statement - LazyReasonPlugin Special + LazyReasonPlugin Special - LazyReasonRequire _@variable.parameter_ + LazyReasonRequire @variable.parameter - LazyReasonRuntime _@macro_ + LazyReasonRuntime @macro - LazyReasonSource Character + LazyReasonSource Character - LazyReasonStart _@variable.member_ + LazyReasonStart @variable.member - LazySpecial _@punctuation.special_ + LazySpecial @punctuation.special - LazyTaskError ErrorMsg taskerrors + LazyTaskError ErrorMsg task errors - LazyTaskOutput MsgArea task output + LazyTaskOutput MsgArea task output - LazyUrl _@markup.link_ url + LazyUrl @markup.link url - LazyValue _@string_ valueof a property - --------------------------------------------------------------------------------- + LazyValue @string value of a property + ----------------------------------------------------------------------- PLUGIN AUTHORS *lazy.nvim-lazy.nvim-plugin-authors* From 107719d31e2e4f4dccbabdbd7c7e662aebdb8399 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 26 Mar 2024 19:54:49 +0100 Subject: [PATCH 135/527] chore(main): release 10.20.0 (#1382) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- CHANGELOG.md | 12 ++++++++++++ lua/lazy/core/config.lua | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d15874e..a87bb1b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,17 @@ # Changelog +## [10.20.0](https://github.com/folke/lazy.nvim/compare/v10.19.0...v10.20.0) (2024-03-26) + + +### Features + +* **ui:** backdrop for the lazy floating window. Can be disabled with `opts.ui.backdrop` ([a6b74f3](https://github.com/folke/lazy.nvim/commit/a6b74f30d5aab79a40d932f449c0aa5d4a0c6934)) + + +### Bug Fixes + +* **types:** fixed type for `version`. Fixes [#1381](https://github.com/folke/lazy.nvim/issues/1381) ([eade87f](https://github.com/folke/lazy.nvim/commit/eade87fb837d6cdeef94587ce5e8c8dfb9f88920)) + ## [10.19.0](https://github.com/folke/lazy.nvim/compare/v10.18.3...v10.19.0) (2024-03-22) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 4195336..335c93f 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -180,7 +180,7 @@ M.defaults = { debug = false, } -M.version = "10.19.0" -- x-release-please-version +M.version = "10.20.0" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 79e2e8593410f199b85f5d61a83704a16169282f Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Tue, 26 Mar 2024 20:30:12 +0100 Subject: [PATCH 136/527] fix(ui): properly cleanup on `:quit`. Fixes #1385 --- lua/lazy/view/float.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/lazy/view/float.lua b/lua/lazy/view/float.lua index 3e8938f..808f09c 100644 --- a/lua/lazy/view/float.lua +++ b/lua/lazy/view/float.lua @@ -66,7 +66,7 @@ function M:init(opts) } self:mount() self:on_key(ViewConfig.keys.close, self.close) - self:on({ "BufDelete", "BufHidden" }, self.close, { once = false }) + self:on({ "WinLeave", "BufDelete", "BufHidden" }, self.close, { once = false }) return self end From 68941b7b13861ca44ad5d4caf7296d9160b4732f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 26 Mar 2024 20:32:47 +0100 Subject: [PATCH 137/527] chore(main): release 10.20.1 (#1386) 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 a87bb1b..c6785ab 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [10.20.1](https://github.com/folke/lazy.nvim/compare/v10.20.0...v10.20.1) (2024-03-26) + + +### Bug Fixes + +* **ui:** properly cleanup on `:quit`. Fixes [#1385](https://github.com/folke/lazy.nvim/issues/1385) ([79e2e85](https://github.com/folke/lazy.nvim/commit/79e2e8593410f199b85f5d61a83704a16169282f)) + ## [10.20.0](https://github.com/folke/lazy.nvim/compare/v10.19.0...v10.20.0) (2024-03-26) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 335c93f..bfc57d3 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -180,7 +180,7 @@ M.defaults = { debug = false, } -M.version = "10.20.0" -- x-release-please-version +M.version = "10.20.1" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From d37a76b87137c777f3d778ed03729d7f332a85f0 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Tue, 26 Mar 2024 22:57:55 +0100 Subject: [PATCH 138/527] fix(ui): only enable backdrop when guicolors is set. Fixes #1387 --- lua/lazy/view/float.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/lazy/view/float.lua b/lua/lazy/view/float.lua index 808f09c..d0cd6c7 100644 --- a/lua/lazy/view/float.lua +++ b/lua/lazy/view/float.lua @@ -118,7 +118,7 @@ function M:mount() self.buf = vim.api.nvim_create_buf(false, true) end - if self.opts.backdrop and self.opts.backdrop < 100 then + if self.opts.backdrop and self.opts.backdrop < 100 and vim.o.termguicolors then self.backdrop_buf = vim.api.nvim_create_buf(false, true) self.backdrop_win = vim.api.nvim_open_win(self.backdrop_buf, false, { relative = "editor", From eefb8974d6a092da6e1631855e4288499b651fdd Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Wed, 27 Mar 2024 08:48:55 +0100 Subject: [PATCH 139/527] fix(ui): special handling for floats closed before VimEnter. Seems that WinClosed events dont execute before that. Fixes #1390 --- lua/lazy/util.lua | 30 ++++++++++++++++++ lua/lazy/view/float.lua | 69 +++++++++++++++++++++++++++++------------ lua/lazy/view/init.lua | 16 +++++----- 3 files changed, 89 insertions(+), 26 deletions(-) diff --git a/lua/lazy/util.lua b/lua/lazy/util.lua index a3b94f6..705ca39 100644 --- a/lua/lazy/util.lua +++ b/lua/lazy/util.lua @@ -98,6 +98,36 @@ function M.throttle(ms, fn) end end +--- Creates a weak reference to an object. +--- Calling the returned function will return the object if it has not been garbage collected. +---@generic T: table +---@param obj T +---@return T|fun():T? +function M.weak(obj) + local weak = { _obj = obj } + ---@return table + local function get() + local ret = rawget(weak, "_obj") + return ret == nil and error("Object has been garbage collected", 2) or ret + end + local mt = { + __mode = "v", + __call = function(t) + return rawget(t, "_obj") + end, + __index = function(_, k) + return get()[k] + end, + __newindex = function(_, k, v) + get()[k] = v + end, + __pairs = function() + return pairs(get()) + end, + } + return setmetatable(weak, mt) +end + ---@class LazyCmdOptions: LazyFloatOptions ---@field cwd? string ---@field env? table diff --git a/lua/lazy/view/float.lua b/lua/lazy/view/float.lua index d0cd6c7..bfbc4eb 100644 --- a/lua/lazy/view/float.lua +++ b/lua/lazy/view/float.lua @@ -24,6 +24,7 @@ local ViewConfig = require("lazy.view.config") ---@field win_opts LazyWinOpts ---@field backdrop_buf number ---@field backdrop_win number +---@field id number ---@overload fun(opts?:LazyFloatOptions):LazyFloat local M = {} @@ -33,6 +34,12 @@ setmetatable(M, { end, }) +local _id = 0 +local function next_id() + _id = _id + 1 + return _id +end + ---@param opts? LazyFloatOptions function M.new(opts) local self = setmetatable({}, { __index = M }) @@ -42,6 +49,7 @@ end ---@param opts? LazyFloatOptions function M:init(opts) require("lazy.view.colors").setup() + self.id = next_id() self.opts = vim.tbl_deep_extend("force", { size = Config.options.ui.size, style = "minimal", @@ -65,8 +73,13 @@ function M:init(opts) title_pos = self.opts.title and self.opts.title_pos or nil, } self:mount() - self:on_key(ViewConfig.keys.close, self.close) - self:on({ "WinLeave", "BufDelete", "BufHidden" }, self.close, { once = false }) + self:on("VimEnter", function() + vim.schedule(function() + if not self:win_valid() then + self:close() + end + end) + end, { buffer = false }) return self end @@ -138,7 +151,13 @@ function M:mount() self:layout() self.win = vim.api.nvim_open_win(self.buf, true, self.win_opts) + self:on("WinClosed", function() + self:close() + self:augroup(true) + end, { win = true }) self:focus() + self:on_key(ViewConfig.keys.close, self.close) + self:on({ "BufDelete", "BufHidden" }, self.close) if vim.bo[self.buf].buftype == "" then vim.bo[self.buf].buftype = "nofile" @@ -185,27 +204,38 @@ function M:mount() }) end +---@param clear? boolean +function M:augroup(clear) + return vim.api.nvim_create_augroup("trouble.window." .. self.id, { clear = clear == true }) +end + ---@param events string|string[] ----@param fn fun(self?):boolean? ----@param opts? table +---@param fn fun(self:LazyFloat, event:{buf:number}):boolean? +---@param opts? vim.api.keyset.create_autocmd | {buffer: false, win?:boolean} function M:on(events, fn, opts) - if type(events) == "string" then - events = { events } + opts = opts or {} + if opts.win then + opts.pattern = self.win .. "" + opts.win = nil + elseif opts.buffer == nil then + opts.buffer = self.buf + elseif opts.buffer == false then + opts.buffer = nil end - for _, e in ipairs(events) do - local event, pattern = e:match("(%w+) (%w+)") - event = event or e - vim.api.nvim_create_autocmd( - event, - vim.tbl_extend("force", { - pattern = pattern, - buffer = (not pattern) and self.buf or nil, - callback = function() - return fn(self) - end, - }, opts or {}) - ) + if opts.pattern then + opts.buffer = nil end + local _self = Util.weak(self) + opts.callback = function(e) + local this = _self() + if not this then + -- delete the autocmd + return true + end + return fn(this, e) + end + opts.group = self:augroup() + vim.api.nvim_create_autocmd(events, opts) end ---@param key string @@ -223,6 +253,7 @@ end ---@param opts? {wipe:boolean} function M:close(opts) + self:augroup(true) local buf = self.buf local win = self.win local wipe = opts and opts.wipe diff --git a/lua/lazy/view/init.lua b/lua/lazy/view/init.lua index e62fc6e..5753f5b 100644 --- a/lua/lazy/view/init.lua +++ b/lua/lazy/view/init.lua @@ -53,7 +53,7 @@ function M.create() Float.init(self, { title = Config.options.ui.title, title_pos = Config.options.ui.title_pos, - noautocmd = true, + noautocmd = false, }) if Config.options.ui.wrap then @@ -69,12 +69,14 @@ function M.create() self.render = Render.new(self) self.update = Util.throttle(Config.options.ui.throttle, self.update) - self:on({ "User LazyRender", "User LazyFloatResized" }, function() - if not (self.buf and vim.api.nvim_buf_is_valid(self.buf)) then - return true - end - self:update() - end) + for _, pattern in ipairs({ "LazyRender", "LazyFloatResized" }) do + self:on({ "User" }, function() + if not (self.buf and vim.api.nvim_buf_is_valid(self.buf)) then + return true + end + self:update() + end, { pattern = pattern }) + end vim.keymap.set("n", ViewConfig.keys.abort, function() require("lazy.manage.process").abort() From b38b2257b643c4c35e3786f7c5e7512d9eb8f945 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 27 Mar 2024 07:49:31 +0000 Subject: [PATCH 140/527] 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 fee5a68..0c49864 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 March 26 +*lazy.nvim.txt* For Neovim >= 0.8.0 Last change: 2024 March 27 ============================================================================== Table of Contents *lazy.nvim-table-of-contents* From 65887ea871d44822bff47504202b3643f29d614e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 27 Mar 2024 08:55:21 +0100 Subject: [PATCH 141/527] chore(main): release 10.20.2 (#1388) 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 c6785ab..b7adaba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## [10.20.2](https://github.com/folke/lazy.nvim/compare/v10.20.1...v10.20.2) (2024-03-27) + + +### Bug Fixes + +* **ui:** only enable backdrop when guicolors is set. Fixes [#1387](https://github.com/folke/lazy.nvim/issues/1387) ([d37a76b](https://github.com/folke/lazy.nvim/commit/d37a76b87137c777f3d778ed03729d7f332a85f0)) +* **ui:** special handling for floats closed before VimEnter. Seems that WinClosed events dont execute before that. Fixes [#1390](https://github.com/folke/lazy.nvim/issues/1390) ([eefb897](https://github.com/folke/lazy.nvim/commit/eefb8974d6a092da6e1631855e4288499b651fdd)) + ## [10.20.1](https://github.com/folke/lazy.nvim/compare/v10.20.0...v10.20.1) (2024-03-26) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index bfc57d3..66ca5b2 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -180,7 +180,7 @@ M.defaults = { debug = false, } -M.version = "10.20.1" -- x-release-please-version +M.version = "10.20.2" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From a836600573fbcf1879b850d40b8cdea59b33f8da Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Wed, 27 Mar 2024 09:23:15 +0100 Subject: [PATCH 142/527] docs: make bootstrap work on stable and nightly. Fixes #1391 --- README.md | 2 +- lua/lazy/init.lua | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 48f64ba..aeedef9 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ 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.fs_stat(lazypath) then +if not (vim.uv or vim.loop).fs_stat(lazypath) then vim.fn.system({ "git", "clone", diff --git a/lua/lazy/init.lua b/lua/lazy/init.lua index 91acd37..4336da1 100644 --- a/lua/lazy/init.lua +++ b/lua/lazy/init.lua @@ -122,7 +122,7 @@ end function M.bootstrap() local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" - if not vim.uv.fs_stat(lazypath) then + if not (vim.uv or vim.loop).fs_stat(lazypath) then vim.fn.system({ "git", "clone", From e888d5b64c34bc41f7ef2e8850a5e67e4b3e2731 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 27 Mar 2024 08:23:55 +0000 Subject: [PATCH 143/527] 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 0c49864..c73b322 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -62,7 +62,7 @@ You can add the following Lua code to your `init.lua` to bootstrap >lua local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" - if not vim.uv.fs_stat(lazypath) then + if not (vim.uv or vim.loop).fs_stat(lazypath) then vim.fn.system({ "git", "clone", From e753eb602539bdad9f0709066d5893a788cb5db9 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Wed, 27 Mar 2024 22:58:58 +0100 Subject: [PATCH 144/527] ci: better docgen --- lua/lazy/docs.lua | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/lua/lazy/docs.lua b/lua/lazy/docs.lua index bf42e98..c38d047 100644 --- a/lua/lazy/docs.lua +++ b/lua/lazy/docs.lua @@ -109,9 +109,15 @@ function M.table(lines) return table.concat(ret, "\n") end +---@param opts? {name?:string, path?:string, modname?:string} ---@return ReadmeBlock -function M.colors() - local str = M.extract("lua/lazy/view/colors.lua", "\nM%.colors = ({.-\n})") +function M.colors(opts) + opts = vim.tbl_extend("force", { + name = "Lazy", + path = "lua/lazy/view/colors.lua", + modname = "lazy.view.colors", + }, opts or {}) + local str = M.extract(opts.path, "\nM%.colors = ({.-\n})") ---@type table local comments = {} for _, line in ipairs(vim.split(str, "\n")) do @@ -124,8 +130,8 @@ function M.colors() { "Highlight Group", "Default Group", "Description" }, { "---", "---", "---" }, } - Util.foreach(require("lazy.view.colors").colors, function(group, link) - lines[#lines + 1] = { "**Lazy" .. group .. "**", "***" .. link .. "***", comments[group] or "" } + Util.foreach(require(opts.modname).colors, function(group, link) + lines[#lines + 1] = { "**" .. opts.name .. group .. "**", "***" .. link .. "***", comments[group] or "" } end) return { content = M.table(lines) } end From f61ca6ec701a27e57f58da0315b741df09345f8f Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Thu, 28 Mar 2024 12:15:31 +0100 Subject: [PATCH 145/527] docs: fix commands table. Fixes #1393 --- README.md | 2 +- lua/lazy/docs.lua | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index aeedef9..f7f709f 100644 --- a/README.md +++ b/README.md @@ -517,7 +517,7 @@ 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 | diff --git a/lua/lazy/docs.lua b/lua/lazy/docs.lua index c38d047..36880a1 100644 --- a/lua/lazy/docs.lua +++ b/lua/lazy/docs.lua @@ -71,7 +71,7 @@ function M.commands() modes.load.opts = true local lines = { { "Command", "Lua", "Description" }, - { "---", "---", "---", "---" }, + { "---", "---", "---" }, } Util.foreach(modes, function(name, mode) if commands[name] then From ba58b87ed9c95da9d61e1b8b4da7bf7904e39986 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 28 Mar 2024 11:16:10 +0000 Subject: [PATCH 146/527] chore(build): auto-generate vimdoc --- doc/lazy.nvim.txt | 84 +++++++++++++++++++++++------------------------ 1 file changed, 41 insertions(+), 43 deletions(-) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index c73b322..88476dc 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 March 27 +*lazy.nvim.txt* For Neovim >= 0.8.0 Last change: 2024 March 28 ============================================================================== Table of Contents *lazy.nvim-table-of-contents* @@ -20,6 +20,7 @@ Table of Contents *lazy.nvim-table-of-contents* - 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. lazy.nvim *lazy.nvim-lazy.nvim* @@ -614,63 +615,60 @@ 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 + ---------------------------------------------------------------------------------- + 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 + :Lazy clear require("lazy").clear() Clear finished tasks - :Lazy debug require("lazy").debug() Show debug information + :Lazy debug require("lazy").debug() Show debug information - :Lazy health require("lazy").health() Run :checkhealth lazy + :Lazy health require("lazy").health() Run :checkhealth lazy - :Lazy help require("lazy").help() Toggle this help page + :Lazy help require("lazy").help() Toggle this help page - :Lazy home require("lazy").home() Go back to plugin list + :Lazy home require("lazy").home() Go back to plugin list - :Lazy install [plugins] require("lazy").install(opts?) Install missing - plugins + :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 log [plugins] require("lazy").log(opts?) Show recent updates - :Lazy profile require("lazy").profile() Show detailed - profiling + :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: From 0ccf0312270d2d976ec551a9034bf05720f2486b Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Thu, 28 Mar 2024 14:52:05 +0100 Subject: [PATCH 147/527] fix(ui): disable backdrop when Neovim is transparent --- lua/lazy/view/float.lua | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lua/lazy/view/float.lua b/lua/lazy/view/float.lua index bfbc4eb..35baa6f 100644 --- a/lua/lazy/view/float.lua +++ b/lua/lazy/view/float.lua @@ -131,7 +131,10 @@ function M:mount() self.buf = vim.api.nvim_create_buf(false, true) end - if self.opts.backdrop and self.opts.backdrop < 100 and vim.o.termguicolors then + local normal = vim.api.nvim_get_hl(0, { name = "Normal" }) + local has_bg = normal and normal.bg ~= nil + + if has_bg and self.opts.backdrop and self.opts.backdrop < 100 and vim.o.termguicolors then self.backdrop_buf = vim.api.nvim_create_buf(false, true) self.backdrop_win = vim.api.nvim_open_win(self.backdrop_buf, false, { relative = "editor", From bef521ac89c8d423f9d092e37b58e8af0c099309 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 29 Mar 2024 08:18:38 +0100 Subject: [PATCH 148/527] chore(main): release 10.20.3 (#1394) 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 b7adaba..82b9efa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [10.20.3](https://github.com/folke/lazy.nvim/compare/v10.20.2...v10.20.3) (2024-03-28) + + +### Bug Fixes + +* **ui:** disable backdrop when Neovim is transparent ([0ccf031](https://github.com/folke/lazy.nvim/commit/0ccf0312270d2d976ec551a9034bf05720f2486b)) + ## [10.20.2](https://github.com/folke/lazy.nvim/compare/v10.20.1...v10.20.2) (2024-03-27) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 66ca5b2..4c4c394 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -180,7 +180,7 @@ M.defaults = { debug = false, } -M.version = "10.20.2" -- x-release-please-version +M.version = "10.20.3" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 7a2617575a8c990394c0f28a8e980b33b72e1b0d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 29 Mar 2024 07:19:12 +0000 Subject: [PATCH 149/527] 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 88476dc..30764b3 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 March 28 +*lazy.nvim.txt* For Neovim >= 0.8.0 Last change: 2024 March 29 ============================================================================== Table of Contents *lazy.nvim-table-of-contents* From 31ddbea7c10b6920c9077b66c97951ca8682d5c8 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Fri, 29 Mar 2024 20:28:45 +0100 Subject: [PATCH 150/527] fix(ui): set backdrop filetype to `lazy_backdrop`. Fixes #1399 --- lua/lazy/view/float.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/lua/lazy/view/float.lua b/lua/lazy/view/float.lua index 35baa6f..6696c5e 100644 --- a/lua/lazy/view/float.lua +++ b/lua/lazy/view/float.lua @@ -150,6 +150,7 @@ function M:mount() Util.wo(self.backdrop_win, "winhighlight", "Normal:LazyBackdrop") Util.wo(self.backdrop_win, "winblend", self.opts.backdrop) vim.bo[self.backdrop_buf].buftype = "nofile" + vim.bo[self.backdrop_buf].filetype = "lazy_backdrop" end self:layout() From 481aed70cc4d8e8a38463fd16edf81a23c153247 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Mon, 22 Apr 2024 10:33:32 +0200 Subject: [PATCH 151/527] fix(heath): vim.uv. Fixes #1412 --- lua/lazy/health.lua | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lua/lazy/health.lua b/lua/lazy/health.lua index bcc546a..7b06f1d 100644 --- a/lua/lazy/health.lua +++ b/lua/lazy/health.lua @@ -1,4 +1,5 @@ local Config = require("lazy.core.config") +local uv = vim.uv or vim.loop local M = {} @@ -26,7 +27,7 @@ function M.check() local existing = false for _, site in pairs(sites) do for _, packs in ipairs(vim.fn.expand(site .. "/pack/*", false, true)) do - if not packs:find("[/\\]dist$") and vim.uv.fs_stat(packs) then + if not packs:find("[/\\]dist$") and uv.fs_stat(packs) then existing = true warn("found existing packages at `" .. packs .. "`") end @@ -46,7 +47,7 @@ function M.check() end local packer_compiled = vim.fn.stdpath("config") .. "/plugin/packer_compiled.lua" - if vim.uv.fs_stat(packer_compiled) then + if uv.fs_stat(packer_compiled) then error("please remove the file `" .. packer_compiled .. "`") else ok("packer_compiled.lua not found") From 3f13f080434ac942b150679223d54f5ca91e0d52 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 22 Apr 2024 08:34:07 +0000 Subject: [PATCH 152/527] 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 30764b3..4eed594 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 March 29 +*lazy.nvim.txt* For Neovim >= 0.8.0 Last change: 2024 April 22 ============================================================================== Table of Contents *lazy.nvim-table-of-contents* From 24234f47a21ca690de829ea1159b553a733f3968 Mon Sep 17 00:00:00 2001 From: Iordanis Petkakis <12776461+dpetka2001@users.noreply.github.com> Date: Sat, 4 May 2024 11:01:20 +0300 Subject: [PATCH 153/527] fix(ui): add conditional `nvim_get_hl_by_name` for Neovim 0.8.0 (#1429) --- lua/lazy/view/float.lua | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lua/lazy/view/float.lua b/lua/lazy/view/float.lua index 6696c5e..0786193 100644 --- a/lua/lazy/view/float.lua +++ b/lua/lazy/view/float.lua @@ -131,8 +131,14 @@ function M:mount() self.buf = vim.api.nvim_create_buf(false, true) end - local normal = vim.api.nvim_get_hl(0, { name = "Normal" }) - local has_bg = normal and normal.bg ~= nil + local normal, has_bg + if vim.fn.has("nvim-0.9.0") == 0 then + normal = vim.api.nvim_get_hl_by_name("Normal", true) + has_bg = normal and normal.background ~= nil + else + normal = vim.api.nvim_get_hl(0, { name = "Normal" }) + has_bg = normal and normal.bg ~= nil + end if has_bg and self.opts.backdrop and self.opts.backdrop < 100 and vim.o.termguicolors then self.backdrop_buf = vim.api.nvim_create_buf(false, true) From d3974346b6cef2116c8e7b08423256a834cb7cbc Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 4 May 2024 08:01:54 +0000 Subject: [PATCH 154/527] 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 4eed594..3580d9f 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 April 22 +*lazy.nvim.txt* For Neovim >= 0.8.0 Last change: 2024 May 04 ============================================================================== Table of Contents *lazy.nvim-table-of-contents* From 40845063a2586b725d84d44e41fe2c8737751a30 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sun, 12 May 2024 09:43:30 +0200 Subject: [PATCH 155/527] fix(ui): hover now opens repo url when no diff with main. Fixes #1430 --- lua/lazy/view/init.lua | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lua/lazy/view/init.lua b/lua/lazy/view/init.lua index 5753f5b..8674b8f 100644 --- a/lua/lazy/view/init.lua +++ b/lua/lazy/view/init.lua @@ -211,13 +211,13 @@ function M:restore(opts) end function M:hover() - if self:diff({ browser = true }) then + if self:diff({ browser = true, hover = true }) then return end self:open_url("") end ----@param opts? {commit?:string, browser:boolean} +---@param opts? {commit?:string, browser:boolean, hover:boolean} function M:diff(opts) opts = opts or {} local plugin = self.render:get_plugin() @@ -231,6 +231,9 @@ function M:diff(opts) local info = assert(Git.info(plugin.dir)) local target = assert(Git.get_target(plugin)) diff = { from = info.commit, to = target.commit } + if opts.hover and diff.from == diff.to then + return + end end if not diff then From 76d321008f513f6b54e18d136d17d564edf187ef Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 12 May 2024 07:44:06 +0000 Subject: [PATCH 156/527] 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 3580d9f..0cb9fa3 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 04 +*lazy.nvim.txt* For Neovim >= 0.8.0 Last change: 2024 May 12 ============================================================================== Table of Contents *lazy.nvim-table-of-contents* From 2fcbcaf07ab79594f2ba25ebf6f4c47e250c33be Mon Sep 17 00:00:00 2001 From: Tristan Knight Date: Sun, 12 May 2024 08:50:06 +0100 Subject: [PATCH 157/527] fix(reload): strings in lua reload (#1439) --- lua/lazy/view/commands.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lua/lazy/view/commands.lua b/lua/lazy/view/commands.lua index a826827..1210917 100644 --- a/lua/lazy/view/commands.lua +++ b/lua/lazy/view/commands.lua @@ -56,6 +56,9 @@ M.commands = { end, reload = function(opts) for _, plugin in pairs(opts.plugins) do + if type(plugin) == "string" then + plugin = Config.plugins[plugin] + end Util.warn("Reloading **" .. plugin.name .. "**") require("lazy.core.loader").reload(plugin) end From bb0179139a5cd45779d667ae60e4e2fc8b0bed24 Mon Sep 17 00:00:00 2001 From: Markus Koller Date: Sun, 12 May 2024 09:52:21 +0200 Subject: [PATCH 158/527] docs: clarify default config implementation (#1407) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f7f709f..5465737 100644 --- a/README.md +++ b/README.md @@ -93,7 +93,7 @@ require("lazy").setup({ | **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)`. 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`. | +| **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. | | **branch** | `string?` | Branch of the repository | From 16510304045bf977fbf09216ef865f4f50ec5c8b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 12 May 2024 07:52:52 +0000 Subject: [PATCH 159/527] 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 0cb9fa3..40e7cf6 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -149,11 +149,11 @@ PLUGIN SPEC *lazy.nvim-lazy.nvim-plugin-spec* config fun(LazyPlugin, opts:table) or true config is executed when the plugin loads. The default implementation will automatically run - require(MAIN).setup(opts). 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. 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 From 758bb5de98b805acc5eeed8cdc8ac7f0bc4b0b86 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 12 May 2024 10:15:14 +0200 Subject: [PATCH 160/527] chore(main): release 10.20.4 (#1400) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- CHANGELOG.md | 11 +++++++++++ lua/lazy/core/config.lua | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 82b9efa..ec18539 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,16 @@ # Changelog +## [10.20.4](https://github.com/folke/lazy.nvim/compare/v10.20.3...v10.20.4) (2024-05-12) + + +### Bug Fixes + +* **heath:** vim.uv. Fixes [#1412](https://github.com/folke/lazy.nvim/issues/1412) ([481aed7](https://github.com/folke/lazy.nvim/commit/481aed70cc4d8e8a38463fd16edf81a23c153247)) +* **reload:** strings in lua reload ([#1439](https://github.com/folke/lazy.nvim/issues/1439)) ([2fcbcaf](https://github.com/folke/lazy.nvim/commit/2fcbcaf07ab79594f2ba25ebf6f4c47e250c33be)) +* **ui:** add conditional `nvim_get_hl_by_name` for Neovim 0.8.0 ([#1429](https://github.com/folke/lazy.nvim/issues/1429)) ([24234f4](https://github.com/folke/lazy.nvim/commit/24234f47a21ca690de829ea1159b553a733f3968)) +* **ui:** hover now opens repo url when no diff with main. Fixes [#1430](https://github.com/folke/lazy.nvim/issues/1430) ([4084506](https://github.com/folke/lazy.nvim/commit/40845063a2586b725d84d44e41fe2c8737751a30)) +* **ui:** set backdrop filetype to `lazy_backdrop`. Fixes [#1399](https://github.com/folke/lazy.nvim/issues/1399) ([31ddbea](https://github.com/folke/lazy.nvim/commit/31ddbea7c10b6920c9077b66c97951ca8682d5c8)) + ## [10.20.3](https://github.com/folke/lazy.nvim/compare/v10.20.2...v10.20.3) (2024-03-28) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 4c4c394..690e35a 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -180,7 +180,7 @@ M.defaults = { debug = false, } -M.version = "10.20.3" -- x-release-please-version +M.version = "10.20.4" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From d2a4ce22dc02aa08c176cd7692b5b0ed74e4722b Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Mon, 13 May 2024 08:34:33 +0200 Subject: [PATCH 161/527] fix(git): force `autocrlf=false`. Fixes #1055 --- lua/lazy/manage/task/git.lua | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lua/lazy/manage/task/git.lua b/lua/lazy/manage/task/git.lua index c838f30..8dd2536 100644 --- a/lua/lazy/manage/task/git.lua +++ b/lua/lazy/manage/task/git.lua @@ -84,6 +84,12 @@ M.clone = { args[#args + 1] = "--origin=origin" + -- If git config --global core.autocrlf is true on a Unix/Linux system, then the git clone + -- process will lead to files with CRLF endings. Vi / vim / neovim cannot handle this. + -- Force git to clone with core.autocrlf=false. + args[#args + 1] = "-c" + args[#args + 1] = "core.autocrlf=false" + args[#args + 1] = "--progress" if self.plugin.branch then From e44636a43376e8a1e851958f7e9cbe996751d59f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 13 May 2024 06:35:16 +0000 Subject: [PATCH 162/527] 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 40e7cf6..ba6387f 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 12 +*lazy.nvim.txt* For Neovim >= 0.8.0 Last change: 2024 May 13 ============================================================================== Table of Contents *lazy.nvim-table-of-contents* From d039aecddb414c2df9d295e9182ed217196a2c1c Mon Sep 17 00:00:00 2001 From: Sebastian Lyng Johansen Date: Thu, 16 May 2024 21:44:51 +0200 Subject: [PATCH 163/527] fix: use vim.iter():flatten():totable() over vim.tbl_flatten (#1454) --- lua/lazy/help.lua | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lua/lazy/help.lua b/lua/lazy/help.lua index aa7666e..a5fd741 100644 --- a/lua/lazy/help.lua +++ b/lua/lazy/help.lua @@ -9,9 +9,11 @@ function M.index(plugin) end ---@param file string - local files = vim.tbl_flatten(vim.tbl_map(function(file) + local tbl = vim.tbl_map(function(file) return vim.fn.expand(plugin.dir .. "/" .. file, false, true) - end, Config.options.readme.files)) + end, Config.options.readme.files) + + local files = vim.iter and vim.iter(tbl):flatten():totable() or vim.tbl_flatten(tbl) ---@type table local tags = {} From 05240b41548c4245a04d34ee54f789e824129991 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 16 May 2024 19:45:23 +0000 Subject: [PATCH 164/527] 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 ba6387f..fcaa7e9 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 13 +*lazy.nvim.txt* For Neovim >= 0.8.0 Last change: 2024 May 16 ============================================================================== Table of Contents *lazy.nvim-table-of-contents* From 2e04a0c02c17facd3772c382099215acbe72535b Mon Sep 17 00:00:00 2001 From: Kevin Traver Date: Sat, 18 May 2024 02:14:12 -0600 Subject: [PATCH 165/527] fix(checker): ignore dev plugins (#1384) --- lua/lazy/manage/checker.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/lazy/manage/checker.lua b/lua/lazy/manage/checker.lua index 803972e..8e03d9e 100644 --- a/lua/lazy/manage/checker.lua +++ b/lua/lazy/manage/checker.lua @@ -35,7 +35,7 @@ end function M.fast_check(opts) opts = opts or {} for _, plugin in pairs(Config.plugins) do - if not plugin.pin and plugin._.installed then + if not plugin.pin and not plugin.dev and plugin._.installed then plugin._.updates = nil local info = Git.info(plugin.dir) local ok, target = pcall(Git.get_target, plugin) From c717ab88ff47830845a1e422a1d6495c764fac1d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 18 May 2024 08:14:46 +0000 Subject: [PATCH 166/527] 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 fcaa7e9..462627b 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 16 +*lazy.nvim.txt* For Neovim >= 0.8.0 Last change: 2024 May 18 ============================================================================== Table of Contents *lazy.nvim-table-of-contents* From 5d29ffeaa0f2d91f1dfbc21943d19a11e59a6fc6 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 18 May 2024 13:23:53 +0200 Subject: [PATCH 167/527] style: favorite icon --- 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 690e35a..5aa61cb 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -59,6 +59,7 @@ M.defaults = { cmd = " ", config = "", event = " ", + favorite = " ", ft = " ", init = " ", import = " ", From 56a34a825b55e0e30cd9df0e055e428a13afd4aa Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sun, 19 May 2024 17:29:43 +0200 Subject: [PATCH 168/527] fix(help): get rid of any tbl_flatten or iter flatten code --- lua/lazy/help.lua | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/lua/lazy/help.lua b/lua/lazy/help.lua index a5fd741..46b47fd 100644 --- a/lua/lazy/help.lua +++ b/lua/lazy/help.lua @@ -8,12 +8,11 @@ function M.index(plugin) return {} end - ---@param file string - local tbl = vim.tbl_map(function(file) - return vim.fn.expand(plugin.dir .. "/" .. file, false, true) - end, Config.options.readme.files) + local files = {} - local files = vim.iter and vim.iter(tbl):flatten():totable() or vim.tbl_flatten(tbl) + for _, file in ipairs(Config.options.readme.files) do + vim.list_extend(files, vim.fn.expand(plugin.dir .. "/" .. file, false, true)) + end ---@type table local tags = {} From 0de782a6b0ffba599dbd332a4019d852564bf28c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 19 May 2024 15:30:17 +0000 Subject: [PATCH 169/527] 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 462627b..5ef9203 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 18 +*lazy.nvim.txt* For Neovim >= 0.8.0 Last change: 2024 May 19 ============================================================================== Table of Contents *lazy.nvim-table-of-contents* From 39de11a2fa7f4b91556631c49a673bf3e48bcc16 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Mon, 20 May 2024 21:15:03 +0200 Subject: [PATCH 170/527] fix(keys): properly re-create buffer-local mappings. Fixes #1448 --- lua/lazy/core/handler/keys.lua | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/lua/lazy/core/handler/keys.lua b/lua/lazy/core/handler/keys.lua index 382d732..1d4ada3 100644 --- a/lua/lazy/core/handler/keys.lua +++ b/lua/lazy/core/handler/keys.lua @@ -123,11 +123,6 @@ function M:_add(keys) Util.track() end - -- Create the real buffer-local mapping - if keys.ft then - self:_set(keys, buf) - end - if keys.mode:sub(-1) == "a" then lhs = lhs .. "" end @@ -162,19 +157,21 @@ function M:_add(keys) end end --- Delete a mapping and create the real global +-- Delete a mapping and create the real global/buffer-local -- mapping when needed ---@param keys LazyKeys function M:_del(keys) - pcall(vim.keymap.del, keys.mode, keys.lhs, { - -- NOTE: for buffer-local mappings, we only delete the mapping for the current buffer - -- So the mapping could still exist in other buffers - buffer = keys.ft and true or nil, - }) - -- make sure to create global mappings when needed - -- buffer-local mappings are managed by lazy - if not keys.ft then - self:_set(keys) + -- bufs will be all buffers of the filetype for a buffer-local mapping + -- OR `false` for a global mapping + local bufs = keys.ft + and vim.tbl_filter(function(buf) + return vim.bo[buf].filetype == keys.ft + end, vim.api.nvim_list_bufs()) + or { false } + + for _, buf in ipairs(bufs) do + pcall(vim.keymap.del, keys.mode, keys.lhs, { buffer = buf or nil }) + self:_set(keys, buf or nil) end end From 9895337d1f4c0cea1186d92148e3d80f6551eda8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 20 May 2024 19:15:40 +0000 Subject: [PATCH 171/527] 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 5ef9203..1bde778 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 19 +*lazy.nvim.txt* For Neovim >= 0.8.0 Last change: 2024 May 20 ============================================================================== Table of Contents *lazy.nvim-table-of-contents* From 82cf974e0939b3440c4470cbcd8e7869abfe480b Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Tue, 21 May 2024 22:10:49 +0200 Subject: [PATCH 172/527] fix(keys): properly deal with ft list for keys. Fixes #1448 --- lua/lazy/core/handler/keys.lua | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/lua/lazy/core/handler/keys.lua b/lua/lazy/core/handler/keys.lua index 1d4ada3..bafc205 100644 --- a/lua/lazy/core/handler/keys.lua +++ b/lua/lazy/core/handler/keys.lua @@ -163,11 +163,14 @@ end function M:_del(keys) -- bufs will be all buffers of the filetype for a buffer-local mapping -- OR `false` for a global mapping - local bufs = keys.ft - and vim.tbl_filter(function(buf) - return vim.bo[buf].filetype == keys.ft - end, vim.api.nvim_list_bufs()) - or { false } + local bufs = { false } + + if keys.ft then + local ft = type(keys.ft) == "string" and { keys.ft } or keys.ft --[[@as string[] ]] + bufs = vim.tbl_filter(function(buf) + return vim.tbl_contains(ft, vim.bo[buf].filetype) + end, vim.api.nvim_list_bufs()) + end for _, buf in ipairs(bufs) do pcall(vim.keymap.del, keys.mode, keys.lhs, { buffer = buf or nil }) From 8411fe946775d126348089950eacbcc6a38306ec Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 21 May 2024 20:11:25 +0000 Subject: [PATCH 173/527] 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 1bde778..a1b43c6 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 20 +*lazy.nvim.txt* For Neovim >= 0.8.0 Last change: 2024 May 21 ============================================================================== Table of Contents *lazy.nvim-table-of-contents* From 8f19915175395680808de529e4220da8dafc0759 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 22 May 2024 00:10:58 +0200 Subject: [PATCH 174/527] chore(main): release 10.20.5 (#1445) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- CHANGELOG.md | 12 ++++++++++++ lua/lazy/core/config.lua | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ec18539..1b97a4f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,17 @@ # Changelog +## [10.20.5](https://github.com/folke/lazy.nvim/compare/v10.20.4...v10.20.5) (2024-05-21) + + +### Bug Fixes + +* **checker:** ignore dev plugins ([#1384](https://github.com/folke/lazy.nvim/issues/1384)) ([2e04a0c](https://github.com/folke/lazy.nvim/commit/2e04a0c02c17facd3772c382099215acbe72535b)) +* **git:** force `autocrlf=false`. Fixes [#1055](https://github.com/folke/lazy.nvim/issues/1055) ([d2a4ce2](https://github.com/folke/lazy.nvim/commit/d2a4ce22dc02aa08c176cd7692b5b0ed74e4722b)) +* **help:** get rid of any tbl_flatten or iter flatten code ([56a34a8](https://github.com/folke/lazy.nvim/commit/56a34a825b55e0e30cd9df0e055e428a13afd4aa)) +* **keys:** properly deal with ft list for keys. Fixes [#1448](https://github.com/folke/lazy.nvim/issues/1448) ([82cf974](https://github.com/folke/lazy.nvim/commit/82cf974e0939b3440c4470cbcd8e7869abfe480b)) +* **keys:** properly re-create buffer-local mappings. Fixes [#1448](https://github.com/folke/lazy.nvim/issues/1448) ([39de11a](https://github.com/folke/lazy.nvim/commit/39de11a2fa7f4b91556631c49a673bf3e48bcc16)) +* use vim.iter():flatten():totable() over vim.tbl_flatten ([#1454](https://github.com/folke/lazy.nvim/issues/1454)) ([d039aec](https://github.com/folke/lazy.nvim/commit/d039aecddb414c2df9d295e9182ed217196a2c1c)) + ## [10.20.4](https://github.com/folke/lazy.nvim/compare/v10.20.3...v10.20.4) (2024-05-12) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index 5aa61cb..a964712 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -181,7 +181,7 @@ M.defaults = { debug = false, } -M.version = "10.20.4" -- x-release-please-version +M.version = "10.20.5" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 7667a73dee381c5fb7d538f6152aeb591e3f0372 Mon Sep 17 00:00:00 2001 From: Anshuman Medhi Date: Sun, 26 May 2024 16:40:08 +0800 Subject: [PATCH 175/527] feat: single-plugin keys in the lazy view in visual mode (#1476) Applies to all plugins contained in the range --- lua/lazy/view/float.lua | 5 +++-- lua/lazy/view/init.lua | 18 ++++++++++++++---- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/lua/lazy/view/float.lua b/lua/lazy/view/float.lua index 0786193..d57b384 100644 --- a/lua/lazy/view/float.lua +++ b/lua/lazy/view/float.lua @@ -251,8 +251,9 @@ end ---@param key string ---@param fn fun(self?) ---@param desc? string -function M:on_key(key, fn, desc) - vim.keymap.set("n", key, function() +---@param mode? string[] +function M:on_key(key, fn, desc,mode) + vim.keymap.set(mode or "n", key, function() fn(self) end, { nowait = true, diff --git a/lua/lazy/view/init.lua b/lua/lazy/view/init.lua index 8674b8f..2965bf3 100644 --- a/lua/lazy/view/init.lua +++ b/lua/lazy/view/init.lua @@ -297,11 +297,21 @@ function M:setup_modes() end if m.key_plugin and name ~= "restore" then self:on_key(m.key_plugin, function() - local plugin = self.render:get_plugin() - if plugin then - Commands.cmd(name, { plugins = { plugin } }) + vim.api.nvim_feedkeys(vim.keycode(""), "n", false) + local plugins = {} + if vim.api.nvim_get_mode().mode:lower() == "v" then + local f, t = vim.fn.line("."), vim.fn.line("v") + if f > t then f, t = t, f end + for i = f, t do + plugins[#plugins + 1] = self.render:get_plugin(i) + end + else + plugins[1] = self.render:get_plugin() end - end, m.desc_plugin) + if #plugins > 0 then + Commands.cmd(name, { plugins = plugins }) + end + end, m.desc_plugin, { "n", "x" }) end end end From 98210e2f82a0dc7e8469de882b6d2d8ab435a374 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 26 May 2024 08:40:48 +0000 Subject: [PATCH 176/527] 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 a1b43c6..e661c05 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 21 +*lazy.nvim.txt* For Neovim >= 0.8.0 Last change: 2024 May 26 ============================================================================== Table of Contents *lazy.nvim-table-of-contents* From ea7b9c3c3fd9026e1a5ae27950585df9a42ccd5b Mon Sep 17 00:00:00 2001 From: Christian Clason Date: Sun, 26 May 2024 15:21:58 +0200 Subject: [PATCH 177/527] fix(render): disable underline for diagnostics (#1478) Problem: On current Nvim nightlies, a regression in a `vim.highlight.range()` refactor makes underlines for diagnostics at end of line extend into the next line, leading to visual artifacts in the update view. Solution: Suppress underlines for diagnostics, as they are not wanted anyway. --- 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 5d7e197..a34456c 100644 --- a/lua/lazy/view/render.lua +++ b/lua/lazy/view/render.lua @@ -84,7 +84,7 @@ function M:update() diag.lnum = diag.row - 1 return diag end, self._diagnostics), - { signs = false, virtual_text = true } + { signs = false, virtual_text = true, underline = false } ) end From 9dde1f1bce44a8fd8cb885b5a8e8d47d8fd7b8c1 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sun, 26 May 2024 16:43:52 +0200 Subject: [PATCH 178/527] feat: added support for local spec files `.lazy.lua` --- README.md | 105 ++++++++++++++++++++------------------- lua/lazy/core/config.lua | 1 + lua/lazy/core/plugin.lua | 42 +++++++++++++--- 3 files changed, 89 insertions(+), 59 deletions(-) diff --git a/README.md b/README.md index 5465737..d3c1461 100644 --- a/README.md +++ b/README.md @@ -93,7 +93,7 @@ require("lazy").setup({ | **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`. | +| **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. | | **branch** | `string?` | Branch of the repository | @@ -307,6 +307,7 @@ return { }, -- 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, @@ -516,24 +517,24 @@ 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!!) | +| 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 | +| `: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 | @@ -784,40 +785,40 @@ To uninstall **lazy.nvim**, you need to remove the following files and directori -| 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 | +| 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 | diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index a964712..c95931c 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -16,6 +16,7 @@ M.defaults = { }, -- 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, diff --git a/lua/lazy/core/plugin.lua b/lua/lazy/core/plugin.lua index 64c93cd..7bae395 100644 --- a/lua/lazy/core/plugin.lua +++ b/lua/lazy/core/plugin.lua @@ -1,5 +1,4 @@ local Config = require("lazy.core.config") -local Handler = require("lazy.core.handler") local Util = require("lazy.core.util") ---@class LazyCorePlugin @@ -20,6 +19,7 @@ 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} @@ -399,10 +399,15 @@ function Spec:import(spec) ---@type string[] local modnames = {} - Util.lsmod(spec.import, function(modname) - modnames[#modnames + 1] = modname - end) - table.sort(modnames) + + if spec.import == M.LOCAL_SPEC then + modnames = { spec.import } + else + Util.lsmod(spec.import, function(modname) + modnames[#modnames + 1] = modname + end) + table.sort(modnames) + end for _, modname in ipairs(modnames) do imported = imported + 1 @@ -412,7 +417,12 @@ function Spec:import(spec) ---@diagnostic disable-next-line: no-unknown package.loaded[modname] = nil Util.try(function() - local mod = require(modname) + local mod = nil + if modname == M.LOCAL_SPEC then + mod = M.local_spec() + else + mod = require(modname) + end if type(mod) ~= "table" then self.importing = nil return self:error( @@ -533,12 +543,30 @@ function M.update_state() end end +function M.local_spec() + local filepath = vim.fn.fnamemodify(".lazy.lua", ":p") + local file = vim.secure.read(filepath) + if file then + return loadstring(file)() + end + return {} +end + function M.load() M.loading = true -- load specs Util.track("spec") Config.spec = Spec.new() - Config.spec:parse({ vim.deepcopy(Config.options.spec), { "folke/lazy.nvim" } }) + Config.spec:parse({ + vim.deepcopy(Config.options.spec), + { + import = ".lazy.lua", + cond = function() + return Config.options.local_spec and vim.fn.filereadable(M.LOCAL_SPEC) == 1 + end, + }, + { "folke/lazy.nvim" }, + }) -- override some lazy props local lazy = Config.spec.plugins["lazy.nvim"] From a55d275ecafedf47eb917c8848a1645bb3e5200e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 26 May 2024 14:44:42 +0000 Subject: [PATCH 179/527] chore(build): auto-generate vimdoc --- doc/lazy.nvim.txt | 121 ++++++++++++++++++++-------------------------- 1 file changed, 52 insertions(+), 69 deletions(-) diff --git a/doc/lazy.nvim.txt b/doc/lazy.nvim.txt index e661c05..9cd480d 100644 --- a/doc/lazy.nvim.txt +++ b/doc/lazy.nvim.txt @@ -411,6 +411,7 @@ CONFIGURATION *lazy.nvim-lazy.nvim-configuration* }, -- 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, @@ -615,17 +616,14 @@ 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 @@ -639,36 +637,24 @@ 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: @@ -924,77 +910,74 @@ HIGHLIGHT GROUPS *lazy.nvim-lazy.nvim-highlight-groups* Click to see all highlight groups ~ - ----------------------------------------------------------------------- - Highlight Group Default Group Description - ----------------------- ----------------------- ----------------------- - LazyButton CursorLine + --------------------------------------------------------------------------------- + Highlight Group Default Group Description + ------------------- ------------------------ ------------------------------------ + LazyButton CursorLine - LazyButtonActive Visual + LazyButtonActive Visual - LazyComment Comment + LazyComment Comment - LazyCommit @variable.builtin commit ref + LazyCommit _@variable.builtin_ commitref - LazyCommitIssue Number + LazyCommitIssue Number - LazyCommitScope Italic conventional commit - scope + LazyCommitScope Italic conventional commit scope - LazyCommitType Title conventional commit - type + LazyCommitType Title conventional commit type - LazyDimmed Conceal property + LazyDimmed Conceal property - LazyDir @markup.link directory + LazyDir _@markup.link_ directory - LazyH1 IncSearch home button + LazyH1 IncSearch homebutton - LazyH2 Bold titles + LazyH2 Bold titles - LazyLocal Constant + LazyLocal Constant - LazyNoCond DiagnosticWarn unloaded icon for a - plugin where cond() was - false + LazyNoCond DiagnosticWarn unloaded icon for a plugin where + cond() was false - LazyNormal NormalFloat + LazyNormal NormalFloat - LazyProgressDone Constant progress bar done + LazyProgressDone Constant progress bar done - LazyProgressTodo LineNr progress bar todo + LazyProgressTodo LineNr progress bar todo - LazyProp Conceal property + LazyProp Conceal property - LazyReasonCmd Operator + LazyReasonCmd Operator - LazyReasonEvent Constant + LazyReasonEvent Constant - LazyReasonFt Character + LazyReasonFt Character - LazyReasonImport Identifier + LazyReasonImport Identifier - LazyReasonKeys Statement + LazyReasonKeys Statement - LazyReasonPlugin Special + LazyReasonPlugin Special - LazyReasonRequire @variable.parameter + LazyReasonRequire _@variable.parameter_ - LazyReasonRuntime @macro + LazyReasonRuntime _@macro_ - LazyReasonSource Character + LazyReasonSource Character - LazyReasonStart @variable.member + LazyReasonStart _@variable.member_ - LazySpecial @punctuation.special + LazySpecial _@punctuation.special_ - LazyTaskError ErrorMsg task errors + LazyTaskError ErrorMsg taskerrors - LazyTaskOutput MsgArea task output + LazyTaskOutput MsgArea task output - LazyUrl @markup.link url + LazyUrl _@markup.link_ url - LazyValue @string value of a property - ----------------------------------------------------------------------- + LazyValue _@string_ valueof a property + --------------------------------------------------------------------------------- PLUGIN AUTHORS *lazy.nvim-lazy.nvim-plugin-authors* From 24fa2a97085ca8a7220b5b078916f81e316036fd Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 26 May 2024 16:59:48 +0200 Subject: [PATCH 180/527] chore(main): release 10.21.0 (#1477) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- CHANGELOG.md | 13 +++++++++++++ lua/lazy/core/config.lua | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1b97a4f..8474f5c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [10.21.0](https://github.com/folke/lazy.nvim/compare/v10.20.5...v10.21.0) (2024-05-26) + + +### Features + +* added support for local spec files `.lazy.lua` ([9dde1f1](https://github.com/folke/lazy.nvim/commit/9dde1f1bce44a8fd8cb885b5a8e8d47d8fd7b8c1)) +* single-plugin keys in the lazy view in visual mode ([#1476](https://github.com/folke/lazy.nvim/issues/1476)) ([7667a73](https://github.com/folke/lazy.nvim/commit/7667a73dee381c5fb7d538f6152aeb591e3f0372)) + + +### Bug Fixes + +* **render:** disable underline for diagnostics ([#1478](https://github.com/folke/lazy.nvim/issues/1478)) ([ea7b9c3](https://github.com/folke/lazy.nvim/commit/ea7b9c3c3fd9026e1a5ae27950585df9a42ccd5b)) + ## [10.20.5](https://github.com/folke/lazy.nvim/compare/v10.20.4...v10.20.5) (2024-05-21) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index c95931c..b3efdfa 100644 --- a/lua/lazy/core/config.lua +++ b/lua/lazy/core/config.lua @@ -182,7 +182,7 @@ M.defaults = { debug = false, } -M.version = "10.20.5" -- x-release-please-version +M.version = "10.21.0" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 917dfbe2a9b606443639d1e809f2e4561a6dd654 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Fri, 31 May 2024 13:55:54 +0200 Subject: [PATCH 181/527] fix(view): backward compat for older Neovim versions. Fixes #1489 --- lua/lazy/view/init.lua | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lua/lazy/view/init.lua b/lua/lazy/view/init.lua index 2965bf3..eb853b5 100644 --- a/lua/lazy/view/init.lua +++ b/lua/lazy/view/init.lua @@ -297,11 +297,14 @@ function M:setup_modes() end if m.key_plugin and name ~= "restore" then self:on_key(m.key_plugin, function() - vim.api.nvim_feedkeys(vim.keycode(""), "n", false) + local esc = vim.api.nvim_replace_termcodes("", true, true, true) + vim.api.nvim_feedkeys(esc, "n", false) local plugins = {} if vim.api.nvim_get_mode().mode:lower() == "v" then local f, t = vim.fn.line("."), vim.fn.line("v") - if f > t then f, t = t, f end + if f > t then + f, t = t, f + end for i = f, t do plugins[#plugins + 1] = self.render:get_plugin(i) end From 52244a0c1d620c400d382b0a433969c5624d82f0 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 31 May 2024 11:56:30 +0000 Subject: [PATCH 182/527] 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 9cd480d..19a09cd 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 26 +*lazy.nvim.txt* For Neovim >= 0.8.0 Last change: 2024 May 31 ============================================================================== Table of Contents *lazy.nvim-table-of-contents* From 4a8f813d8134b7c3e2c70b9ea4407f613e85bd97 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 31 May 2024 14:14:25 +0200 Subject: [PATCH 183/527] chore(main): release 10.21.1 (#1490) 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 8474f5c..15f52e9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [10.21.1](https://github.com/folke/lazy.nvim/compare/v10.21.0...v10.21.1) (2024-05-31) + + +### Bug Fixes + +* **view:** backward compat for older Neovim versions. Fixes [#1489](https://github.com/folke/lazy.nvim/issues/1489) ([917dfbe](https://github.com/folke/lazy.nvim/commit/917dfbe2a9b606443639d1e809f2e4561a6dd654)) + ## [10.21.0](https://github.com/folke/lazy.nvim/compare/v10.20.5...v10.21.0) (2024-05-26) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index b3efdfa..f2d38b6 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.0" -- x-release-please-version +M.version = "10.21.1" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From b77aaa08cb5b178ed8662765caa41c70ff254a4c Mon Sep 17 00:00:00 2001 From: Anshuman Medhi Date: Fri, 31 May 2024 22:28:33 +0800 Subject: [PATCH 184/527] fix(ui): deduplicate plugins when selecting multiple (#1491) --- lua/lazy/view/init.lua | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lua/lazy/view/init.lua b/lua/lazy/view/init.lua index eb853b5..7d349d3 100644 --- a/lua/lazy/view/init.lua +++ b/lua/lazy/view/init.lua @@ -306,8 +306,12 @@ function M:setup_modes() f, t = t, f end for i = f, t do - plugins[#plugins + 1] = self.render:get_plugin(i) + local plugin = self.render:get_plugin(i) + if plugin then + plugins[plugin.name] = plugin + end end + plugins = vim.tbl_values(plugins) else plugins[1] = self.render:get_plugin() end From eab487c2520f0fe9e54eb5e3ea0606e20512492e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 31 May 2024 20:41:13 +0200 Subject: [PATCH 185/527] chore(main): release 10.21.2 (#1492) 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 15f52e9..c67f57a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [10.21.2](https://github.com/folke/lazy.nvim/compare/v10.21.1...v10.21.2) (2024-05-31) + + +### Bug Fixes + +* **ui:** deduplicate plugins when selecting multiple ([#1491](https://github.com/folke/lazy.nvim/issues/1491)) ([b77aaa0](https://github.com/folke/lazy.nvim/commit/b77aaa08cb5b178ed8662765caa41c70ff254a4c)) + ## [10.21.1](https://github.com/folke/lazy.nvim/compare/v10.21.0...v10.21.1) (2024-05-31) diff --git a/lua/lazy/core/config.lua b/lua/lazy/core/config.lua index f2d38b6..50ca7e4 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.1" -- x-release-please-version +M.version = "10.21.2" -- x-release-please-version M.ns = vim.api.nvim_create_namespace("lazy") From 6a141a6dbb6f6b5495ef6716c0dce898546d7b2c Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 1 Jun 2024 18:20:39 +0200 Subject: [PATCH 186/527] 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 187/527] 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 188/527] 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 189/527] 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 190/527] 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 191/527] 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 192/527] 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 193/527] 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 194/527] 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 195/527] 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 196/527] 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 197/527] 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 198/527] 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 199/527] 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 200/527] 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 201/527] 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 202/527] 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 203/527] 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 204/527] 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 205/527] 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 206/527] 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 207/527] 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 208/527] 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 209/527] 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 210/527] 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 211/527] 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 212/527] 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 213/527] 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 214/527] 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 215/527] 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 216/527] 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 217/527] 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 218/527] 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 219/527] 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 220/527] 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 221/527] 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 222/527] 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 223/527] 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 224/527] 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 225/527] 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 226/527] 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 227/527] 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 228/527] 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 229/527] 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 230/527] 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 231/527] 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 232/527] 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 233/527] 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 234/527] 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 235/527] 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 236/527] 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 237/527] 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 238/527] 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 239/527] 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 240/527] 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 241/527] 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 242/527] 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 243/527] 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 244/527] 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 245/527] 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 246/527] 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 247/527] 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 248/527] 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 249/527] 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 250/527] 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 251/527] 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 252/527] 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 253/527] 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 254/527] 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 255/527] 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 256/527] 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 257/527] 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 258/527] 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 259/527] 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 260/527] 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 261/527] 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 262/527] 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 263/527] 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 264/527] 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 265/527] 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 266/527] 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 267/527] 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 268/527] 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 269/527] 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 270/527] 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 271/527] 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 272/527] 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 273/527] 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 274/527] 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 275/527] 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 276/527] 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 277/527] 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 278/527] 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 279/527] 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 280/527] 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 281/527] 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 282/527] 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 283/527] 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 284/527] 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 285/527] 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 286/527] 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 287/527] 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 288/527] 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 289/527] 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 290/527] 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 291/527] 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 292/527] 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 293/527] 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 294/527] 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 295/527] 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 296/527] 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 297/527] 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 298/527] 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 299/527] 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 300/527] 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 301/527] 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 302/527] 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 303/527] 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 304/527] 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 305/527] 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 306/527] 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 307/527] 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 308/527] 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 309/527] 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 310/527] 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 311/527] 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 312/527] 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 313/527] 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 314/527] 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 315/527] 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 316/527] 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 317/527] 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 318/527] 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 319/527] 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 320/527] 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 321/527] 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 322/527] 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 323/527] 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 324/527] 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 325/527] 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 326/527] 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 327/527] 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 328/527] 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 329/527] 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 330/527] 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 331/527] 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 332/527] 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 333/527] 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 334/527] 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 335/527] 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 336/527] 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 337/527] 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 338/527] 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 339/527] 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 340/527] 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 341/527] 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 342/527] 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 343/527] 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 344/527] 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 345/527] 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 346/527] 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 347/527] 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 348/527] 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 349/527] 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 350/527] 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 351/527] 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 352/527] 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 353/527] 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 354/527] 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 355/527] 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 356/527] 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 357/527] 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 358/527] 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 359/527] 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 360/527] 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 361/527] 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 362/527] 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 363/527] 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 364/527] 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 365/527] 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 366/527] 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 367/527] 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 368/527] 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 369/527] 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 370/527] 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 371/527] 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 372/527] 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 373/527] 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 374/527] 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 375/527] 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 376/527] 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 377/527] 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 378/527] 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 379/527] 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 380/527] 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 381/527] 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 382/527] 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 383/527] 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 384/527] 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 385/527] 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 386/527] 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 387/527] 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 388/527] 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 389/527] 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 390/527] 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 391/527] 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 392/527] 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 393/527] 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 394/527] 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 395/527] 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 396/527] 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 397/527] 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 398/527] 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 399/527] 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 400/527] 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 401/527] 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 402/527] 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 403/527] 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 404/527] 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 405/527] 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 406/527] 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 407/527] 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 408/527] 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 409/527] 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 410/527] 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 411/527] 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 412/527] 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 413/527] 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 414/527] 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 415/527] 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 416/527] 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 417/527] 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 418/527] 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 419/527] 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 420/527] 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 421/527] 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 422/527] 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 423/527] 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 424/527] 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 425/527] 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 426/527] 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 427/527] 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 428/527] 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 429/527] 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 430/527] 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 431/527] 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 432/527] 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 433/527] 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 434/527] 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 435/527] 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 436/527] 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 437/527] 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 438/527] 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 439/527] 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 440/527] 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 441/527] 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 442/527] 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 443/527] 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 444/527] 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 445/527] 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 446/527] 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 447/527] 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 448/527] 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 449/527] 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 450/527] 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 451/527] 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 452/527] 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 453/527] 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 454/527] 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 455/527] 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 456/527] 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 457/527] 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 458/527] 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 459/527] 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 460/527] 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 461/527] 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 462/527] 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 463/527] 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 464/527] 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 465/527] 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 466/527] 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 467/527] 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 468/527] 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 469/527] 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 470/527] 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 471/527] 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 472/527] 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 473/527] 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 474/527] 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 475/527] 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 476/527] 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 477/527] 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 478/527] 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 479/527] 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 480/527] 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 481/527] 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 482/527] 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 483/527] 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 484/527] 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 485/527] 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 486/527] 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 487/527] 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 488/527] 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 489/527] 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 490/527] 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 491/527] 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 492/527] 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 493/527] 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 494/527] 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 495/527] 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 496/527] 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 497/527] 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 498/527] 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 499/527] 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 500/527] 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 501/527] 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 502/527] 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 503/527] 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 504/527] 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 505/527] 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 506/527] 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 507/527] 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 508/527] 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 509/527] 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 510/527] 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 511/527] 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 512/527] 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 513/527] 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 514/527] 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 515/527] 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 516/527] 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 517/527] 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 518/527] 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 519/527] 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 520/527] 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 521/527] 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 522/527] 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 523/527] 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 524/527] 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 525/527] 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 526/527] 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 527/527] 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")