lualine.nvim/lua/lualine/utils/fn_store.lua

39 lines
802 B
Lua

local M = {}
local fns = {}
---Store fn with id in fns so it can be later called
---@param id integer component id (for now we are only doing one fn per component)
---@param fn function the actual function to store.
---@return number same id that was provided.
function M.register_fn(id, fn)
vim.validate {
id = { id, 'n' },
fn = { fn, 'f' },
}
fns[id] = fn
return id
end
---Get the function with id
---@param id number id of the fn to retrieve
---@return function
function M.get_fn(id)
vim.validate { id = { id, 'n' } }
return fns[id] or function() end
end
---Call the function of id with args
---@param id number
---@param ... any
---@return any
function M.call_fn(id, ...)
return M.get_fn(id)(...)
end
---Clear the fns table
function M.clear_fns()
fns = {}
end
return M