refactor: improve buffer system
This commit is contained in:
+21
-5
@@ -2,6 +2,10 @@
|
||||
|
||||
local M = {}
|
||||
|
||||
local buffer_list = {
|
||||
'test',
|
||||
}
|
||||
|
||||
local buffers = {}
|
||||
|
||||
function M.setup()
|
||||
@@ -10,11 +14,11 @@ end
|
||||
|
||||
-- should return created chai buffer
|
||||
local function resolve_buffer_path(path)
|
||||
if string.match(path, '^chai://test/?$') then
|
||||
local buffer = vim.deepcopy(require('chai.buffers.test'))
|
||||
buffer.args = {}
|
||||
|
||||
return buffer
|
||||
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
|
||||
@@ -29,6 +33,9 @@ function M.create_buffer(buffer)
|
||||
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
|
||||
@@ -36,18 +43,27 @@ function M.destroy_buffer(buffer)
|
||||
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
|
||||
|
||||
@@ -1,8 +1,18 @@
|
||||
local M = {}
|
||||
|
||||
function M.init(vim_buffer)
|
||||
local Buffer = {}
|
||||
|
||||
function Buffer.init(vim_buffer)
|
||||
vim.api.nvim_buf_set_lines(vim_buffer, 0, -1, false, { "press q to exit" })
|
||||
|
||||
local provider_list = { "Providers:" }
|
||||
|
||||
for key, value in pairs(require('chai.config').options.providers) do
|
||||
table.insert(provider_list, key .. " " .. value.url)
|
||||
end
|
||||
|
||||
vim.api.nvim_buf_set_lines(vim_buffer, 3, -1, false, provider_list)
|
||||
|
||||
vim.keymap.set({ "n", "x" }, "q", function()
|
||||
vim.api.nvim_buf_delete(vim_buffer, { force = true })
|
||||
end, { buffer = vim_buffer })
|
||||
@@ -11,4 +21,14 @@ function M.init(vim_buffer)
|
||||
vim.bo[vim_buffer].modified = false
|
||||
end
|
||||
|
||||
function M.check(path)
|
||||
if string.match(path, '^chai://test/?$') then
|
||||
local buffer = vim.deepcopy(Buffer)
|
||||
buffer.args = {}
|
||||
|
||||
return buffer
|
||||
end
|
||||
return nil
|
||||
end
|
||||
|
||||
return M
|
||||
|
||||
Reference in New Issue
Block a user