preview.nvim/lua/render/diagnostic.lua
Barrett Ruth e1d7abf58e
Some checks are pending
luarocks / quality (push) Waiting to run
luarocks / publish (push) Blocked by required conditions
ci: type checking
2026-03-01 17:28:00 -05:00

40 lines
1 KiB
Lua

local M = {}
local log = require('render.log')
local ns = vim.api.nvim_create_namespace('render')
---@param bufnr integer
function M.clear(bufnr)
vim.diagnostic.set(ns, bufnr, {})
log.dbg('cleared diagnostics for buffer %d', bufnr)
end
---@param bufnr integer
---@param name string
---@param error_parser fun(stderr: string, ctx: render.Context): render.Diagnostic[]
---@param stderr string
---@param ctx render.Context
function M.set(bufnr, name, error_parser, stderr, ctx)
local ok, diagnostics = pcall(error_parser, stderr, ctx)
if not ok then
log.dbg('error_parser for "%s" failed: %s', name, diagnostics)
return
end
if not diagnostics or #diagnostics == 0 then
log.dbg('error_parser for "%s" returned no diagnostics', name)
return
end
for _, d in ipairs(diagnostics) do
d.source = d.source or name
end
vim.diagnostic.set(ns, bufnr, diagnostics)
log.dbg('set %d diagnostics for buffer %d from provider "%s"', #diagnostics, bufnr, name)
end
---@return integer
function M.get_namespace()
return ns
end
return M