fix: wrap process_changes fn to provide controller

This commit is contained in:
əlemi 2024-11-17 13:42:17 +01:00
parent c1f5cb2d5b
commit 3f098185ca
Signed by: alemi
GPG key ID: A4895B84D311642C

View file

@ -24,7 +24,8 @@ local function detach(name)
require('codemp.window').update()
end
local function process_change(_, buf, tick, start_row, start_col, start_offset, old_end_row, old_end_col, old_end_byte_len, new_end_row, new_end_col, new_byte_len)
local function process_change_wrap(controller)
return function (_, buf, tick, start_row, start_col, start_offset, old_end_row, old_end_col, old_end_byte_len, new_end_row, new_end_col, new_byte_len)
if tick == ticks[buf] then return end
if id_buffer_map[buf] == nil then return true end -- unregister callback handler
if CODEMP.config.debug then print(string.format(
@ -67,6 +68,7 @@ local function process_change(_, buf, tick, start_row, start_col, start_offset,
controller:send({
start_idx = start_offset, end_idx = end_offset, content = change_content
})
end
end
---@class AttachOptions
@ -127,7 +129,7 @@ local function attach(name, opts)
-- hook serverbound callbacks
-- TODO breaks when deleting whole lines at buffer end
vim.api.nvim_buf_attach(buffer, false, { on_bytes = process_change })
vim.api.nvim_buf_attach(buffer, false, { on_bytes = process_change_wrap(controller) })
local lock = false
local async = vim.loop.new_async(vim.schedule_wrap(function ()