local tbl = {} function tbl.apply_defaults(original, defaults) if original == nil then original = {} end original = vim.deepcopy(original) for k, v in pairs(defaults) do if original[k] == nil then original[k] = v end end return original end function tbl.pack(...) return { n = select("#", ...), ... } end function tbl.unpack(t, i, j) return unpack(t, i or 1, j or t.n or #t) end ---Freeze a table. A frozen table is not able to be modified. ---http://lua-users.org/wiki/ReadOnlyTables ---@param t table ---@return table function tbl.freeze(t) return setmetatable({}, { __index = t, __newindex = function() error "Attempt to modify frozen table" end, }) end return tbl