mirror of
https://github.com/hexedtech/codemp-nvim.git
synced 2024-11-22 23:44:55 +01:00
fix: compare hash before change
this anticipates a fix that is going to land in 0.8.3
This commit is contained in:
parent
d15336cb4a
commit
1543625bd5
1 changed files with 24 additions and 26 deletions
|
@ -136,6 +136,30 @@ local function attach(name, opts)
|
||||||
while true do
|
while true do
|
||||||
local event = controller:try_recv():await()
|
local event = controller:try_recv():await()
|
||||||
if event == nil then break end
|
if event == nil then break end
|
||||||
|
|
||||||
|
-- error detection
|
||||||
|
if event.hash ~= nil and CODEMP.native.hash(utils.buffer.get_content(buffer)) ~= event.hash then
|
||||||
|
if CODEMP.config.auto_sync then
|
||||||
|
print(" /!\\ out of sync, resynching...")
|
||||||
|
utils.buffer.set_content(buffer, controller:content():await())
|
||||||
|
else
|
||||||
|
vim.ui.select(
|
||||||
|
{ "sync", "detach" },
|
||||||
|
{ prompt = "out of sync! force resync or detach?" },
|
||||||
|
function (choice)
|
||||||
|
if choice == "sync" then
|
||||||
|
utils.buffer.set_content(buffer, controller:content():await())
|
||||||
|
end
|
||||||
|
if choice == "detach" then
|
||||||
|
detach(name)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
break
|
||||||
|
end
|
||||||
|
|
||||||
ticks[buffer] = vim.api.nvim_buf_get_changedtick(buffer)
|
ticks[buffer] = vim.api.nvim_buf_get_changedtick(buffer)
|
||||||
CODEMP.ignore_following_action = true
|
CODEMP.ignore_following_action = true
|
||||||
if CODEMP.config.debug then
|
if CODEMP.config.debug then
|
||||||
|
@ -143,32 +167,6 @@ local function attach(name, opts)
|
||||||
end
|
end
|
||||||
utils.buffer.set_content(buffer, event.change.content, event.change.start_idx, event.change.end_idx)
|
utils.buffer.set_content(buffer, event.change.content, event.change.start_idx, event.change.end_idx)
|
||||||
controller:ack(event.version)
|
controller:ack(event.version)
|
||||||
|
|
||||||
-- error detection
|
|
||||||
if event.hash ~= nil then
|
|
||||||
if CODEMP.native.hash(utils.buffer.get_content(buffer)) ~= event.hash then
|
|
||||||
if CODEMP.config.auto_sync then
|
|
||||||
print(" /!\\ out of sync, resynching...")
|
|
||||||
utils.buffer.set_content(buffer, controller:content():await())
|
|
||||||
else
|
|
||||||
vim.ui.select(
|
|
||||||
{ "sync", "detach" },
|
|
||||||
{ prompt = "out of sync! force resync or detach?" },
|
|
||||||
function (choice)
|
|
||||||
if not choice then return end
|
|
||||||
if choice == "sync" then
|
|
||||||
utils.buffer.set_content(buffer, controller:content():await())
|
|
||||||
end
|
|
||||||
if choice == "detach" then
|
|
||||||
detach(name)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
)
|
|
||||||
end
|
|
||||||
|
|
||||||
break
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
lock = false
|
lock = false
|
||||||
end))
|
end))
|
||||||
|
|
Loading…
Reference in a new issue