Problem: :Preview watch only registered a BufWritePost autocmd without
compiling immediately, required boilerplate to open output files after
first compilation, and was misleadingly named.
Solution: Rename watch → toggle throughout. M.toggle now compiles
immediately on activation. Add an open field to ProviderConfig: true
calls vim.ui.open(), a string[] runs the command with the output path
appended, tracked per-buffer so the file opens only once. All presets
default to { 'xdg-open' }. Health check validates opener binaries.
Guard the async compile callback against invalid buffer ids.
30 lines
634 B
Lua
30 lines
634 B
Lua
local plugin_dir = vim.fn.getcwd()
|
|
vim.opt.runtimepath:prepend(plugin_dir)
|
|
vim.opt.packpath = {}
|
|
|
|
local M = {}
|
|
|
|
function M.create_buffer(lines, ft)
|
|
local bufnr = vim.api.nvim_create_buf(false, true)
|
|
vim.api.nvim_buf_set_lines(bufnr, 0, -1, false, lines or {})
|
|
if ft then
|
|
vim.bo[bufnr].filetype = ft
|
|
end
|
|
return bufnr
|
|
end
|
|
|
|
function M.delete_buffer(bufnr)
|
|
if bufnr and vim.api.nvim_buf_is_valid(bufnr) then
|
|
vim.api.nvim_buf_delete(bufnr, { force = true })
|
|
end
|
|
end
|
|
|
|
function M.reset_config(opts)
|
|
local preview = require('preview')
|
|
preview._test.reset()
|
|
if opts then
|
|
preview.setup(opts)
|
|
end
|
|
end
|
|
|
|
return M
|