add buffer change event callback

This commit is contained in:
Folkert Kevelam 2025-09-12 17:21:05 +02:00
parent c495c3384c
commit ed3f218dfb

View File

@ -20,23 +20,12 @@ function module.setup()
server_connection = client.setup()
end
function module.open()
augroup = nvim_create_augroup("MarkdownPreviewActiveAugroup", {clear = true})
server_connection:init(function()
augroup = nvim_del_augroup_by_id(augroup)
end)
local bufnr = vim.api.nvim_get_current_buf()
server_connection:base(vim.fn.fnamemodify(vim.uri_to_fname(vim.uri_from_bufnr(bufnr)), 'p:h'))
server_connection:show(get_buf_content(bufnr))
server_connection:scroll(vim.fn.line('.'))
local function SetAutoCmd(augroup, server, bufnr)
nvim_create_autocmd("BufWritePost", {
group = augroup,
buffer = bufnr,
callback = function()
server_connection:show(get_buf_content(bufnr))
server:show(get_buf_content(bufnr))
end,
})
@ -44,12 +33,12 @@ function module.open()
group = augroup,
buffer = bufnr,
callback = function()
server_connection:scroll({vim.fn.line('.'), vim.fn.line('$')})
server:scroll({vim.fn.line('.'), vim.fn.line('$')})
end,
})
local function show()
server_connection:show(get_buf_content(bufnr))
server:show(get_buf_content(bufnr))
end
nvim_create_autocmd({"TextChanged", "TextChangedI", "TextChangedP" }, {
@ -59,7 +48,52 @@ function module.open()
throttle.run_fn(show)
end,
})
end
local function FirstSend(server, bufnr)
print("Sending data to server from buffer " .. bufnr)
server:base(vim.fn.fnamemodify(vim.uri_to_fname(vim.uri_from_bufnr(bufnr)), 'p:h'))
server:show(get_buf_content(bufnr))
server:scroll(vim.fn.line('.'))
end
function module.open()
augroup = nvim_create_augroup("MarkdownPreviewActiveAugroup", {clear = true})
chgbuffergroup = nvim_create_augroup("MarkdownChangeBufferActiveAugroup", {clear = true})
server_connection:init(function()
if augroup then
augroup = nvim_del_augroup_by_id(augroup)
end
if chgbuffergroup then
chgbuffergroup = nvim_del_augroup_by_id(chgbuffergroup)
end
end)
local bufnr = vim.api.nvim_get_current_buf()
FirstSend(server_connection, bufnr)
SetAutoCmd(augroup, server_connection, bufnr)
nvim_create_autocmd("BufEnter", {
group = chgbuffergroup,
callback = function()
local new_buf_nr = vim.api.nvim_get_current_buf()
local ft = vim.api.nvim_buf_get_option(new_buf_nr, "filetype")
if ft == "markdown" then
print("filetype new buffer: " .. ft)
FirstSend(server_connection, new_buf_nr)
if augroup then
augroup = nvim_del_augroup_by_id(augroup)
end
augroup = nvim_create_augroup("MarkdownPreviewActiveAugroup", {clear = True})
SetAutoCmd(augroup, server_connection, new_buf_nr)
else
print("Not a markdown buffer")
augroup = nvim_del_augroup_by_id(augroup)
end
end,
})
end
function module.close()