diff --git a/lua/chai/buffers.lua b/lua/chai/buffers.lua index 0c753f5..fdd4a31 100644 --- a/lua/chai/buffers.lua +++ b/lua/chai/buffers.lua @@ -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 diff --git a/lua/chai/buffers/test.lua b/lua/chai/buffers/test.lua index d7c572f..ec72042 100644 --- a/lua/chai/buffers/test.lua +++ b/lua/chai/buffers/test.lua @@ -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