71 lines
1.8 KiB
Lua
71 lines
1.8 KiB
Lua
local client = require"MarkdownPreviewer.app"
|
|
local throttle = require"MarkdownPreviewer.throttle"
|
|
|
|
local nvim_buf_get_lines = vim.api.nvim_buf_get_lines
|
|
local nvim_create_augroup = vim.api.nvim_create_augroup
|
|
local nvim_create_autocmd = vim.api.nvim_create_autocmd
|
|
local nvim_del_augroup_by_id = vim.api.nvim_del_augroup_by_id
|
|
local concat = table.concat
|
|
|
|
local function get_buf_content(bufnr)
|
|
local data = concat(nvim_buf_get_lines(bufnr, 0, -1, false), '\n'):gsub('%s*$', '')
|
|
return data
|
|
end
|
|
|
|
module = {}
|
|
|
|
local server_connection
|
|
|
|
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:show(get_buf_content(bufnr))
|
|
server_connection:scroll(vim.fn.line('.'))
|
|
|
|
nvim_create_autocmd("BufWritePost", {
|
|
group = augroup,
|
|
buffer = bufnr,
|
|
callback = function()
|
|
server_connection:show(get_buf_content(bufnr))
|
|
end,
|
|
})
|
|
|
|
nvim_create_autocmd({"CursorMoved", "CursorMovedI"}, {
|
|
group = augroup,
|
|
buffer = bufnr,
|
|
callback = function()
|
|
server_connection:scroll({vim.fn.line('.'), vim.fn.line('$')})
|
|
end,
|
|
})
|
|
|
|
local function show()
|
|
server_connection:show(get_buf_content(bufnr))
|
|
end
|
|
|
|
nvim_create_autocmd({"TextChanged", "TextChangedI", "TextChangedP" }, {
|
|
group = augroup,
|
|
buffer = bufnr,
|
|
callback = function()
|
|
throttle.run_fn(show)
|
|
end,
|
|
})
|
|
|
|
end
|
|
|
|
function module.close()
|
|
if server_connection then
|
|
server_connection:stop()
|
|
end
|
|
end
|
|
|
|
return module
|