Merge Foundation #2
@@ -0,0 +1,55 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
local group = vim.api.nvim_create_augroup('ChaiAutocmds', { clear = true })
|
||||||
|
|
||||||
|
local buffers = require('chai.buffers')
|
||||||
|
|
||||||
|
local function buffer_handling_init()
|
||||||
|
local create_autocmd = vim.api.nvim_create_autocmd
|
||||||
|
|
||||||
|
create_autocmd('BufEnter', {
|
||||||
|
group = 'ChaiAutocmds',
|
||||||
|
pattern = { 'chai://*' },
|
||||||
|
callback = function (args)
|
||||||
|
buffers.on_enter(args.buf)
|
||||||
|
end
|
||||||
|
})
|
||||||
|
|
||||||
|
create_autocmd({ 'BufDelete' }, {
|
||||||
|
group = 'ChaiAutocmds',
|
||||||
|
pattern = { 'chai://*' },
|
||||||
|
callback = function (args)
|
||||||
|
buffers.on_hide(args.buf)
|
||||||
|
end
|
||||||
|
})
|
||||||
|
|
||||||
|
create_autocmd({ 'BufWipeout' }, {
|
||||||
|
group = 'ChaiAutocmds',
|
||||||
|
pattern = { 'chai://*' },
|
||||||
|
callback = function (args)
|
||||||
|
buffers.destroy_buffer(args.buf)
|
||||||
|
end
|
||||||
|
})
|
||||||
|
|
||||||
|
create_autocmd('BufReadCmd', {
|
||||||
|
group = 'ChaiAutocmds',
|
||||||
|
pattern = { 'chai://*' },
|
||||||
|
callback = function (args)
|
||||||
|
buffers.create_buffer(args.buf)
|
||||||
|
end
|
||||||
|
})
|
||||||
|
|
||||||
|
create_autocmd('BufWriteCmd', {
|
||||||
|
group = 'ChaiAutocmds',
|
||||||
|
pattern = { 'chai://*' },
|
||||||
|
callback = function (args)
|
||||||
|
buffers.on_write(args.buf)
|
||||||
|
end
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
function M.setup()
|
||||||
|
buffer_handling_init()
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
-- buffers API, loads buffers from ./buffers/*.lua
|
||||||
|
|
||||||
|
local M = {}
|
||||||
|
|
||||||
|
local buffers = {}
|
||||||
|
|
||||||
|
function M.setup()
|
||||||
|
-- Init stuff
|
||||||
|
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
|
||||||
|
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 type(buffers[buffer].destroy) == 'function' then
|
||||||
|
buffers[buffer].destroy(buffer)
|
||||||
|
end
|
||||||
|
buffers[buffer] = nil
|
||||||
|
end
|
||||||
|
|
||||||
|
function M.on_hide(buffer)
|
||||||
|
if type(buffers[buffer].on_hide) == 'function' then
|
||||||
|
buffers[buffer].on_hide(buffer)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function M.on_enter(buffer)
|
||||||
|
if type(buffers[buffer].on_enter) == 'function' then
|
||||||
|
buffers[buffer].on_enter(buffer)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function M.on_write(buffer)
|
||||||
|
if type(buffers[buffer].on_write) == 'function' then
|
||||||
|
buffers[buffer].on_write(buffer)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.init(vim_buffer)
|
||||||
|
vim.api.nvim_buf_set_lines(vim_buffer, 0, -1, false, { "press q to exit" })
|
||||||
|
|
||||||
|
vim.keymap.set({ "n", "x" }, "q", function()
|
||||||
|
vim.api.nvim_buf_delete(vim_buffer, { force = true })
|
||||||
|
end, { buffer = vim_buffer })
|
||||||
|
|
||||||
|
vim.bo[vim_buffer].modifiable = false
|
||||||
|
vim.bo[vim_buffer].modified = false
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@@ -1,6 +1,8 @@
|
|||||||
local M = {}
|
local M = {}
|
||||||
|
|
||||||
local config = require('chai.config')
|
local config = require('chai.config')
|
||||||
|
local autocmds = require('chai.autocmds')
|
||||||
|
local buffers = require('chai.buffers')
|
||||||
local commands = require('chai.commands')
|
local commands = require('chai.commands')
|
||||||
|
|
||||||
--- initializes chai.nvim plugin
|
--- initializes chai.nvim plugin
|
||||||
@@ -9,6 +11,9 @@ function M.setup(opts)
|
|||||||
-- set up configuration
|
-- set up configuration
|
||||||
config.setup(opts)
|
config.setup(opts)
|
||||||
|
|
||||||
|
buffers.setup()
|
||||||
|
autocmds.setup()
|
||||||
|
|
||||||
-- add commands
|
-- add commands
|
||||||
commands.setup()
|
commands.setup()
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user