fix(diagnostics): coc obey diagnostics.severity (#2072)

`diagnostics.severity` option do not work with coc
This commit is contained in:
CsYakamoz
2023-03-25 13:06:21 +08:00
committed by GitHub
parent 31d8e24460
commit 874b7be5d0

View File

@@ -41,6 +41,10 @@ local function from_nvim_lsp()
return buffer_severity return buffer_severity
end end
local function is_severity_in_range(severity, config)
return config.max <= severity and severity <= config.min
end
local function from_coc() local function from_coc()
if vim.g.coc_service_initialized ~= 1 then if vim.g.coc_service_initialized ~= 1 then
return {} return {}
@@ -51,21 +55,18 @@ local function from_coc()
return {} return {}
end end
local buffer_severity = {}
local diagnostics = {} local diagnostics = {}
for _, diagnostic in ipairs(diagnostic_list) do for _, diagnostic in ipairs(diagnostic_list) do
local bufname = diagnostic.file local bufname = diagnostic.file
local severity = severity_levels[diagnostic.severity] local coc_severity = severity_levels[diagnostic.severity]
local severity_list = diagnostics[bufname] or {} local serverity = diagnostics[bufname] or vim.diagnostic.severity.HINT
table.insert(severity_list, severity) diagnostics[bufname] = math.min(coc_severity, serverity)
diagnostics[bufname] = severity_list
end end
for bufname, severity_list in pairs(diagnostics) do local buffer_severity = {}
if not buffer_severity[bufname] then for bufname, severity in pairs(diagnostics) do
local severity = math.min(unpack(severity_list)) if is_severity_in_range(severity, M.severity) then
buffer_severity[bufname] = severity buffer_severity[bufname] = severity
end end
end end