diff options
| author | William Boman <william@redwill.se> | 2022-07-22 14:06:39 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-07-22 12:06:39 +0000 |
| commit | 09f6e0bb3390a290bf2168c849bc8fb4b3a77af1 (patch) | |
| tree | 2eb9fd9916cee797148d780a0b05fb9f8fe36612 /lua | |
| parent | docs: single quotes for vim-plug (#112) (diff) | |
| download | mason-09f6e0bb3390a290bf2168c849bc8fb4b3a77af1.tar mason-09f6e0bb3390a290bf2168c849bc8fb4b3a77af1.tar.gz mason-09f6e0bb3390a290bf2168c849bc8fb4b3a77af1.tar.bz2 mason-09f6e0bb3390a290bf2168c849bc8fb4b3a77af1.tar.lz mason-09f6e0bb3390a290bf2168c849bc8fb4b3a77af1.tar.xz mason-09f6e0bb3390a290bf2168c849bc8fb4b3a77af1.tar.zst mason-09f6e0bb3390a290bf2168c849bc8fb4b3a77af1.zip | |
feat: minimize modules required by .setup(), lazily require functional modules (#113)
Diffstat (limited to 'lua')
| -rw-r--r-- | lua/mason-core/functional/init.lua | 28 | ||||
| -rw-r--r-- | lua/mason/api/command.lua | 2 |
2 files changed, 20 insertions, 10 deletions
diff --git a/lua/mason-core/functional/init.lua b/lua/mason-core/functional/init.lua index 97865f05..8d17a572 100644 --- a/lua/mason-core/functional/init.lua +++ b/lua/mason-core/functional/init.lua @@ -1,13 +1,23 @@ local _ = {} +local function lazy_require(module) + return setmetatable({}, { + __index = function(m, k) + return function(...) + return require(module)[k](...) + end + end, + }) +end + -- data -local data = require "mason-core.functional.data" +local data = lazy_require "mason-core.functional.data" _.table_pack = data.table_pack _.enum = data.enum _.set_of = data.set_of -- function -local fun = require "mason-core.functional.function" +local fun = lazy_require "mason-core.functional.function" _.curryN = fun.curryN _.compose = fun.compose _.partial = fun.partial @@ -19,7 +29,7 @@ _.memoize = fun.memoize _.lazy = fun.lazy -- list -local list = require "mason-core.functional.list" +local list = lazy_require "mason-core.functional.list" _.reverse = list.reverse _.list_not_nil = list.list_not_nil _.list_copy = list.list_copy @@ -42,13 +52,13 @@ _.uniq_by = list.uniq_by _.join = list.join -- relation -local relation = require "mason-core.functional.relation" +local relation = lazy_require "mason-core.functional.relation" _.equals = relation.equals _.prop_eq = relation.prop_eq _.prop_satisfies = relation.prop_satisfies -- logic -local logic = require "mason-core.functional.logic" +local logic = lazy_require "mason-core.functional.logic" _.all_pass = logic.all_pass _.any_pass = logic.any_pass _.if_else = logic.if_else @@ -57,7 +67,7 @@ _.complement = logic.complement _.cond = logic.cond -- number -local number = require "mason-core.functional.number" +local number = lazy_require "mason-core.functional.number" _.negate = number.negate _.gt = number.gt _.gte = number.gte @@ -67,7 +77,7 @@ _.inc = number.inc _.dec = number.dec -- string -local string = require "mason-core.functional.string" +local string = lazy_require "mason-core.functional.string" _.matches = string.matches _.format = string.format _.split = string.split @@ -77,7 +87,7 @@ _.dedent = string.dedent _.starts_with = string.starts_with -- table -local tbl = require "mason-core.functional.table" +local tbl = lazy_require "mason-core.functional.table" _.prop = tbl.prop _.pick = tbl.pick _.keys = tbl.keys @@ -86,7 +96,7 @@ _.to_pairs = tbl.to_pairs _.invert = tbl.invert -- type -local typ = require "mason-core.functional.type" +local typ = lazy_require "mason-core.functional.type" _.is_nil = typ.is_nil _.is = typ.is diff --git a/lua/mason/api/command.lua b/lua/mason/api/command.lua index 608740e9..5ffd56be 100644 --- a/lua/mason/api/command.lua +++ b/lua/mason/api/command.lua @@ -1,4 +1,3 @@ -local notify = require "mason-core.notify" local _ = require "mason-core.functional" local function Mason() @@ -12,6 +11,7 @@ vim.api.nvim_create_user_command("Mason", Mason, { -- This is needed because neovim doesn't do any validation of command args when using custom completion (I think?) local filter_valid_packages = _.filter(function(pkg_specifier) + local notify = require "mason-core.notify" local Package = require "mason-core.package" local registry = require "mason-registry" local package_name = Package.Parse(pkg_specifier) |
