refactor(plugin): split mpv plugin into modules and trim startup overhead

This commit is contained in:
2026-02-27 21:22:44 -08:00
parent c5d4a67f39
commit 1c70e486fe
20 changed files with 1154 additions and 1886 deletions

View File

@@ -0,0 +1,74 @@
local M = {}
function M.init()
local input = require("mp.input")
local mp = require("mp")
local msg = require("mp.msg")
local options_lib = require("mp.options")
local utils = require("mp.utils")
local options_helper = require("options")
local environment = require("environment").create({ mp = mp })
local opts = options_helper.load(options_lib, environment.default_socket_path())
local state = require("state").new()
local ctx = {
input = input,
mp = mp,
msg = msg,
utils = utils,
opts = opts,
state = state,
options_helper = options_helper,
environment = environment,
}
local instances = {}
local function lazy_instance(key, factory)
if instances[key] == nil then
instances[key] = factory()
end
return instances[key]
end
local function make_lazy_proxy(key, factory)
return setmetatable({}, {
__index = function(_, member)
return lazy_instance(key, factory)[member]
end,
})
end
ctx.log = make_lazy_proxy("log", function()
return require("log").create(ctx)
end)
ctx.binary = make_lazy_proxy("binary", function()
return require("binary").create(ctx)
end)
ctx.aniskip = make_lazy_proxy("aniskip", function()
return require("aniskip").create(ctx)
end)
ctx.hover = make_lazy_proxy("hover", function()
return require("hover").create(ctx)
end)
ctx.process = make_lazy_proxy("process", function()
return require("process").create(ctx)
end)
ctx.ui = make_lazy_proxy("ui", function()
return require("ui").create(ctx)
end)
ctx.messages = make_lazy_proxy("messages", function()
return require("messages").create(ctx)
end)
ctx.lifecycle = make_lazy_proxy("lifecycle", function()
return require("lifecycle").create(ctx)
end)
ctx.ui.register_keybindings()
ctx.messages.register_script_messages()
ctx.lifecycle.register_lifecycle_hooks()
ctx.log.subminer_log("info", "lifecycle", "SubMiner plugin loaded")
end
return M