mirror of
https://github.com/hexedtech/codemp.git
synced 2024-11-25 08:34:47 +01:00
fix: callbacks local to buffer, local bufnr + path
This commit is contained in:
parent
8e2f41a1c8
commit
1eec71f3b2
1 changed files with 14 additions and 13 deletions
|
@ -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}
|
||||||
|
|
Loading…
Reference in a new issue