73 lines
1.5 KiB
Lua
73 lines
1.5 KiB
Lua
-- buffers API, loads buffers from ./buffers/*.lua
|
|
|
|
local M = {}
|
|
|
|
local buffer_list = {
|
|
'test',
|
|
}
|
|
|
|
local buffers = {}
|
|
|
|
function M.setup()
|
|
-- Init stuff
|
|
end
|
|
|
|
-- should return created chai buffer
|
|
local function resolve_buffer_path(path)
|
|
for _, value in ipairs(buffer_list) do
|
|
local buf = require('chai.buffers.' .. value).check(path)
|
|
if buf ~= nil then
|
|
return buf
|
|
end
|
|
end
|
|
|
|
-- user is idiot imbecyle etc
|
|
error("Invalid path " .. path)
|
|
end
|
|
|
|
function M.create_buffer(buffer)
|
|
buffers[buffer] = resolve_buffer_path(vim.api.nvim_buf_get_name(0))
|
|
if type(buffers[buffer].init) == 'function' then
|
|
buffers[buffer].init(buffer)
|
|
end
|
|
end
|
|
|
|
function M.destroy_buffer(buffer)
|
|
if buffers[buffer] == nil then
|
|
return
|
|
end
|
|
if type(buffers[buffer].destroy) == 'function' then
|
|
buffers[buffer].destroy(buffer)
|
|
end
|
|
buffers[buffer] = nil
|
|
end
|
|
|
|
function M.on_hide(buffer)
|
|
if buffers[buffer] == nil then
|
|
return
|
|
end
|
|
if type(buffers[buffer].on_hide) == 'function' then
|
|
buffers[buffer].on_hide(buffer)
|
|
end
|
|
end
|
|
|
|
function M.on_enter(buffer)
|
|
if buffers[buffer] == nil then
|
|
return
|
|
end
|
|
if type(buffers[buffer].on_enter) == 'function' then
|
|
buffers[buffer].on_enter(buffer)
|
|
end
|
|
end
|
|
|
|
function M.on_write(buffer)
|
|
if buffers[buffer] == nil then
|
|
return
|
|
end
|
|
if type(buffers[buffer].on_write) == 'function' then
|
|
buffers[buffer].on_write(buffer)
|
|
end
|
|
end
|
|
|
|
return M
|