Skip to content

Commit 53a5847

Browse files
committed
perf(plugin): lazily require modules used by user command
1 parent 9c7d166 commit 53a5847

1 file changed

Lines changed: 18 additions & 3 deletions

File tree

plugin/please.lua

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,20 @@ if vim.g.loaded_please then
88
return
99
end
1010

11-
local please = require('please')
12-
local logging = require('please.logging')
11+
local require_on_index = require
12+
13+
---@param modname string
14+
---@return unknown
15+
function require_on_index(modname)
16+
return setmetatable({}, {
17+
__index = function(_, k)
18+
return require(modname)[k]
19+
end,
20+
})
21+
end
22+
23+
local please = require_on_index('please')
24+
local logging = require_on_index('please.logging')
1325

1426
vim.filetype.add({
1527
extension = {
@@ -92,7 +104,10 @@ end, {
92104
-- If there's only two words in the command line, then we're completing the command name. i.e. If cmd_line looks
93105
-- like 'Please te'.
94106
if #cmd_line_words == 2 then
95-
return complete_arg(arg_lead, vim.tbl_keys(please))
107+
-- Lazily required please module defined above is only required on index. Require it here since vim.tbl_keys will
108+
-- not trigger this.
109+
local cmd_names = vim.tbl_keys(require('please'))
110+
return complete_arg(arg_lead, cmd_names)
96111
end
97112

98113
-- cmd_line looks like 'Please test ...'

0 commit comments

Comments
 (0)