fix: callbacks local to buffer, local bufnr + path

This commit is contained in:
əlemi 2023-04-12 00:31:59 +02:00
parent 8e2f41a1c8
commit 1eec71f3b2

View file

@ -14,8 +14,6 @@ local M = {}
M.create = function(path, content) return vim.rpcrequest(vim.g.codemp_jobid, "create", path, content) end M.create = function(path, content) return vim.rpcrequest(vim.g.codemp_jobid, "create", path, content) end
M.insert = function(path, txt, pos) return vim.rpcrequest(vim.g.codemp_jobid, "insert", path, txt, pos) end M.insert = function(path, txt, pos) return vim.rpcrequest(vim.g.codemp_jobid, "insert", path, txt, pos) end
M.delete = function(path, pos, count) return vim.rpcrequest(vim.g.codemp_jobid, "delete", path, pos, count) end M.delete = function(path, pos, count) return vim.rpcrequest(vim.g.codemp_jobid, "delete", path, pos, count) end
M.sync = function(path) return vim.rpcrequest(vim.g.codemp_jobid, "sync", path) end
M.dump = function() return vim.rpcrequest(vim.g.codemp_jobid, "dump") end
M.attach = function(path) return vim.rpcrequest(vim.g.codemp_jobid, "attach", path) end M.attach = function(path) return vim.rpcrequest(vim.g.codemp_jobid, "attach", path) end
local function cursor_offset() local function cursor_offset()
@ -23,24 +21,27 @@ local function cursor_offset()
return vim.fn.line2byte(cursor[1]) + cursor[2] - 1 return vim.fn.line2byte(cursor[1]) + cursor[2] - 1
end end
local function hook_callbacks(path) local function hook_callbacks(path, buffer)
vim.api.nvim_create_autocmd( vim.api.nvim_create_autocmd(
{ "InsertCharPre" }, { "InsertCharPre" },
{ callback = function() M.insert(path, vim.v.char, cursor_offset()) end } {
callback = function(_) M.insert(path, vim.v.char, cursor_offset()) end,
buffer = buffer,
}
) )
vim.keymap.set('i', '<BS>', function() vim.keymap.set('i', '<BS>', function()
local off = cursor_offset() local off = cursor_offset()
pcall(M.delete, path, off, 1) M.delete(path, off, 1)
return '<BS>' return '<BS>'
end, {expr = true}) end, {expr = true, buffer = buffer})
vim.keymap.set('i', '<Del>', function() vim.keymap.set('i', '<Del>', function()
pcall(M.cancel, path, cursor_offset(), 1) M.delete(path, cursor_offset(), 1)
return '<Del>' return '<Del>'
end, {expr = true}) end, {expr = true, buffer = buffer})
vim.keymap.set('i', '<CR>', function() vim.keymap.set('i', '<CR>', function()
pcall(M.insertpath, "\n", cursor_offset()) M.insert(path, "\n", cursor_offset())
return '<CR>' return '<CR>'
end, {expr = true}) end, {expr = true, buffer = buffer})
end end
vim.api.nvim_create_user_command( vim.api.nvim_create_user_command(
@ -50,7 +51,7 @@ vim.api.nvim_create_user_command(
local bufnr = vim.api.nvim_get_current_buf() local bufnr = vim.api.nvim_get_current_buf()
local lines = vim.api.nvim_buf_get_lines(bufnr, 0, -1, false) local lines = vim.api.nvim_buf_get_lines(bufnr, 0, -1, false)
M.create(path, vim.fn.join(lines, "\n")) M.create(path, vim.fn.join(lines, "\n"))
hook_callbacks(path) hook_callbacks(path, bufnr)
M.attach(path) M.attach(path)
end, end,
{nargs=1} {nargs=1}
@ -60,8 +61,8 @@ vim.api.nvim_create_user_command(
'Join', 'Join',
function(args) function(args)
local path = args.fargs[1] local path = args.fargs[1]
M.sync(path) local bufnr = vim.api.nvim_get_current_buf()
hook_callbacks(path) hook_callbacks(path, bufnr)
M.attach(path) M.attach(path)
end, end,
{nargs=1} {nargs=1}