dotfiles/.config/nvim/tree.nvim/lua/tree/custom.lua

62 lines
1.2 KiB
Lua
Raw Normal View History

2021-11-13 19:24:20 +01:00
local M = {}
function M.get()
if not M.custom then
M.custom = {
column = {},
option = {},
source = {},
}
end
return M.custom
end
-- use name:value or dict extend dest table
local function set(dest, name_or_dict, value)
if type(name_or_dict) == 'table' then
dest = vim.tbl_extend('force', dest, name_or_dict)
else
dest[name_or_dict] = value
end
return dest
end
function M.column(column_name, name_or_dict, ...)
local custom = M.get().column
for i, key in ipairs(vim.split(column_name, '%s*,%s*')) do
if not custom[key] then
custom[key] = {}
end
custom[key] = set(custom[key], name_or_dict, ...)
end
end
function M.option(buffer_name, name_or_dict, ...)
local custom = M.get().option
for i, key in ipairs(vim.split(buffer_name, '%s*,%s*')) do
if not custom[key] then
custom[key] = {}
end
custom[key] = set(custom[key], name_or_dict, ...)
end
end
function M.source(source_name, name_or_dict, ...)
local custom = M.get().source
for i, key in ipairs(vim.fn.split(source_name, [[\s*,\s*]])) do
if not custom[key] then
custom[key] = {}
end
custom[key] = set(custom[key], name_or_dict, ...)
end
end
if _TEST then
M._set = set
end
return M