fix(diagnostics): coc obey diagnostics.severity (#2072)
`diagnostics.severity` option do not work with coc
This commit is contained in:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user