Compare commits
3 Commits
1ddcfe3592
...
foundation
| Author | SHA1 | Date | |
|---|---|---|---|
| 79572a45dd | |||
| 15467ba8f0 | |||
| af6a952cd8 |
@@ -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,72 @@
|
||||
-- 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
|
||||
@@ -0,0 +1,34 @@
|
||||
local M = {}
|
||||
|
||||
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 })
|
||||
|
||||
vim.bo[vim_buffer].modifiable = false
|
||||
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
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
local M = {}
|
||||
|
||||
M.defaults = {
|
||||
servers = {},
|
||||
providers = {},
|
||||
}
|
||||
|
||||
M.options = {}
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
local M = {}
|
||||
|
||||
local config = require('chai.config')
|
||||
local autocmds = require('chai.autocmds')
|
||||
local buffers = require('chai.buffers')
|
||||
local commands = require('chai.commands')
|
||||
|
||||
--- initializes chai.nvim plugin
|
||||
@@ -9,6 +11,9 @@ function M.setup(opts)
|
||||
-- set up configuration
|
||||
config.setup(opts)
|
||||
|
||||
buffers.setup()
|
||||
autocmds.setup()
|
||||
|
||||
-- add commands
|
||||
commands.setup()
|
||||
end
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
local M = {}
|
||||
|
||||
local config = require('chai.config')
|
||||
|
||||
local provider_instances = {}
|
||||
|
||||
-- lazy loads providers of course
|
||||
function M.get_provider(name)
|
||||
if provider_instances[name] ~= nil then
|
||||
return provider_instances[name]
|
||||
end
|
||||
|
||||
if config.options.providers[name] == nil then
|
||||
error('unknown provider')
|
||||
end
|
||||
|
||||
local provider_config = config.options.providers[name]
|
||||
|
||||
local provider = require('chai.providers.' .. provider_config.type)
|
||||
|
||||
local provider_instance = provider.init(provider_config)
|
||||
provider_instances[name] = provider_instance
|
||||
return provider_instance
|
||||
end
|
||||
|
||||
return M
|
||||
@@ -0,0 +1,12 @@
|
||||
local M
|
||||
|
||||
local GiteaProvider = {}
|
||||
|
||||
function M.init(config)
|
||||
local provider = vim.deepcopy(GiteaProvider)
|
||||
provider.config = config
|
||||
|
||||
return provider
|
||||
end
|
||||
|
||||
return M
|
||||
@@ -0,0 +1,12 @@
|
||||
local M
|
||||
|
||||
local GithubProvider = {}
|
||||
|
||||
function M.init(config)
|
||||
local provider = vim.deepcopy(GithubProvider)
|
||||
provider.config = config
|
||||
|
||||
return provider
|
||||
end
|
||||
|
||||
return M
|
||||
Reference in New Issue
Block a user